summaryrefslogtreecommitdiffhomepage
path: root/src
diff options
context:
space:
mode:
authorHans Dedecker <dedeckeh@gmail.com>2020-12-24 16:08:58 +0100
committerHans Dedecker <dedeckeh@gmail.com>2020-12-24 16:25:59 +0100
commitd1ae052e5b2c928648002906546a9652b6dfd9b4 (patch)
tree2f85745a943d3b6cc1fb5560a08a0c9df49c0ac5 /src
parent9d5e37912820443492f87f07fb68edeed206c044 (diff)
dhcpv6-ia: fix logic to include IA_PD prefix with lifetimes set to 0
Make sure IA_PD prefixes for which no preferred and valid lifetimes can be returned are included in the reply with a preferred and valid lifetime to 0. Therefore exclude IPv6 prefixes with an invalid prefix length as well so IA_PD prefixes for which not a preferred/valid lifetime is returned are included with a preferred and valid lifetime set to 0 Signed-off-by: Hans Dedecker <dedeckeh@gmail.com>
Diffstat (limited to 'src')
-rw-r--r--src/dhcpv6-ia.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/src/dhcpv6-ia.c b/src/dhcpv6-ia.c
index 2de9710..42268e5 100644
--- a/src/dhcpv6-ia.c
+++ b/src/dhcpv6-ia.c
@@ -949,7 +949,8 @@ static size_t build_ia(uint8_t *buf, size_t buflen, uint16_t status,
size_t addrlen = (a->managed) ? (size_t)a->managed_size : iface->addr6_len;
for (size_t i = 0; i < addrlen; ++i) {
- if (!valid_addr(&addrs[i], now))
+ if (!valid_addr(&addrs[i], now) ||
+ !valid_prefix_length(a, addrs[i].prefix))
continue;
struct in6_addr addr = addrs[i].addr.in6;