interface: clear iface->available before changing main_dev
[project/netifd.git] / interface.c
index f474246..95e1ee8 100644 (file)
@@ -780,6 +780,7 @@ interface_set_main_dev(struct interface *iface, struct device *dev)
        if (iface->main_dev.dev == dev)
                return;
 
+       interface_set_available(iface, false);
        device_add_user(&iface->main_dev, dev);
        if (!dev) {
                interface_set_link_state(iface, false);
@@ -807,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;
 }