changeset 4975:1c75ddb407bf draft

inet6: Support a /128 autoconf prefix from RA This is apparently a thing. Unsure why, but heh ho.
author Roy Marples <roy@marples.name>
date Fri, 17 Jan 2020 13:22:57 +0000
parents 61580c15b4fb
children 22f0a8a41013
files src/ipv6.c
diffstat 1 files changed, 5 insertions(+), 4 deletions(-) [+]
line wrap: on
line diff
--- a/src/ipv6.c	Fri Jan 17 12:58:28 2020 +0000
+++ b/src/ipv6.c	Fri Jan 17 13:22:57 2020 +0000
@@ -1554,7 +1554,9 @@
 	tempaddr = false;
 #endif
 
-	if (ia->flags & IPV6_AF_AUTOCONF && !tempaddr) {
+	if (prefix_len == 128)
+		goto makepfx;
+	else if (ia->flags & IPV6_AF_AUTOCONF && !tempaddr) {
 		ia->prefix = *addr;
 		ia->dadcounter = ipv6_makeaddr(&ia->addr, ifp,
 		                               &ia->prefix,
@@ -1570,13 +1572,12 @@
 #else
 		return ia;
 #endif
-	} else if (ia->flags & (IPV6_AF_REQUEST | IPV6_AF_DELEGATEDPFX) &&
-	           prefix_len != 128)
-	{
+	} else if (ia->flags & (IPV6_AF_REQUEST | IPV6_AF_DELEGATEDPFX)) {
 		ia->prefix = *addr;
 		cbp = inet_ntop(AF_INET6, &ia->prefix, buf, sizeof(buf));
 		goto paddr;
 	} else {
+makepfx:
 		ia->addr = *addr;
 		if (ipv6_makeprefix(&ia->prefix,
 		                    &ia->addr, ia->prefix_len) == -1)