interface: fix indentation
[project/netifd.git] / interface.c
index f474246..1f83be3 100644 (file)
@@ -319,7 +319,7 @@ interface_cb(struct device_user *dep, enum device_event ev)
                new_state = true;
        case DEV_EVENT_REMOVE:
                interface_set_available(iface, new_state);
-               if (!new_state && dep->dev->external)
+               if (!new_state && dep->dev && dep->dev->external)
                        interface_set_main_dev(iface, NULL);
                break;
        case DEV_EVENT_UP:
@@ -329,7 +329,7 @@ interface_cb(struct device_user *dep, enum device_event ev)
                break;
        case DEV_EVENT_LINK_UP:
                new_state = true;
-        case DEV_EVENT_LINK_DOWN:
+       case DEV_EVENT_LINK_DOWN:
                interface_set_link_state(iface, new_state);
                break;
        case DEV_EVENT_TOPO_CHANGE:
@@ -766,8 +766,10 @@ interface_set_l3_dev(struct interface *iface, struct device *dev)
        device_add_user(&iface->l3_dev, dev);
 
        if (dev) {
-               if (claimed)
-                       device_claim(&iface->l3_dev);
+               if (claimed) {
+                       if (device_claim(&iface->l3_dev) < 0)
+                               return;
+               }
                interface_ip_set_enabled(&iface->config_ip, enabled);
        }
 }
@@ -780,14 +782,17 @@ 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);
                return;
        }
 
-       if (claimed)
-               device_claim(&iface->l3_dev);
+       if (claimed) {
+               if (device_claim(&iface->l3_dev) < 0)
+                       return;
+       }
 
        if (!iface->l3_dev.dev)
                interface_set_l3_dev(iface, dev);
@@ -807,7 +812,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;
 }
 
@@ -1019,7 +1024,8 @@ interface_change_config(struct interface *if_old, struct interface *if_new)
        }
 
        interface_write_resolv_conf();
-       interface_check_state(if_old);
+       if (if_old->main_dev.dev)
+               interface_check_state(if_old);
 
 out:
        if_new->config = NULL;