]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
network: ndisc: add missing lifetime check
authorYu Watanabe <watanabe.yu+github@gmail.com>
Thu, 21 Oct 2021 11:43:57 +0000 (20:43 +0900)
committerYu Watanabe <watanabe.yu+github@gmail.com>
Thu, 21 Oct 2021 11:58:15 +0000 (20:58 +0900)
src/network/networkd-ndisc.c

index 5430821a2fc5acf274d5840ba4ff2cdf5e7cb3d5..9ea4bf6557f40cd502390c2363c38ae36091d845 100644 (file)
@@ -482,6 +482,13 @@ static int ndisc_router_process_onlink_prefix(Link *link, sd_ndisc_router *rt) {
         assert(link);
         assert(rt);
 
+        r = sd_ndisc_router_prefix_get_valid_lifetime(rt, &lifetime_sec);
+        if (r < 0)
+                return log_link_error_errno(link, r, "Failed to get prefix lifetime: %m");
+
+        if (lifetime_sec == 0)
+                return 0;
+
         r = sd_ndisc_router_get_timestamp(rt, clock_boottime_or_monotonic(), &timestamp_usec);
         if (r < 0)
                 return log_link_error_errno(link, r, "Failed to get RA timestamp: %m");
@@ -490,10 +497,6 @@ static int ndisc_router_process_onlink_prefix(Link *link, sd_ndisc_router *rt) {
         if (r < 0)
                 return log_link_error_errno(link, r, "Failed to get prefix length: %m");
 
-        r = sd_ndisc_router_prefix_get_valid_lifetime(rt, &lifetime_sec);
-        if (r < 0)
-                return log_link_error_errno(link, r, "Failed to get prefix lifetime: %m");
-
         r = route_new(&route);
         if (r < 0)
                 return log_oom();