[radvd-devel-l] resetting ipv6-allrouters membership on eth6
Pekka Savola
pekkas at netcore.fi
Tue May 4 02:47:53 EDT 2010
On Thu, 29 Apr 2010, Ivan Skytte Jørgensen wrote:
> I started radvd-1.6 and it correctly joined the all-routers group on
> all relevant interfaces including eth6 and vlan60. I left it running
> for a day and everything was fine.
>
> I then downed interface eth6 and upped it again. Then the problem appeared again:
>
> soekris2:~ # cat /proc/net/igmp6 |fgrep eth6
> 8 eth6 ff020000000000000000000000000002 1 00000004 0
> 8 eth6 ff0200000000000000000001ff000000 3 00000004 0
> 8 eth6 ff0200000000000000000001ffca3c42 3 00000004 0
> 8 eth6 ff020000000000000000000000000001 1 0000000C 0
> soekris2:~ # ifdown eth6
> eth6 is still used from interfaces vlan60
> vlan60
> eth6 now going down itself
> eth6 device: National Semiconductor Corporation DP83815 (MacPhyter) Ethernet Controller
> soekris2:~ # ifup eth6
> eth6 device: National Semiconductor Corporation DP83815 (MacPhyter) Ethernet Controller
> soekris2:~ # ifup vlan60
> vlan60
> soekris2:~ # cat /proc/net/igmp6 |fgrep eth6
> 8 eth6 ff0200000000000000000001ff000000 2 00000004 0
> 8 eth6 ff0200000000000000000001ffca3c42 2 00000004 0
> 8 eth6 ff020000000000000000000000000001 1 0000000C 0
Sorry for delay in this. I couldn't reproduce this on F12
(2.6.32.12-114). (But I did find another bug :-()
Some observations:
1) when you set net.ipv6.conf.ethX.forwarding=1, the kernel will
join the allrouters-group.
2) if you set it to 0 intentionally, radvd will join it at startup.
3) if you do "ifconfig ethX down" (slightly different from what you
did), at least here the group membership persists as long as radvd is
running.
You could check ethX.forwarding settings but I doubt that's relevant.
There is a special condition in the code due to a bug in earlier
kernels where EADDRINUSE is reported in another manner; that's why the
code thinks it has succeeded and does not print "can't join
ipv6-allrouters on eth6" error.
The allrouters group provably does not exist on eth6, but does exist
on its subinterface vlan60. Therefore I strongly suspect this is due
to a kernel bug/feature in this respect.
Actually I'm not even sure if the kernel is expected to be able to run
in "native mode" if you have configured vlans on top of it.
More information about the radvd-devel-l
mailing list