+wireless_device_free(struct wireless_device *wdev)
+{
+ vlist_flush_all(&wdev->interfaces);
+ avl_delete(&wireless_devices.avl, &wdev->node.avl);
+ free(wdev->config);
+ free(wdev);
+}
+
+static void
+wdev_handle_config_change(struct wireless_device *wdev)
+{
+ enum interface_config_state state = wdev->config_state;
+
+ switch(state) {
+ case IFC_NORMAL:
+ case IFC_RELOAD:
+ wdev->config_state = IFC_NORMAL;
+ if (wdev->autostart)
+ __wireless_device_set_up(wdev);
+ break;
+ case IFC_REMOVE:
+ wireless_device_free(wdev);
+ break;
+ }
+}
+
+static void