Skip to content

Commit

Permalink
sit,ipip,gre: generate tunnel configuration on tunnel change calls
Browse files Browse the repository at this point in the history
bnc#901402
  • Loading branch information
kmroz committed Oct 15, 2014
1 parent fd82525 commit e743ae4
Show file tree
Hide file tree
Showing 3 changed files with 30 additions and 3 deletions.
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

0 comments on commit e743ae4

Please sign in to comment.