Skip to content

Commit

Permalink
Merge branch 'close' into testing
Browse files Browse the repository at this point in the history
  • Loading branch information
wipawel committed Nov 18, 2014
2 parents ff5af87 + cfe1cac commit 1c1c15c
Show file tree
Hide file tree
Showing 10 changed files with 72 additions and 11 deletions.
2 changes: 1 addition & 1 deletion client/compat.c
Expand Up @@ -835,7 +835,7 @@ __ni_compat_generate_tuntap(xml_node_t *ifnode, const ni_compat_netdev_t *compat
if (tuntap->owner != -1U)
xml_node_new_element_uint("owner", child, tuntap->owner);
if (tuntap->group != -1U)
xml_node_new_element_uint("owner", child, tuntap->group);
xml_node_new_element_uint("group", child, tuntap->group);

return TRUE;
}
Expand Down
3 changes: 2 additions & 1 deletion nanny/device.c
Expand Up @@ -93,7 +93,8 @@ ni_managed_device_free(ni_managed_device_t *mdev)
ni_debug_nanny("%s(%s): obj=%p", __func__,
mdev->worker? mdev->worker->name : "anon",
mdev->object);
ni_assert(mdev->object == NULL);

ni_objectmodel_unregister_managed_device(mdev);

if (mdev->worker) {
ni_ifworker_release(mdev->worker);
Expand Down
12 changes: 11 additions & 1 deletion nanny/main.c
Expand Up @@ -259,13 +259,14 @@ static void
babysit(void)
{
ni_nanny_t *mgr;
ni_dbus_client_t *client;

mgr = ni_nanny_new();

if (ni_init_ex("nanny", ni_nanny_config_callback, mgr) < 0)
ni_fatal("error in configuration file");

ni_nanny_start(mgr);
client = ni_nanny_start(mgr);

if (!opt_foreground) {
ni_daemon_close_t close_flags = NI_DAEMON_CLOSE_STD;
Expand Down Expand Up @@ -302,6 +303,15 @@ babysit(void)
ni_fatal("ni_socket_wait failed");
}

ni_nanny_unregister_all(mgr);
ni_dbus_client_free(client);
ni_dbus_server_free(mgr->server);
ni_server_deactivate_interface_events();

ni_dbus_objects_garbage_collect();

ni_socket_deactivate_all();

exit(0);
}

Expand Down
18 changes: 17 additions & 1 deletion nanny/nanny.c
Expand Up @@ -84,7 +84,7 @@ ni_nanny_new(void)
return mgr;
}

void
ni_dbus_client_t *
ni_nanny_start(ni_nanny_t *mgr)
{
ni_nanny_devmatch_t *match;
Expand Down Expand Up @@ -131,6 +131,8 @@ ni_nanny_start(ni_nanny_t *mgr)
mgr);
#endif
}

return client;
}

void
Expand Down Expand Up @@ -581,6 +583,20 @@ ni_nanny_unregister_device(ni_nanny_t *mgr, ni_ifworker_t *w)
ni_fsm_destroy_worker(mgr->fsm, w);
}

void
ni_nanny_unregister_all(ni_nanny_t *mgr)
{
unsigned int i;

if (mgr) {
for (i = 0; i < mgr->fsm->workers.count; i++) {
ni_ifworker_t *w = mgr->fsm->workers.data[i];

ni_nanny_unregister_device(mgr, w);
}
}
}

/*
* Handle prompting
*/
Expand Down
3 changes: 2 additions & 1 deletion nanny/nanny.h
Expand Up @@ -113,7 +113,7 @@ extern ni_dbus_service_t ni_objectmodel_managed_policy_service;
extern ni_dbus_service_t ni_objectmodel_nanny_service;

extern ni_nanny_t * ni_nanny_new(void);
extern void ni_nanny_start(ni_nanny_t *);
extern ni_dbus_client_t * ni_nanny_start(ni_nanny_t *);
extern void ni_nanny_free(ni_nanny_t *);
extern const char * ni_nanny_statedir(void);
extern void ni_nanny_schedule_recheck(ni_ifworker_array_t *, ni_ifworker_t *);
Expand All @@ -122,6 +122,7 @@ extern unsigned int ni_nanny_recheck_do(ni_nanny_t *mgr);
extern unsigned int ni_nanny_down_do(ni_nanny_t *mgr);
extern void ni_nanny_register_device(ni_nanny_t *, ni_ifworker_t *);
extern void ni_nanny_unregister_device(ni_nanny_t *, ni_ifworker_t *);
extern void ni_nanny_unregister_all(ni_nanny_t *);
extern ni_managed_device_t * ni_nanny_get_device(ni_nanny_t *, ni_ifworker_t *);
extern void ni_nanny_remove_device(ni_nanny_t *, ni_managed_device_t *);
extern ni_managed_policy_t * ni_nanny_get_policy(ni_nanny_t *, const ni_fsm_policy_t *);
Expand Down
6 changes: 6 additions & 0 deletions server/main.c
Expand Up @@ -289,6 +289,12 @@ run_interface_server(void)
if (opt_recover_state)
ni_objectmodel_save_state(opt_state_file);

ni_server_deactivate_interface_events();

ni_dbus_objects_garbage_collect();

ni_socket_deactivate_all();

exit(0);
}

Expand Down
11 changes: 10 additions & 1 deletion src/dbus-objects/gre.c
Expand Up @@ -163,16 +163,25 @@ ni_objectmodel_gre_change(ni_dbus_object_t *object, const ni_dbus_method_t *meth
{
ni_netconfig_t *nc = ni_global_state_handle(0);
ni_netdev_t *dev, *cfg;
ni_gre_t *gre;
const char *err;

/* we've already checked that argv matches our signature */
ni_assert(argc == 1);

if (!(dev = ni_objectmodel_unwrap_netif(object, error)) ||
!(cfg = __ni_objectmodel_gre_device_arg(&argv[0]))) {
!(cfg = __ni_objectmodel_gre_device_arg(&argv[0])) ||
!(ni_netdev_get_gre(dev))) {
ni_dbus_error_invalid_args(error, object->path, method->name);
return FALSE;
}

gre = ni_netdev_get_gre(cfg);
if ((err = ni_gre_validate(gre))) {
dbus_set_error(error, DBUS_ERROR_INVALID_ARGS, "%s", err);
return FALSE;
}

cfg->link.ifindex = dev->link.ifindex;
if (ni_string_empty(cfg->name))
ni_string_dup(&cfg->name, dev->name);
Expand Down
11 changes: 10 additions & 1 deletion src/dbus-objects/ipip.c
Expand Up @@ -163,16 +163,25 @@ ni_objectmodel_ipip_change(ni_dbus_object_t *object, const ni_dbus_method_t *met
{
ni_netconfig_t *nc = ni_global_state_handle(0);
ni_netdev_t *dev, *cfg;
ni_ipip_t *ipip;
const char *err;

/* we've already checked that argv matches our signature */
ni_assert(argc == 1);

if (!(dev = ni_objectmodel_unwrap_netif(object, error)) ||
!(cfg = __ni_objectmodel_ipip_device_arg(&argv[0]))) {
!(cfg = __ni_objectmodel_ipip_device_arg(&argv[0])) ||
!(ni_netdev_get_ipip(dev))) {
ni_dbus_error_invalid_args(error, object->path, method->name);
return FALSE;
}

ipip = ni_netdev_get_ipip(cfg);
if ((err = ni_ipip_validate(ipip))) {
dbus_set_error(error, DBUS_ERROR_INVALID_ARGS, "%s", err);
return FALSE;
}

cfg->link.ifindex = dev->link.ifindex;
if (ni_string_empty(cfg->name))
ni_string_dup(&cfg->name, dev->name);
Expand Down
11 changes: 10 additions & 1 deletion src/dbus-objects/sit.c
Expand Up @@ -163,16 +163,25 @@ ni_objectmodel_sit_change(ni_dbus_object_t *object, const ni_dbus_method_t *meth
{
ni_netconfig_t *nc = ni_global_state_handle(0);
ni_netdev_t *dev, *cfg;
ni_sit_t *sit;
const char *err;

/* we've already checked that argv matches our signature */
ni_assert(argc == 1);

if (!(dev = ni_objectmodel_unwrap_netif(object, error)) ||
!(cfg = __ni_objectmodel_sit_device_arg(&argv[0]))) {
!(cfg = __ni_objectmodel_sit_device_arg(&argv[0])) ||
!(ni_netdev_get_sit(dev))) {
ni_dbus_error_invalid_args(error, object->path, method->name);
return FALSE;
}

sit = ni_netdev_get_sit(cfg);
if ((err = ni_sit_validate(sit))) {
dbus_set_error(error, DBUS_ERROR_INVALID_ARGS, "%s", err);
return FALSE;
}

cfg->link.ifindex = dev->link.ifindex;
if (ni_string_empty(cfg->name))
ni_string_dup(&cfg->name, dev->name);
Expand Down
6 changes: 3 additions & 3 deletions src/ifconfig.c
Expand Up @@ -2070,7 +2070,7 @@ __ni_rtnl_link_put_sit(struct nl_msg *msg, const ni_netdev_t *cfg)
return 0;

nla_put_failure:
return -1;
return -1;
}

static int
Expand All @@ -2090,7 +2090,7 @@ __ni_rtnl_link_put_ipip(struct nl_msg *msg, const ni_netdev_t *cfg)
return 0;

nla_put_failure:
return -1;
return -1;
}

static int
Expand All @@ -2110,7 +2110,7 @@ __ni_rtnl_link_put_gre(struct nl_msg *msg, const ni_netdev_t *cfg)
return 0;

nla_put_failure:
return -1;
return -1;
}

static int
Expand Down

0 comments on commit 1c1c15c

Please sign in to comment.