fix handling bridge interfaces with no initial device
[project/netifd.git] / bridge.c
index 1f1a220..54526f7 100644 (file)
--- a/bridge.c
+++ b/bridge.c
@@ -224,13 +224,10 @@ bridge_create_member(struct bridge_state *bst, struct device *dev, bool hotplug)
        bm = calloc(1, sizeof(*bm));
        bm->bst = bst;
        bm->dev.cb = bridge_member_cb;
-       device_add_user(&bm->dev, dev);
        bm->dev.hotplug = hotplug;
-
        list_add_tail(&bm->list, &bst->members);
 
-       if (bst->dev.active)
-               bridge_enable_member(bm);
+       device_add_user(&bm->dev, dev);
 
        return bm;
 }
@@ -333,6 +330,10 @@ bridge_config_init(struct device *dev)
        int rem;
 
        bst = container_of(dev, struct bridge_state, dev);
+
+       if (!bst->ifnames)
+               return;
+
        blobmsg_for_each_attr(cur, bst->ifnames, rem) {
                bridge_add_member(bst, blobmsg_data(cur));
        }
@@ -387,9 +388,6 @@ bridge_create(const char *name, struct blob_attr *attr)
        blobmsg_parse(bridge_attrs, __BRIDGE_ATTR_MAX, tb_br,
                blob_data(attr), blob_len(attr));
 
-       if (!tb_br[BRIDGE_ATTR_IFNAME])
-               return NULL;
-
        bst = calloc(1, sizeof(*bst));
        if (!bst)
                return NULL;