X-Git-Url: http://git.archive.openwrt.org/?p=project%2Fnetifd.git;a=blobdiff_plain;f=interface.c;h=95e1ee8f3d7316b3325f866878dd0183d8af47c1;hp=684fd22d03bb422b7565ec1553c32e1884fccf5d;hb=023db1ca8f352a646700f2d60c397fb89492f4c8;hpb=f06565ce63414c9a1ce558a5ea35f2b6a4ed1605 diff --git a/interface.c b/interface.c index 684fd22..95e1ee8 100644 --- a/interface.c +++ b/interface.c @@ -775,15 +775,12 @@ interface_set_l3_dev(struct interface *iface, struct device *dev) void interface_set_main_dev(struct interface *iface, struct device *dev) { - bool set_l3 = (!dev || iface->main_dev.dev == iface->l3_dev.dev); bool claimed = iface->l3_dev.claimed; if (iface->main_dev.dev == dev) return; - if (set_l3) - interface_set_l3_dev(iface, dev); - + interface_set_available(iface, false); device_add_user(&iface->main_dev, dev); if (!dev) { interface_set_link_state(iface, false); @@ -811,7 +808,7 @@ interface_remove_link(struct interface *iface, struct device *dev) if (dev != iface->main_dev.dev) return UBUS_STATUS_INVALID_ARGUMENT; - device_remove_user(&iface->main_dev); + interface_set_main_dev(iface, NULL); return 0; }