summaryrefslogtreecommitdiffhomepage
path: root/interface-ip.c
diff options
context:
space:
mode:
Diffstat (limited to 'interface-ip.c')
-rw-r--r--interface-ip.c10
1 files changed, 10 insertions, 0 deletions
diff --git a/interface-ip.c b/interface-ip.c
index 3771b5d..a6a7dca 100644
--- a/interface-ip.c
+++ b/interface-ip.c
@@ -457,6 +457,9 @@ interface_update_proto_addr(struct vlist_tree *tree,
iface = ip->iface;
dev = iface->l3_dev.dev;
+ if (!node_new || !node_old)
+ iface->updated |= IUF_ADDRESS;
+
if (node_new) {
a_new = container_of(node_new, struct device_addr, node);
@@ -559,6 +562,9 @@ interface_update_proto_route(struct vlist_tree *tree,
iface = ip->iface;
dev = iface->l3_dev.dev;
+ if (!node_new || !node_old)
+ iface->updated |= IUF_ROUTE;
+
route_old = container_of(node_old, struct device_route, node);
route_new = container_of(node_new, struct device_route, node);
@@ -829,6 +835,10 @@ interface_update_prefix(struct vlist_tree *tree,
prefix_old = container_of(node_old, struct device_prefix, node);
prefix_new = container_of(node_new, struct device_prefix, node);
+ struct interface_ip_settings *ip = container_of(tree, struct interface_ip_settings, prefix);
+ if (tree && (!node_new || !node_old))
+ ip->iface->updated |= IUF_PREFIX;
+
struct device_route route;
memset(&route, 0, sizeof(route));
route.flags = DEVADDR_INET6;