From: Yu Watanabe Date: Mon, 9 Nov 2020 07:49:33 +0000 (+0900) Subject: network: convert router lifetime from usec_t to uint16_t X-Git-Tag: v247-rc2~16^2 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=2075e596cf6b8826348f13a8aef5b4eda2eebffc;p=thirdparty%2Fsystemd.git network: convert router lifetime from usec_t to uint16_t --- diff --git a/src/network/networkd-radv.c b/src/network/networkd-radv.c index 817c15764ac..a8e1b2b4898 100644 --- a/src/network/networkd-radv.c +++ b/src/network/networkd-radv.c @@ -641,6 +641,7 @@ static bool link_radv_enabled(Link *link) { } int radv_configure(Link *link) { + uint16_t router_lifetime; RoutePrefix *q; Prefix *p; int r; @@ -675,16 +676,20 @@ int radv_configure(Link *link) { if (r < 0) return r; - /* a value of 0xffffffff represents infinity, 0x0 means this host is - not a router */ - r = sd_radv_set_router_lifetime(link->radv, - DIV_ROUND_UP(link->network->router_lifetime_usec, USEC_PER_SEC)); + /* a value of UINT16_MAX represents infinity, 0x0 means this host is not a router */ + if (link->network->router_lifetime_usec == USEC_INFINITY) + router_lifetime = UINT16_MAX; + else if (link->network->router_lifetime_usec > (UINT16_MAX - 1) * USEC_PER_SEC) + router_lifetime = UINT16_MAX - 1; + else + router_lifetime = DIV_ROUND_UP(link->network->router_lifetime_usec, USEC_PER_SEC); + + r = sd_radv_set_router_lifetime(link->radv, router_lifetime); if (r < 0) return r; - if (link->network->router_lifetime_usec > 0) { - r = sd_radv_set_preference(link->radv, - link->network->router_preference); + if (router_lifetime > 0) { + r = sd_radv_set_preference(link->radv, link->network->router_preference); if (r < 0) return r; }