diff options
author | Hans Dedecker <dedeckeh@gmail.com> | 2020-12-24 16:08:58 +0100 |
---|---|---|
committer | Hans Dedecker <dedeckeh@gmail.com> | 2020-12-24 16:25:59 +0100 |
commit | d1ae052e5b2c928648002906546a9652b6dfd9b4 (patch) | |
tree | 2f85745a943d3b6cc1fb5560a08a0c9df49c0ac5 /src | |
parent | 9d5e37912820443492f87f07fb68edeed206c044 (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.c | 3 |
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; |