[PATCH v2 4/9] router: inherit user-assigned preferred_lifetime

Paul Donald newtwen+github at gmail.com
Fri Apr 5 04:06:48 PDT 2024


From: Paul Donald <newtwen at gmail.com>

Inherit preferred_lifetime value irrespective of whether ra_useleasetime
is set or not.

User-provided values for preferred_lifetime are now assigned, instead of
ignored.


Before:
==
ICMPv6 Option (Prefix information : fd51:1c2a:8909::/64)
    Type: Prefix information (3)
    Length: 4 (32 bytes)
    Prefix Length: 64
    Flag: 0xc0, On-link flag(L), Autonomous address-configuration flag(A)
    Valid Lifetime: Infinity (4294967295)
    Preferred Lifetime: Infinity (4294967295)
    Reserved
    Prefix: fd51:1c2a:8909::
==After (preferred_lifetime set to 7 minutes):==
ICMPv6 Option (Prefix information : fd51:1c2a:8909::/64)
    Type: Prefix information (3)
    Length: 4 (32 bytes)
    Prefix Length: 64
    Flag: 0xc0, On-link flag(L), Autonomous address-configuration flag(A)
    Valid Lifetime: Infinity (4294967295)
    Preferred Lifetime: 420
    Reserved
    Prefix: fd51:1c2a:8909::
==

Signed-off-by: Paul Donald <newtwen at gmail.com>
Reviewed-by: Daniel Golle <daniel at makrotopia.org>
---
 src/router.c | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

diff --git a/src/router.c b/src/router.c
index 335218f..3890c0b 100644
--- a/src/router.c
+++ b/src/router.c
@@ -590,9 +590,10 @@ static int send_router_advert(struct interface *iface, const struct in6_addr *fr
 		if (addr->preferred_lt > (uint32_t)now) {
 			preferred_lt = TIME_LEFT(addr->preferred_lt, now);
 
-			if (iface->ra_useleasetime &&
-			    preferred_lt > iface->preferred_lifetime)
+			if (preferred_lt > iface->preferred_lifetime) {
+				// set to possibly user mandated preferred_lt
 				preferred_lt = iface->preferred_lifetime;
+			}
 		}
 
 		if (addr->valid_lt > (uint32_t)now) {
-- 
2.44.0




More information about the openwrt-devel mailing list