wireless: mark wireless_drivers/wireless_devices as extern
[project/netifd.git] / wireless.c
index dcadfad..34dd328 100644 (file)
@@ -559,6 +559,14 @@ wireless_interface_init_config(struct wireless_interface *vif)
 
        if ((cur = tb[VIF_ATTR_NETWORK]))
                vif->network = cur;
+
+       cur = tb[VIF_ATTR_ISOLATE];
+       if (cur)
+               vif->isolate = blobmsg_get_bool(cur);
+
+       cur = tb[VIF_ATTR_MODE];
+       if (cur)
+               vif->ap_mode = !strcmp(blobmsg_get_string(cur), "ap");
 }
 
 static void
@@ -583,6 +591,7 @@ vif_update(struct vlist_tree *tree, struct vlist_node *node_new,
                }
 
                D(WIRELESS, "Update wireless interface %s on device %s\n", vif_new->name, wdev->name);
+               wireless_interface_handle_link(vif_old, false);
                free(vif_old->config);
                vif_old->config = blob_memdup(vif_new->config);
                vif_old->isolate = vif_new->isolate;
@@ -715,14 +724,6 @@ void wireless_interface_create(struct wireless_device *wdev, struct blob_attr *d
        vif->section = section;
        vif->isolate = false;
 
-       cur = tb[VIF_ATTR_ISOLATE];
-       if (cur && blobmsg_get_bool(cur))
-               vif->isolate = blobmsg_get_bool(cur);
-
-       cur = tb[VIF_ATTR_MODE];
-       if (cur && !strcmp(blobmsg_get_string(cur), "ap"))
-               vif->ap_mode = true;
-
        vlist_add(&wdev->interfaces, &vif->node, vif->name);
 }