make vlan devices virtual to avoid avl tree issues with changing ifnames when bound...
[project/netifd.git] / device.c
index a2d5637..017fe03 100644 (file)
--- a/device.c
+++ b/device.c
@@ -240,7 +240,7 @@ static void __init dev_init(void)
        avl_init(&aliases, avl_strcmp, false, NULL);
 }
 
-static void device_broadcast_event(struct device *dev, enum device_event ev)
+void device_broadcast_event(struct device *dev, enum device_event ev)
 {
        struct device_user *dep, *tmp;
 
@@ -346,6 +346,9 @@ void device_init_virtual(struct device *dev, const struct device_type *type, con
        D(DEVICE, "Initialize device '%s'\n", dev->ifname);
        INIT_LIST_HEAD(&dev->users);
        dev->type = type;
+
+       if (!dev->set_state)
+               dev->set_state = set_device_state;
 }
 
 int device_init(struct device *dev, const struct device_type *type, const char *ifname)
@@ -354,9 +357,6 @@ int device_init(struct device *dev, const struct device_type *type, const char *
 
        device_init_virtual(dev, type, ifname);
 
-       if (!dev->set_state)
-               dev->set_state = set_device_state;
-
        dev->avl.key = dev->ifname;
 
        ret = avl_insert(&devices, &dev->avl);