network: route: update expiration timer in link_request_route()
authorYu Watanabe <watanabe.yu+github@gmail.com>
Sat, 18 Dec 2021 00:50:08 +0000 (09:50 +0900)
committerYu Watanabe <watanabe.yu+github@gmail.com>
Sat, 18 Dec 2021 01:09:07 +0000 (10:09 +0900)
src/network/networkd-route.c

index d7fb9094faf4d93dda98a44768d41fb31d033368..ee7a53507542441fdf64a4b70a59198ef418b52b 100644 (file)
@@ -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);