]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
network/ndisc: remove routes if lifetime is zero
authorYu Watanabe <watanabe.yu+github@gmail.com>
Thu, 28 Mar 2024 04:22:06 +0000 (13:22 +0900)
committerYu Watanabe <watanabe.yu+github@gmail.com>
Thu, 28 Mar 2024 04:28:58 +0000 (13:28 +0900)
Fixes #31979.

src/network/networkd-ndisc.c

index 264ecff34d4618e35c50923d9b887bc7e07058ec..249103b7035c6633488df0d47437fe3d870c88d3 100644 (file)
@@ -920,9 +920,15 @@ static int ndisc_router_process_route(Link *link, sd_ndisc_router *rt) {
         route->dst_prefixlen = prefixlen;
         route->lifetime_usec = lifetime_usec;
 
-        r = ndisc_request_route(route, link, rt);
-        if (r < 0)
-                return log_link_warning_errno(link, r, "Could not request additional route: %m");
+        if (lifetime_usec != 0) {
+                r = ndisc_request_route(route, link, rt);
+                if (r < 0)
+                        return log_link_warning_errno(link, r, "Could not request additional route: %m");
+        } else {
+                r = ndisc_remove_route(route, link);
+                if (r < 0)
+                        return log_link_warning_errno(link, r, "Could not remove additional route with zero lifetime: %m");
+        }
 
         return 0;
 }