interface: properly sync parent-child state when inheriting
This commit is contained in:
parent
df2519c1ec
commit
8615cf62ef
1 changed files with 10 additions and 1 deletions
|
@ -224,6 +224,10 @@ lif_interface_collection_inherit(struct lif_interface *interface, struct lif_dic
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
lif_dict_add(&interface->vars, "inherit", strdup(ifname));
|
lif_dict_add(&interface->vars, "inherit", strdup(ifname));
|
||||||
|
interface->is_static = parent->is_static;
|
||||||
|
interface->is_dhcp = parent->is_dhcp;
|
||||||
|
interface->is_bond = parent->is_bond;
|
||||||
|
interface->is_bridge = parent->is_bridge;
|
||||||
|
|
||||||
/* copy the variables */
|
/* copy the variables */
|
||||||
struct lif_node *iter;
|
struct lif_node *iter;
|
||||||
|
@ -241,7 +245,12 @@ lif_interface_collection_inherit(struct lif_interface *interface, struct lif_dic
|
||||||
lif_dict_add(&interface->vars, entry->key, addr);
|
lif_dict_add(&interface->vars, entry->key, addr);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
lif_dict_add(&interface->vars, entry->key, strdup(entry->data));
|
{
|
||||||
|
char *value = strdup(entry->data);
|
||||||
|
|
||||||
|
if (lif_dict_add_once(&interface->vars, entry->key, value, (lif_dict_cmp_t) strcmp) == NULL)
|
||||||
|
free(value);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
|
|
Loading…
Reference in a new issue