[ipv6] Use /64 for link-local instead of /10
authorMatthew Iselin <matthew@theiselins.net>
Sat, 16 Jul 2011 12:37:06 +0000 (22:37 +1000)
committerMarty Connor <mdc@etherboot.org>
Thu, 21 Jul 2011 02:49:25 +0000 (22:49 -0400)
Linux uses a /64 prefix for their link-local addresses, instead of the
"standard" /10. This makes comparing link-local addresses easier and
in particular avoids the case where the link-local prefix straddles a
byte boundary.

Signed-off-by: Matthew Iselin <matthew@theiselins.net>
Signed-off-by: Marty Connor <mdc@etherboot.org>
src/usr/ip6mgmt.c

index 97e8146..afcbe39 100644 (file)
@@ -70,8 +70,10 @@ int ip6_autoconf ( struct net_device *netdev ) {
        
        DBG( "ipv6 autoconfig address is %s\n", inet6_ntoa(ip6addr) );
        
-       /* Add as a route. */
-       add_ipv6_address ( netdev, ip6addr, 10, ip6addr, ip6zero );
+       /* Add as a route. It turns out Linux actually uses /64 for these, even
+        * though they are technically a /10. It does make routing easier, as
+        * /10 straddles a byte boundary. */
+       add_ipv6_address ( netdev, ip6addr, 64, ip6addr, ip6zero );
        
        /* Solicit routers on the network. */
        if ( ( rc = ndp_send_rsolicit ( netdev, &monojob ) ) == 0 ) {