From: Yu Watanabe Date: Thu, 4 Jan 2024 16:58:01 +0000 (+0900) Subject: network/link: always join to the main interface when we receive IFLA_MASTER attribute X-Git-Tag: v256-rc1~1248 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=74e95e3a81dfaa7bff107e4e975c453aeed18464;p=thirdparty%2Fsystemd.git network/link: always join to the main interface when we receive IFLA_MASTER attribute Otherwise, e.g. when we enumerate a bridge port first, then the bridge main interface, then the port cannot be managed by the main interface. Fixes #30682. --- diff --git a/src/network/networkd-link.c b/src/network/networkd-link.c index 01817737d06..ca3e4fbc9f7 100644 --- a/src/network/networkd-link.c +++ b/src/network/networkd-link.c @@ -2000,20 +2000,18 @@ static int link_update_master(Link *link, sd_netlink_message *message) { if (master_ifindex == link->ifindex) master_ifindex = 0; - if (master_ifindex == link->master_ifindex) - return 0; - - if (link->master_ifindex == 0) - log_link_debug(link, "Attached to master interface: %i", master_ifindex); - else if (master_ifindex == 0) - log_link_debug(link, "Detached from master interface: %i", link->master_ifindex); - else - log_link_debug(link, "Master interface changed: %i %s %i", link->master_ifindex, - special_glyph(SPECIAL_GLYPH_ARROW_RIGHT), master_ifindex); - - link_drop_from_master(link); + if (master_ifindex != link->master_ifindex) { + if (link->master_ifindex == 0) + log_link_debug(link, "Attached to master interface: %i", master_ifindex); + else if (master_ifindex == 0) + log_link_debug(link, "Detached from master interface: %i", link->master_ifindex); + else + log_link_debug(link, "Master interface changed: %i %s %i", link->master_ifindex, + special_glyph(SPECIAL_GLYPH_ARROW_RIGHT), master_ifindex); - link->master_ifindex = master_ifindex; + link_drop_from_master(link); + link->master_ifindex = master_ifindex; + } r = link_append_to_master(link); if (r < 0)