summaryrefslogtreecommitdiff
path: root/src/network/networkd-manager.c
diff options
context:
space:
mode:
authorYu Watanabe <watanabe.yu+github@gmail.com>2022-11-01 13:36:52 +0900
committerLuca Boccassi <luca.boccassi@gmail.com>2022-11-01 11:47:33 +0100
commita39a9ac8065c29330207838b70fe388bde2bc254 (patch)
tree6914d88da4b0f112778d54f3e3a0b736ba89584f /src/network/networkd-manager.c
parent3e2f7c46da528775f90c521e4cf22c2f61f82a81 (diff)
downloadsystemd-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.c28
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;
}