From: Yu Watanabe Date: Tue, 18 May 2021 05:59:10 +0000 (+0900) Subject: network: make link enter failed state on failure in link_update() and link_reset_carr... X-Git-Tag: v249-rc1~76^2~33 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=f0269653e98885e41ffec37cae76f3820a199a18;p=thirdparty%2Fsystemd.git network: make link enter failed state on failure in link_update() and link_reset_carrier() Previously, several failures in link_carrier_gained() make link enter failed state, and other errors are ignored. Now, all failures in link_carrier_gained(), moreover, link_update() are critical. --- diff --git a/src/network/networkd-link.c b/src/network/networkd-link.c index c4eba5e3dc0..74a73419d6f 100644 --- a/src/network/networkd-link.c +++ b/src/network/networkd-link.c @@ -2786,18 +2786,14 @@ static int link_carrier_gained(Link *link) { return r; if (r > 0) { r = link_reconfigure(link, false); - if (r < 0) { - link_enter_failed(link); + if (r < 0) return r; - } } if (IN_SET(link->state, LINK_STATE_CONFIGURING, LINK_STATE_CONFIGURED)) { r = link_acquire_dynamic_conf(link); - if (r < 0) { - link_enter_failed(link); + if (r < 0) return r; - } r = link_request_static_configs(link); if (r < 0) @@ -3136,7 +3132,8 @@ int manager_rtnl_process_link(sd_netlink *rtnl, sd_netlink_message *message, Man r = link_update(link, message); if (r < 0) { - log_warning_errno(r, "Could not process link message, ignoring: %m"); + log_warning_errno(r, "Could not process link message: %m"); + link_enter_failed(link); return 0; } diff --git a/src/network/networkd-manager.c b/src/network/networkd-manager.c index 9406f8c630b..5b6eefb7433 100644 --- a/src/network/networkd-manager.c +++ b/src/network/networkd-manager.c @@ -60,8 +60,10 @@ static int manager_reset_all(Manager *m) { HASHMAP_FOREACH(link, m->links) { r = link_carrier_reset(link); - if (r < 0) + if (r < 0) { log_link_warning_errno(link, r, "Could not reset carrier: %m"); + link_enter_failed(link); + } } return 0;