interface: fix removing main_dev on config reload changes if ifname is reset to NULL
[project/netifd.git] / interface.c
index 3a8fd34..a2c3f44 100644 (file)
@@ -328,9 +328,14 @@ interface_claim_device(struct interface *iface)
 static void
 interface_cleanup_state(struct interface *iface)
 {
 static void
 interface_cleanup_state(struct interface *iface)
 {
+       interface_set_available(iface, false);
+
        interface_flush_state(iface);
        interface_clear_errors(iface);
        interface_set_proto_state(iface, NULL);
        interface_flush_state(iface);
        interface_clear_errors(iface);
        interface_set_proto_state(iface, NULL);
+
+       if (iface->main_dev.dev)
+               interface_set_main_dev(iface, NULL);
 }
 
 static void
 }
 
 static void
@@ -345,9 +350,6 @@ interface_cleanup(struct interface *iface)
                interface_remove_user(dep);
 
        interface_ip_flush(&iface->config_ip);
                interface_remove_user(dep);
 
        interface_ip_flush(&iface->config_ip);
-       if (iface->main_dev.dev)
-               interface_set_main_dev(iface, NULL);
-
        interface_cleanup_state(iface);
 }
 
        interface_cleanup_state(iface);
 }