Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 2 Jul 2015 22:12:18 +0200
From:      Kristof Provost <kp@FreeBSD.org>
To:        freebsd-net@FreeBSD.org
Cc:        ae@FreeBSD.org
Subject:   radvd issue on CURRENT
Message-ID:  <7B00338E-6264-44FD-9A55-8E29C01467E7@FreeBSD.org>

next in thread | raw e-mail | index | archive | help

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


Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?7B00338E-6264-44FD-9A55-8E29C01467E7>