tech-net archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

IPv6: what is required of lower layers?



I have a thing I've been using for years now, passing IPv4 packets
around, using tun interfaces to get packets into and out of the kernel
networking stack.

But now I want to add support for IPv6.

At first I just added the code to userland and it simply didn't work; I
never got any packets out of the tun device.  Adding debugging printfs
to ip6_output(), I discovered that the problem was that the tun device
was configured as IFF_BROADCAST but not IFF_MULTICAST.  So I added
that, and now I'm getting packets, but they're addressed to a multicast
address, ff02:3::1:ff02:2, not the address userland is sending to.

I've been having trouble finding the relevant specs to read to figure
out what exactly IPv6 is expecting from the layers beneath it.  I
assume the v6 stack is expecting some kind of response to these
multicast packets before it's willing to send the real traffic, but
it's not clear what.  The presence of the text "ff02" in nd6.c implies
it has something to do with ND.  But I don't find any description of
ff02:3::anything in RFC4291 (addressing architecture) or RFC4861
(neighbour discovery), leaving me wondering what's going on here.

I am assuming this is not OS-version-specific, since I can't see how
different versions could interoperate if it were.  But, in case it
matters somehow, this is happening on my 5.2 variant, which has no
changes to sys/netinet6 from stock 5.2.

What am I missing?

/~\ The ASCII				  Mouse
\ / Ribbon Campaign
 X  Against HTML		mouse%rodents-montreal.org@localhost
/ \ Email!	     7D C8 61 52 5D E7 2D 39  4E F1 31 3E E8 B3 27 4B


Home | Main Index | Thread Index | Old Index