From 53c2e3b9ba9f125e45d49c64f6b6c349c6fd40ae Mon Sep 17 00:00:00 2001 From: Yu Watanabe Date: Fri, 13 May 2022 08:36:50 +0900 Subject: [PATCH] network: unset master ifindex only when necessary --- src/network/networkd-setlink.c | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/src/network/networkd-setlink.c b/src/network/networkd-setlink.c index e2b5acc086..29e1192a83 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) { -- 2.25.1