fix handling bridge interfaces with no initial device
authorFelix Fietkau <nbd@openwrt.org>
Sun, 23 Oct 2011 17:20:35 +0000 (19:20 +0200)
committerFelix Fietkau <nbd@openwrt.org>
Sun, 23 Oct 2011 17:20:35 +0000 (19:20 +0200)
bridge.c

index 70ea0f0..54526f7 100644 (file)
--- a/bridge.c
+++ b/bridge.c
@@ -330,6 +330,10 @@ bridge_config_init(struct device *dev)
        int rem;
 
        bst = container_of(dev, struct bridge_state, 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));
        }
        blobmsg_for_each_attr(cur, bst->ifnames, rem) {
                bridge_add_member(bst, blobmsg_data(cur));
        }
@@ -384,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));
 
        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;
        bst = calloc(1, sizeof(*bst));
        if (!bst)
                return NULL;