radvd issue on CURRENT
Kristof Provost
kp at FreeBSD.org
Thu Jul 2 20:11:47 UTC 2015
Hi,
In the process of setting up my TPLink device (Thanks Allan!) I ran into problems getting radvd to work.
It fails while processing the IPV6_PKTINFO options in ip6_setpktopt(). Specifically, it fails one of the extra checks added in r271396(https://svnweb.freebsd.org/base?view=revision&revision=271396).
The check 'ia = in6ifa_ifpwithaddr(ifp, &pktinfo->ipi6_addr);’ (i.e. does the address exist on the interface?) fails, even though radvd sets a correct address.
The cause of that is that radvd picks a link-local address. Those don’t match because the kernel keeps a ‘zoneid’ in the link-local addresses. See for example in6_setscope().
That turns 'fe80::304d:b0ff:fe2e:9b88’ in userspace into 'fe80:13::304d:b0ff:fe2e:9b88’ in the kernel, so the addresses appear to be different.
I’m a little uncertain about what the best fix for that would be. I could mask out the ‘zoneid’ for link-local addresses in in6fa_ifpwithaddr(), but that might break other things.
Regards,
Kristof
More information about the freebsd-net
mailing list