From 74e95e3a81dfaa7bff107e4e975c453aeed18464 Mon Sep 17 00:00:00 2001 From: Yu Watanabe Date: Fri, 5 Jan 2024 01:58:01 +0900 Subject: [PATCH] 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. --- src/network/networkd-link.c | 24 +++++++++++------------- 1 file changed, 11 insertions(+), 13 deletions(-) diff --git a/src/network/networkd-link.c b/src/network/networkd-link.c index 01817737d0..ca3e4fbc9f 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 (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); - 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); - - link->master_ifindex = master_ifindex; + link_drop_from_master(link); + link->master_ifindex = master_ifindex; + } r = link_append_to_master(link); if (r < 0)