- list_add(&addr->list, &iface->address);
- return system_add_address(iface->l3_iface->dev, addr);
+ if (node_old) {
+ addr = container_of(node_old, struct device_addr, node);
+ if (!(addr->flags & DEVADDR_EXTERNAL))
+ system_del_address(dev, addr);
+ free(addr);
+ }
+
+ if (node_new) {
+ addr = container_of(node_new, struct device_addr, node);
+ if (!(addr->flags & DEVADDR_EXTERNAL))
+ system_add_address(dev, addr);
+ }