From: Yu Watanabe Date: Mon, 6 Dec 2021 20:57:29 +0000 (+0900) Subject: network: set MAC address before enslaving to bond or bridge interface X-Git-Tag: v250-rc1~41^2~3 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=5329a37935b5b4d1fca64ddc0ba952d17c6dc587;p=thirdparty%2Fsystemd.git network: set MAC address before enslaving to bond or bridge interface As the master interface may inherit the slave MAC address. --- diff --git a/src/network/networkd-setlink.c b/src/network/networkd-setlink.c index ff4eecf9b3b..77451e39ae7 100644 --- a/src/network/networkd-setlink.c +++ b/src/network/networkd-setlink.c @@ -568,12 +568,19 @@ static bool link_is_ready_to_call_set_link(Request *req) { break; case SET_LINK_MASTER: { uint32_t m = 0; + Request req_mac = { + .link = link, + .type = REQUEST_TYPE_SET_LINK, + .set_link_operation_ptr = INT_TO_PTR(SET_LINK_MAC), + }; if (link->network->batadv) { if (!netdev_is_ready(link->network->batadv)) return false; m = link->network->batadv->ifindex; } else if (link->network->bond) { + if (ordered_set_contains(link->manager->request_queue, &req_mac)) + return false; if (!netdev_is_ready(link->network->bond)) return false; m = link->network->bond->ifindex; @@ -589,6 +596,8 @@ static bool link_is_ready_to_call_set_link(Request *req) { } } } else if (link->network->bridge) { + if (ordered_set_contains(link->manager->request_queue, &req_mac)) + return false; if (!netdev_is_ready(link->network->bridge)) return false; m = link->network->bridge->ifindex;