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=3Drevision&revision=3D271396)=
.
The check 'ia =3D in6ifa_ifpwithaddr(ifp, &pktinfo->ipi6_addr);=E2=80=99 =
(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=E2=80=99t match because the kernel keeps a =E2=80=98zoneid=E2=80=99 =
in the link-local addresses. See for example in6_setscope().
That turns 'fe80::304d:b0ff:fe2e:9b88=E2=80=99 in userspace into =
'fe80:13::304d:b0ff:fe2e:9b88=E2=80=99 in the kernel, so the addresses =
appear to be different.

I=E2=80=99m a little uncertain about what the best fix for that would =
be. I could mask out the =E2=80=98zoneid=E2=80=99 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>