-bridge_create_member(struct bridge_state *bst, struct device *dev, bool hotplug)
+bridge_create_member(struct bridge_state *bst, const char *name,
+ struct device *dev, bool hotplug)
bm->dev.dev = dev;
vlist_add(&bst->members, &bm->node, bm->name);
// Need to look up the bridge member again as the above
// created pointer will be freed in case the bridge member
// already existed
bm->dev.dev = dev;
vlist_add(&bst->members, &bm->node, bm->name);
// Need to look up the bridge member again as the above
// created pointer will be freed in case the bridge member
// already existed
- bm = vlist_find(&bst->members, dev->ifname, bm, node);
+ bm = vlist_find(&bst->members, name, bm, node);
- bridge_create_member(bst, member, true);
+ bridge_create_member(bst, member->ifname, member, true);
system_if_dump_info(dev, b);
list = blobmsg_open_array(b, "bridge-members");
system_if_dump_info(dev, b);
list = blobmsg_open_array(b, "bridge-members");
- vlist_for_each_element(&bst->members, bm, node)
+ vlist_for_each_element(&bst->members, bm, node) {
+ if (bm->dev.dev->hidden)
+ continue;
+
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));
bst->ifnames = tb_br[BRIDGE_ATTR_IFNAME];
device_init_settings(dev, tb_dev);
bridge_apply_settings(bst, tb_br);
bst->ifnames = tb_br[BRIDGE_ATTR_IFNAME];
device_init_settings(dev, tb_dev);
bridge_apply_settings(bst, tb_br);