X-Git-Url: https://git.archive.openwrt.org/?p=project%2Fnetifd.git;a=blobdiff_plain;f=bridge.c;h=4ef0d7e20940587e324291c6a1df45ef926d2298;hp=05f2ad69133b8f73d38ef355e165fb6aadfe712c;hb=501a088692cdf95feb237e030698f365c4465fdc;hpb=5a2ccd7b750162b0d6ee13609f7e1ed5ea827d9d diff --git a/bridge.c b/bridge.c index 05f2ad6..4ef0d7e 100644 --- a/bridge.c +++ b/bridge.c @@ -178,7 +178,7 @@ bridge_remove_member(struct bridge_member *bm) if (!bm->present) return; - if (bm == bst->primary_port); + if (bm == bst->primary_port) bridge_reset_primary(bst); if (bst->dev.active) @@ -318,6 +318,9 @@ bridge_create_member(struct bridge_state *bst, struct device *dev, bool hotplug) struct bridge_member *bm; bm = calloc(1, sizeof(*bm) + strlen(dev->ifname) + 1); + if (!bm) + return NULL; + bm->bst = bst; bm->dev.cb = bridge_member_cb; bm->dev.hotplug = hotplug; @@ -454,12 +457,11 @@ bridge_config_init(struct device *dev) device_set_present(&bst->dev, true); } - if (!bst->ifnames) - return; - vlist_update(&bst->members); - blobmsg_for_each_attr(cur, bst->ifnames, rem) { - bridge_add_member(bst, blobmsg_data(cur)); + if (bst->ifnames) { + blobmsg_for_each_attr(cur, bst->ifnames, rem) { + bridge_add_member(bst, blobmsg_data(cur)); + } } vlist_flush(&bst->members); }