X-Git-Url: http://git.archive.openwrt.org/?p=project%2Fnetifd.git;a=blobdiff_plain;f=bridge.c;h=d29c3c0ccc49d061b71a9adb76711e0477e329ee;hp=361b409b8de9167fb340fa625d94c5d981446603;hb=625a5a26ec6da9e8e7c969b383a5cac7701ed6f6;hpb=2dfdcd4c6a2381bedb6e1b10ff0fdc4246802c82 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; }