diff options
author | Yu Watanabe <watanabe.yu+github@gmail.com> | 2022-11-01 13:36:52 +0900 |
---|---|---|
committer | Luca Boccassi <luca.boccassi@gmail.com> | 2022-11-01 11:47:33 +0100 |
commit | a39a9ac8065c29330207838b70fe388bde2bc254 (patch) | |
tree | 6914d88da4b0f112778d54f3e3a0b736ba89584f /src/network/networkd-manager.c | |
parent | 3e2f7c46da528775f90c521e4cf22c2f61f82a81 (diff) | |
download | systemd-a39a9ac8065c29330207838b70fe388bde2bc254.tar.gz |
network: forcibly reconfigure all interfaces after sleep
Previously, interfaces are partially reconfigured in a spurious way.
Let's use the same way as `networkctl reconfigure`.
Hopefully fixes #14987 and #24997.
Diffstat (limited to 'src/network/networkd-manager.c')
-rw-r--r-- | src/network/networkd-manager.c | 28 |
1 files changed, 9 insertions, 19 deletions
diff --git a/src/network/networkd-manager.c b/src/network/networkd-manager.c index cdfd29bc0e..684d635d36 100644 --- a/src/network/networkd-manager.c +++ b/src/network/networkd-manager.c @@ -64,25 +64,9 @@ /* use 128 MB for receive socket kernel queue. */ #define RCVBUF_SIZE (128*1024*1024) -static int manager_reset_all(Manager *m) { - Link *link; - int r; - - assert(m); - - HASHMAP_FOREACH(link, m->links_by_index) { - r = link_reconfigure_after_sleep(link); - if (r < 0) { - log_link_warning_errno(link, r, "Failed to reconfigure interface: %m"); - link_enter_failed(link); - } - } - - return 0; -} - static int match_prepare_for_sleep(sd_bus_message *message, void *userdata, sd_bus_error *ret_error) { Manager *m = ASSERT_PTR(userdata); + Link *link; int b, r; assert(message); @@ -96,9 +80,15 @@ static int match_prepare_for_sleep(sd_bus_message *message, void *userdata, sd_b if (b) return 0; - log_debug("Coming back from suspend, resetting all connections..."); + log_debug("Coming back from suspend, reconfiguring all connections..."); - (void) manager_reset_all(m); + HASHMAP_FOREACH(link, m->links_by_index) { + r = link_reconfigure(link, /* force = */ true); + if (r < 0) { + log_link_warning_errno(link, r, "Failed to reconfigure interface: %m"); + link_enter_failed(link); + } + } return 0; } |