From: Yu Watanabe Date: Thu, 12 May 2022 23:36:50 +0000 (+0900) Subject: network: unset master ifindex only when necessary X-Git-Tag: v252-rc1~505^2~6 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=53c2e3b9ba9f125e45d49c64f6b6c349c6fd40ae;p=thirdparty%2Fsystemd.git network: unset master ifindex only when necessary --- diff --git a/src/network/networkd-setlink.c b/src/network/networkd-setlink.c index e2b5acc0864..29e1192a836 100644 --- a/src/network/networkd-setlink.c +++ b/src/network/networkd-setlink.c @@ -797,20 +797,28 @@ int link_request_to_set_master(Link *link) { assert(link->network); if (link->network->keep_master) { + /* When KeepMaster=yes, BatmanAdvanced=, Bond=, Bridge=, and VRF= are ignored. */ link->master_set = true; return 0; - } - - link->master_set = false; - if (link->network->batadv || link->network->bond || link->network->bridge || link->network->vrf) + } else if (link->network->batadv || link->network->bond || link->network->bridge || link->network->vrf) { + link->master_set = false; return link_request_set_link(link, REQUEST_TYPE_SET_LINK_MASTER, link_set_master_handler, NULL); - else + + } else if (link->master_ifindex != 0) { + /* Unset master only when it is set. */ + link->master_set = false; return link_request_set_link(link, REQUEST_TYPE_SET_LINK_MASTER, link_unset_master_handler, NULL); + + } else { + /* Nothing we need to do. */ + link->master_set = true; + return 0; + } } int link_request_to_set_mtu(Link *link, uint32_t mtu) {