From: Yu Watanabe Date: Tue, 20 Aug 2024 22:01:47 +0000 (+0900) Subject: network: enter initialized state when the interface will be reconfigured X-Git-Tag: v257-rc1~665^2~6 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=685fd0d729718aab45a19567a889c8baa2e6cc65;p=thirdparty%2Fsystemd.git network: enter initialized state when the interface will be reconfigured When the interface is in the failed state, link_getlink_handler_internal() will do nothing and return zero, thus the interface will not be reconfigured, especially when the reconfiguration is triggered in link_enter_failed(). Follow-up for c2eb7753dd47ec04ae0d66400e70bc87fbf1adcc. --- diff --git a/src/network/networkd-link-bus.c b/src/network/networkd-link-bus.c index 84ed42987c5..ef2e8112557 100644 --- a/src/network/networkd-link-bus.c +++ b/src/network/networkd-link-bus.c @@ -669,7 +669,6 @@ int bus_link_method_reconfigure(sd_bus_message *message, void *userdata, sd_bus_ if (r < 0) return r; if (r > 0) { - link_set_state(l, LINK_STATE_INITIALIZED); r = link_save_and_clean_full(l, /* also_save_manager = */ true); if (r < 0) return r; diff --git a/src/network/networkd-link.c b/src/network/networkd-link.c index 3940aa79b37..2f7aaec2e50 100644 --- a/src/network/networkd-link.c +++ b/src/network/networkd-link.c @@ -1454,6 +1454,9 @@ int link_reconfigure(Link *link, bool force) { if (r < 0) return r; + if (force || link->state == LINK_STATE_FAILED) + link_set_state(link, LINK_STATE_INITIALIZED); + return 1; /* 1 means the interface will be reconfigured. */ } @@ -1536,6 +1539,9 @@ int link_reconfigure_on_bus_method_reload(Link *link, sd_bus_message *message) { TAKE_PTR(data); link->manager->reloading++; + if (link->state == LINK_STATE_FAILED) + link_set_state(link, LINK_STATE_INITIALIZED); + return 0; }