- list_del(&route->list);
- system_del_route(iface->l3_iface->dev, route);
+ struct interface *iface;
+ struct device *dev;
+ struct device_route *route;
+
+ iface = container_of(tree, struct interface, proto_route);
+ dev = iface->l3_dev->dev;
+
+ if (node_old) {
+ route = container_of(node_old, struct device_route, node);
+ if (!(route->flags & DEVADDR_EXTERNAL))
+ system_del_route(dev, route);
+ free(route);
+ }
+
+ if (node_new) {
+ route = container_of(node_new, struct device_route, node);
+ if (!(route->flags & DEVADDR_EXTERNAL))
+ system_add_route(dev, route);
+ }