From: Yu Watanabe Date: Thu, 27 Oct 2022 21:40:07 +0000 (+0900) Subject: network: skip to reassign master ifindex if already set X-Git-Tag: v253-rc1~628 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=9f913d37a01f71e559d099bff280827f8817d8c5;p=thirdparty%2Fsystemd.git network: skip to reassign master ifindex if already set Otherwise, the slave interface may go down, especially when the master is bond. Fixes #25067. --- diff --git a/src/network/networkd-setlink.c b/src/network/networkd-setlink.c index f9d774eee9e..b6aaa1e9dbc 100644 --- a/src/network/networkd-setlink.c +++ b/src/network/networkd-setlink.c @@ -543,6 +543,12 @@ static int link_is_ready_to_set_link(Link *link, Request *req) { m = link->network->vrf->ifindex; } + if (m == (uint32_t) link->master_ifindex) { + /* The requested master is already set. */ + link->master_set = true; + return -EALREADY; /* indicate to cancel the request. */ + } + req->userdata = UINT32_TO_PTR(m); break; } @@ -568,6 +574,8 @@ static int link_process_set_link(Request *req, Link *link, void *userdata) { assert(link); r = link_is_ready_to_set_link(link, req); + if (r == -EALREADY) + return 1; /* Cancel the request. */ if (r <= 0) return r;