[radvd-devel-l] resetting ipv6-allrouters membership on eth6
Ivan Skytte Jørgensen
isj-radvddev at i1.dk
Tue Apr 27 04:07:47 EDT 2010
[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
More information about the radvd-devel-l
mailing list