[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