X-Git-Url: http://git.archive.openwrt.org/?p=project%2Fnetifd.git;a=blobdiff_plain;f=bridge.c;h=96e0209141aea09df3627abe24c18b2a951c2119;hp=30fd58d92065cd2516d27450f8dbfdb416fa18bd;hb=ead9789e75824854c2ffab0c68bc0dd4269afc81;hpb=c66b0fe37d20fa10777aef6f3580af15f5edd07e diff --git a/bridge.c b/bridge.c index 30fd58d..96e0209 100644 --- a/bridge.c +++ b/bridge.c @@ -240,15 +240,15 @@ bridge_remove_member(struct bridge_member *bm) if (!bm->present) return; - if (bm == bst->primary_port) - bridge_reset_primary(bst); - if (bst->dev.active) bridge_disable_member(bm); bm->present = false; bm->bst->n_present--; + if (bm == bst->primary_port) + bridge_reset_primary(bst); + if (bst->config.bridge_empty) return; @@ -568,8 +568,6 @@ bridge_apply_settings(struct bridge_state *bst, struct blob_attr **tb) /* defaults */ cfg->stp = false; cfg->forward_delay = 2; - cfg->igmp_snoop = true; - cfg->multicast_querier = true; cfg->robustness = 2; cfg->query_interval = 12500; cfg->query_response_interval = 1000; @@ -655,6 +653,9 @@ bridge_reload(struct device *dev, struct blob_attr *attr) blobmsg_parse(bridge_attrs, __BRIDGE_ATTR_MAX, tb_br, blob_data(attr), blob_len(attr)); + if (tb_dev[DEV_ATTR_MACADDR]) + bst->primary_port = NULL; + bst->ifnames = tb_br[BRIDGE_ATTR_IFNAME]; device_init_settings(dev, tb_dev); bridge_apply_settings(bst, tb_br);