summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorYu Watanabe <watanabe.yu+github@gmail.com>2021-12-18 09:50:08 +0900
committerYu Watanabe <watanabe.yu+github@gmail.com>2021-12-18 10:09:07 +0900
commit42e7ce69e46aa50cf3615af0a5a1346ce0c51327 (patch)
tree8fa2853eb84dc122b7b9f435c815507c769194bf
parentd0f17cfda6e6df7748de1e49721ab4c0a064bf27 (diff)
downloadsystemd-42e7ce69e46aa50cf3615af0a5a1346ce0c51327.tar.gz
network: route: update expiration timer in link_request_route()
-rw-r--r--src/network/networkd-route.c10
1 files changed, 10 insertions, 0 deletions
diff --git a/src/network/networkd-route.c b/src/network/networkd-route.c
index d7fb9094fa..ee7a535075 100644
--- a/src/network/networkd-route.c
+++ b/src/network/networkd-route.c
@@ -1346,6 +1346,16 @@ int link_request_route(
existing->lifetime_usec = route->lifetime_usec;
if (consume_object)
route_free(route);
+
+ if (existing->expire) {
+ /* When re-configuring an existing route, kernel does not send RTM_NEWROUTE
+ * message, so we need to update the timer here. */
+ r = route_setup_timer(existing, NULL);
+ if (r < 0)
+ log_link_warning_errno(link, r, "Failed to update expiration timer for route, ignoring: %m");
+ if (r > 0)
+ log_route_debug(existing, "Updated expiration timer for", link, link->manager);
+ }
}
log_route_debug(existing, "Requesting", link, link->manager);