diff mbox series

[v3,3/9] router: inherit user-assigned preferred_lifetime

Message ID 20240409030540.77576-4-newtwen+github@gmail.com
State Accepted
Headers show
Series odhcpd patchset | expand

Commit Message

Paul Donald April 9, 2024, 3:04 a.m. UTC
From: Paul Donald <newtwen@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@gmail.com>
Reviewed-by: Daniel Golle <daniel@makrotopia.org>
---
 src/router.c | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)
diff mbox series

Patch

diff --git a/src/router.c b/src/router.c
index 6a9e19d..61d0e69 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) {