tags 599869 + moreinfo
thanks
Hello,
Le mardi 12 octobre 2010 01:22:07 David Härdeman, vous avez écrit :
> Package: ndisc6
> Version: 0.9.8-1
> Severity: important
> Tags: ipv6
>
> Running rdisc6 (from ndisc6, version 0.9.8-1) on an amd64 host:
>
> Soliciting ff02::2 (ff02::2) on wlan0...
>
> Hop limit : 255 ( 0xff)
> Stateful address conf. : No
> Stateful other conf. : Yes
> Router preference : medium
> Router lifetime : 1800 (0x00000708) seconds
> Reachable time : unspecified (0x00000000)
> Retransmit time : unspecified (0x00000000)
> Prefix : <my-ipv6-prefix>::/64
> Valid time : 7200 (0x00001c20) seconds
> Pref. time : 3600 (0x00000e10) seconds
> MTU : 1472 bytes (valid)
> Source link-layer address: <router-mac>
> from <router-link-local-ipv6>
>
> Running rdisc6 (from ndisc6, version 0.9.7-1) on a sheevaplug (armv5tel)
> host:
>
> Soliciting ff02::2 (ff02::2) on eth0...
>
> Hop limit : 255 ( 0xff)
> Stateful address conf. : No
> Stateful other conf. : Yes
> Router preference : medium
> Router lifetime : 1800 (0x00000708) seconds
> Reachable time : 1800 (0x00000708) milliseconds
> Retransmit time : unspecified (0x00000000)
> Prefix : <my-ipv6-prefix>::/64
> Valid time : 16576 (0x000040c0) seconds
> Pref. time : 7200 (0x00001c20) seconds
> MTU : 0 bytes (invalid)
> Source link-layer address: <router-mac>
> from <router-link-local-ipv6>
>
>
> Note the difference in the three lines following "Prefix".
It's not just that. The reachable time values are different as well.
> Both hosts are connected to the same switch and get identical router
> advertisement messages over the wire. Also, both kernels manage to get
> this right. I suspect the bug has to do with the unusual struct-packing
> behaviour on arm as compared to x86.
That's easy to verify. Just check the respective values of
sizeof(struct nd_router_advert),
sizeof(struct nd_opt_prefix_info) and
sizeof(struct nd_opt_mtu)
on both systems, e.g.:
% cat << EOF | gcc -x c -
#include <stdio.h>
#include <netinet/icmp6.h>
int main (void)
{
printf ("%zu,%zu,%zu\n",
sizeof(struct nd_router_advert),
sizeof(struct nd_opt_prefix_info),
sizeof(struct nd_opt_mtu));
return 0;
}
EOF
% ./a.out
The correct result is 16,32,8.
Best regards,
--
Rémi Denis-Courmont
http://www.remlab.net/
http://fi.linkedin.com/in/remidenis
--
To UNSUBSCRIBE, email to [email protected]
with a subject of "unsubscribe". Trouble? Contact [email protected]