X-Git-Url: https://git.archive.openwrt.org/?p=project%2Fnetifd.git;a=blobdiff_plain;f=interface-ip.c;h=2e2e9d8c5316111b85d54040e61e8cb268072219;hp=e651d39906b1ee5cc18e3eaf982688391ab31c8d;hb=58d2488ffe9553b908d3e10826376adeeb55d67b;hpb=3bd56db589071948eebd30b00cda7ef1fb38a61b diff --git a/interface-ip.c b/interface-ip.c index e651d39..2e2e9d8 100644 --- a/interface-ip.c +++ b/interface-ip.c @@ -24,13 +24,15 @@ interface_update_proto_addr(struct vlist_tree *tree, if (node_old) { addr = container_of(node_old, struct device_addr, node); - system_del_address(dev, addr); + if (!(addr->flags & DEVADDR_EXTERNAL)) + system_del_address(dev, addr); free(addr); } if (node_new) { addr = container_of(node_new, struct device_addr, node); - system_add_address(dev, addr); + if (!(addr->flags & DEVADDR_EXTERNAL)) + system_add_address(dev, addr); } } @@ -48,13 +50,15 @@ interface_update_proto_route(struct vlist_tree *tree, if (node_old) { route = container_of(node_old, struct device_route, node); - system_del_route(dev, route); + if (!(route->flags & DEVADDR_EXTERNAL)) + system_del_route(dev, route); free(route); } if (node_new) { route = container_of(node_new, struct device_route, node); - system_add_route(dev, route); + if (!(route->flags & DEVADDR_EXTERNAL)) + system_add_route(dev, route); } }