diff options
| author | Paul Donald | 2024-04-09 03:04:05 +0000 |
|---|---|---|
| committer | Christian Marangi | 2024-05-07 22:06:23 +0000 |
| commit | e164414aa18454d08bfd3d0480acfa0d5754034d (patch) | |
| tree | c2d95c65f30badf092106b2ab4f0ea18d88eba94 | |
| parent | 3b4e06055900c7e3dc6462ad17ff897093b1fc27 (diff) | |
| download | odhcpd-e164414aa18454d08bfd3d0480acfa0d5754034d.tar.gz | |
router: limit prefix preferred_lt to valid_lt in accordance with RFC4861
Follow-up fix for bc9d317f2921 ("dhcpv6-ia: fix invalid preferred
lifetime").
https://www.rfc-editor.org/rfc/rfc4861#page-44
Fixes: bc9d317f2921 ("dhcpv6-ia: fix invalid preferred lifetime")
Signed-off-by: Paul Donald <newtwen@gmail.com>
Reviewed-by: Daniel Golle <daniel@makrotopia.org>
[ fix comment format and improve commit title ]
Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
| -rw-r--r-- | src/router.c | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/src/router.c b/src/router.c index 6eba161..b69feb3 100644 --- a/src/router.c +++ b/src/router.c @@ -603,6 +603,15 @@ static int send_router_advert(struct interface *iface, const struct in6_addr *fr valid_lt = iface->dhcp_leasetime; } + if (preferred_lt > valid_lt) { + /* + * RFC4861 ยง 6.2.1 + * This value [AdvPreferredLifetime] MUST NOT be larger than + * AdvValidLifetime. + */ + preferred_lt = valid_lt; + } + if (minvalid > valid_lt) minvalid = valid_lt; |