summaryrefslogtreecommitdiff
path: root/src/network/networkd-ndisc.c
diff options
context:
space:
mode:
authorYu Watanabe <watanabe.yu+github@gmail.com>2022-07-14 02:52:48 +0900
committerYu Watanabe <watanabe.yu+github@gmail.com>2022-07-14 20:56:41 +0900
commit5235d739605f0f3f91abef9d5e7d8764ae57430c (patch)
treebcc21822a4052ddd9a87ac4ae483888ea621195b /src/network/networkd-ndisc.c
parentdef4741bd74b947cfbbc1929abd81b68acbeadd0 (diff)
downloadsystemd-5235d739605f0f3f91abef9d5e7d8764ae57430c.tar.gz
network: fix infinite lifetime handling
Diffstat (limited to 'src/network/networkd-ndisc.c')
-rw-r--r--src/network/networkd-ndisc.c14
1 files changed, 7 insertions, 7 deletions
diff --git a/src/network/networkd-ndisc.c b/src/network/networkd-ndisc.c
index b76b9608f3..ed33f0817f 100644
--- a/src/network/networkd-ndisc.c
+++ b/src/network/networkd-ndisc.c
@@ -320,7 +320,7 @@ static int ndisc_router_process_default(Link *link, sd_ndisc_router *rt) {
if (r < 0)
return log_link_error_errno(link, r, "Failed to get RA timestamp: %m");
- lifetime_usec = usec_add(timestamp_usec, lifetime_sec * USEC_PER_SEC);
+ lifetime_usec = sec16_to_usec(lifetime_sec, timestamp_usec);
r = sd_ndisc_router_get_address(rt, &gateway);
if (r < 0)
@@ -442,8 +442,8 @@ static int ndisc_router_process_autonomous_prefix(Link *link, sd_ndisc_router *r
if (lifetime_preferred_sec > lifetime_valid_sec)
return 0;
- lifetime_valid_usec = usec_add(lifetime_valid_sec * USEC_PER_SEC, timestamp_usec);
- lifetime_preferred_usec = usec_add(lifetime_preferred_sec * USEC_PER_SEC, timestamp_usec);
+ lifetime_valid_usec = sec_to_usec(lifetime_valid_sec, timestamp_usec);
+ lifetime_preferred_usec = sec_to_usec(lifetime_preferred_sec, timestamp_usec);
r = ndisc_generate_addresses(link, &prefix, prefixlen, &addresses);
if (r < 0)
@@ -519,7 +519,7 @@ static int ndisc_router_process_onlink_prefix(Link *link, sd_ndisc_router *rt) {
route->family = AF_INET6;
route->flags = RTM_F_PREFIX;
route->dst_prefixlen = prefixlen;
- route->lifetime_usec = usec_add(timestamp_usec, lifetime_sec * USEC_PER_SEC);
+ route->lifetime_usec = sec_to_usec(lifetime_sec, timestamp_usec);
r = sd_ndisc_router_prefix_get_address(rt, &route->dst.in6);
if (r < 0)
@@ -652,7 +652,7 @@ static int ndisc_router_process_route(Link *link, sd_ndisc_router *rt) {
route->gw_family = AF_INET6;
route->dst.in6 = dst;
route->dst_prefixlen = prefixlen;
- route->lifetime_usec = usec_add(timestamp_usec, lifetime_sec * USEC_PER_SEC);
+ route->lifetime_usec = sec_to_usec(lifetime_sec, timestamp_usec);
r = ndisc_request_route(TAKE_PTR(route), link, rt);
if (r < 0)
@@ -706,7 +706,7 @@ static int ndisc_router_process_rdnss(Link *link, sd_ndisc_router *rt) {
if (lifetime_sec == 0)
return 0;
- lifetime_usec = usec_add(timestamp_usec, lifetime_sec * USEC_PER_SEC);
+ lifetime_usec = sec_to_usec(lifetime_sec, timestamp_usec);
n = sd_ndisc_router_rdnss_get_addresses(rt, &a);
if (n < 0)
@@ -800,7 +800,7 @@ static int ndisc_router_process_dnssl(Link *link, sd_ndisc_router *rt) {
if (lifetime_sec == 0)
return 0;
- lifetime_usec = usec_add(timestamp_usec, lifetime_sec * USEC_PER_SEC);
+ lifetime_usec = sec_to_usec(lifetime_sec, timestamp_usec);
r = sd_ndisc_router_dnssl_get_domains(rt, &l);
if (r < 0)