[radvd-devel-l] resetting ipv6-allrouters membership on eth6
Pekka Savola
pekkas at netcore.fi
Wed Apr 28 02:35:53 EDT 2010
There have been changes in this behaviour since radvd 1.1. It would be
helpful if you could test the latest radvd?
On Tue, 27 Apr 2010, Ivan Skytte Jørgensen wrote:
> [This is possibly a resend]
> After configuring a previously-unused interface eth6 I see:
>
> soekris2:~ # fgrep ipv6-allrouters /var/log/messages|tail
> Apr 25 20:04:26 soekris2 radvd[5000]: resetting ipv6-allrouters membership on eth6
> Apr 25 20:06:44 soekris2 radvd[5000]: resetting ipv6-allrouters membership on eth6
> Apr 25 20:08:09 soekris2 radvd[5000]: resetting ipv6-allrouters membership on eth6
> Apr 25 20:11:11 soekris2 radvd[5000]: resetting ipv6-allrouters membership on eth6
> Apr 25 20:14:27 soekris2 radvd[5000]: resetting ipv6-allrouters membership on eth6
> Apr 25 20:18:50 soekris2 radvd[5000]: resetting ipv6-allrouters membership on eth6
> Apr 25 20:23:30 soekris2 radvd[5000]: resetting ipv6-allrouters membership on eth6
> Apr 25 20:24:48 soekris2 radvd[5000]: resetting ipv6-allrouters membership on eth6
> Apr 25 20:28:31 soekris2 radvd[5000]: resetting ipv6-allrouters membership on eth6
> Apr 25 20:32:45 soekris2 radvd[5000]: resetting ipv6-allrouters membership on eth6
>
> I have IPv6 and radvd running on all the other interfaces. The eth6interface is the only that generates this warning.
> The only special thing about eth6 is that it it has a VLAN running on top of it. (radvd runs fine on the VLAN)
>
> I did manage to get an strace of when radvd logs the warning:
>
> --- SIGALRM (Alarm clock) @ 0 (0) ---
> gettimeofday({1272219810, 505741}, NULL) = 0
> ioctl(4, SIOCGIFFLAGS, {ifr_name="eth6", ifr_flags=IFF_UP|IFF_BROADCAST|IFF_RUNNING|IFF_PROMISC|IFF_MULTICAST}) = 0
> open("/proc/net/igmp6", O_RDONLY) = 5
> fstat64(5, {st_mode=S_IFREG|0444, st_size=0, ...}) = 0
> mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb7f2d000
> read(5, "1 lo ff020000000"..., 1024) = 1024
> read(5, "000000000000001ffca90c2 1 00"..., 1024) = 1024
> read(5, "00000004 0\n12 sixxs "..., 1024) = 437
> read(5, "", 1024) = 0
> read(5, "", 1024) = 0
> close(5) = 0
> munmap(0xb7f2d000, 4096) = 0
> time(NULL) = 1272219810
> send(3, "<28>Apr 25 20:23:30 radvd[5000]:"..., 77, MSG_NOSIGNAL) = 77
> setsockopt(4, SOL_IPV6, IPV6_ADD_MEMBERSHIP, "\377\2\0\0\0\0\0\0\0\0\0\0\0\0\0\2\10\0\0\0", 20) = -1 EADDRINUSE (Address already in use)
> gettimeofday({1272219810, 511303}, NULL) = 0
> open("/proc/sys/net/ipv6/conf/all/forwarding", O_RDONLY) = 5
>
> Looking at the device-linux.c source it appears that the all-routers multicast membership is not found, radvd tries to join the multicast group, but kernel says "already in use".
> Yet the group membership isn't there:
>
> soekris2:~ # cat /proc/net/igmp6
> 1 lo ff020000000000000000000000000001 1 0000000C 0
> 2 eth0 ff0200000000000000000001ff000000 3 00000004 0
> 2 eth0 ff020000000000000000000000000002 2 00000004 0
> 2 eth0 ff020000000000000000000000000202 1 00000004 0
> 2 eth0 ff0200000000000000000001ffca90c0 3 00000004 0
> 2 eth0 ff020000000000000000000000000001 1 0000000C 0
> 3 eth1 ff0200000000000000000001ff000000 3 00000004 0
> 3 eth1 ff020000000000000000000000000002 2 00000004 0
> 3 eth1 ff020000000000000000000000000202 1 00000004 0
> 3 eth1 ff0200000000000000000001ffca90c1 3 00000004 0
> 3 eth1 ff020000000000000000000000000001 1 0000000C 0
> 4 eth2 ff0200000000000000000001ff000000 1 00000004 0
> 4 eth2 ff020000000000000000000000000002 1 00000004 0
> 4 eth2 ff020000000000000000000000000202 1 00000004 0
> 4 eth2 ff0200000000000000000001ffca90c2 1 00000004 0
> 4 eth2 ff020000000000000000000000000001 1 0000000C 0
> 5 eth3 ff020000000000000000000000000002 1 00000004 0
> 5 eth3 ff020000000000000000000000000202 1 00000004 0
> 5 eth3 ff0200000000000000000001ffca90c3 1 00000004 0
> 5 eth3 ff020000000000000000000000000001 1 0000000C 0
> 7 eth5 ff020000000000000000000000000002 1 00000004 0
> 7 eth5 ff020000000000000000000000000001 1 0000000C 0
> 8 eth6 ff0200000000000000000001ff000000 3 00000004 0
> 8 eth6 ff0200000000000000000001ffca3c42 3 00000004 0
> 8 eth6 ff020000000000000000000000000001 1 0000000C 0
> 9 eth7 ff020000000000000000000000000002 1 00000004 0
> 9 eth7 ff020000000000000000000000000001 1 0000000C 0
> 10 sit0 ff020000000000000000000000000001 1 0000000C 0
> 12 sixxs ff020000000000000000000000000002 1 00000004 0
> 12 sixxs ff020000000000000000000000000001 1 0000000C 0
> 13 vlan60 ff020000000000000000000000000002 1 00000004 0
> 13 vlan60 ff0200000000000000000001ff000000 3 00000004 0
> 13 vlan60 ff0200000000000000000001ffca3c42 3 00000004 0
> 13 vlan60 ff020000000000000000000000000001 1 0000000C 0
> 14 tun6to4 ff020000000000000000000000000001 1 0000000C 0
>
> Rhe setsockopt() call looks OK to me (..\10.. means ifindex 8 which is the correct one) and radvd is giving the correct information to the kernel, but something goes wrong. I cannot imagine why. The kernel code looks OK, and it works fine for all the other active interface.
>
> radvd version: 1.1
> soekris2:~ # uname -a
> Linux soekris2 2.6.27.7-isj #2 SMP Tue Feb 17 18:04:18 CET 2009 i586 i586 i386 GNU/Linux
>
>
> I am not sure if there is something wrong in my configuration, or if I am looking at an obscure kernel bug.
>
> Do anyone recognise this error, or have any advice?
>
> /isj
>
>
--
Pekka Savola "You each name yourselves king, yet the
Netcore Oy kingdom bleeds."
Systems. Networks. Security. -- George R.R. Martin: A Clash of Kings
More information about the radvd-devel-l
mailing list