changeset 4181:4224319f0887 draft

BSD: Strip scope from link-local addresses for KAME stacks This fixes DHCPv6 and IPv6ND trying to send messages from DETACHED or TENTATIVE addresses when carrier comes back.
author Roy Marples <roy@marples.name>
date Tue, 14 Nov 2017 12:16:26 +0000
parents 772a53ed65f2
children 4d1dbe479752
files src/if-bsd.c
diffstat 1 files changed, 6 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- a/src/if-bsd.c	Mon Nov 06 21:51:34 2017 +0000
+++ b/src/if-bsd.c	Tue Nov 14 12:16:26 2017 +0000
@@ -1164,6 +1164,12 @@
 		}
 #endif
 
+#ifdef __KAME__
+		if (IN6_IS_ADDR_LINKLOCAL(&addr6))
+			/* Remove the scope from the address */
+			addr6.s6_addr[2] = addr6.s6_addr[3] = '\0';
+#endif
+
 		ipv6_handleifa(ctx, ifam->ifam_type, NULL,
 		    ifp->name, &addr6, ipv6_prefixlen(&mask6), addrflags);
 		break;