X-Git-Url: http://git.archive.openwrt.org/?p=project%2Fnetifd.git;a=blobdiff_plain;f=bridge.c;h=d29c3c0ccc49d061b71a9adb76711e0477e329ee;hp=361b409b8de9167fb340fa625d94c5d981446603;hb=13f7f295f33c2639c390d4a6b2c58d1845e12fc3;hpb=515a80251f14d4c033fd49918e9ecac308e135dd;ds=sidebyside diff --git a/bridge.c b/bridge.c index 361b409..d29c3c0 100644 --- a/bridge.c +++ b/bridge.c @@ -109,11 +109,17 @@ bridge_reset_primary(struct bridge_state *bst) bst->primary_port = NULL; bst->dev.settings.flags &= ~DEV_OPT_MACADDR; vlist_for_each_element(&bst->members, bm, node) { + uint8_t *macaddr; + if (!bm->present) continue; bst->primary_port = bm; - memcpy(bst->dev.settings.macaddr, bm->dev.dev->settings.macaddr, 6); + if (bm->dev.dev->settings.flags & DEV_OPT_MACADDR) + macaddr = bm->dev.dev->settings.macaddr; + else + macaddr = bm->dev.dev->orig_settings.macaddr; + memcpy(bst->dev.settings.macaddr, macaddr, 6); bst->dev.settings.flags |= DEV_OPT_MACADDR; return; }