Author: melifaro
Date: Fri Jan 16 11:17:30 2015
New Revision: 277241
URL: https://svnweb.freebsd.org/changeset/base/277241

Log:
  Eliminate incorrect IPv6 mask guessing:
  RFC 2374 concept of 'IPv6 Aggregatable Global Unicast Address Format' was
  deprecated by RFC 3587 12 years ago.
  
  Before:
  
  15:06 [1] edge# netstat -rn6 | grep 2a02:6b8::
  2a02:6b8::/32                     2a02:978:2::1                 UGS         
em0
  15:06 [1] edge# route -6n get 2a02:6b8::
  route: writing to routing socket: No such process
  
  After:
  15:07 [1] edge# /usr/obj/usr/src/sbin/route/route -n6 get 2a02:6b8::
     route to: 2a02:6b8::
  destination: 2a02:6b8::
         mask: ffff:ffff::
      gateway: 2a02:978:2::1
          fib: 0
    interface: em0
        flags: <UP,GATEWAY,DONE,STATIC>
   recvpipe  sendpipe  ssthresh  rtt,msec    mtu        weight    expire
         0         0         0         0      1500         1         0
  
  MFC after:    2 weeks

Modified:
  head/sbin/route/route.c

Modified: head/sbin/route/route.c
==============================================================================
--- head/sbin/route/route.c     Fri Jan 16 10:49:27 2015        (r277240)
+++ head/sbin/route/route.c     Fri Jan 16 11:17:30 2015        (r277241)
@@ -1137,19 +1137,11 @@ inet_makenetandmask(u_long net, struct s
 static int
 inet6_makenetandmask(struct sockaddr_in6 *sin6, const char *plen)
 {
-       struct in6_addr in6;
 
        if (plen == NULL) {
                if (IN6_IS_ADDR_UNSPECIFIED(&sin6->sin6_addr) &&
-                   sin6->sin6_scope_id == 0) {
+                   sin6->sin6_scope_id == 0)
                        plen = "0";
-               } else if ((sin6->sin6_addr.s6_addr[0] & 0xe0) == 0x20) {
-                       /* aggregatable global unicast - RFC2374 */
-                       memset(&in6, 0, sizeof(in6));
-                       if (!memcmp(&sin6->sin6_addr.s6_addr[8],
-                                   &in6.s6_addr[8], 8))
-                               plen = "64";
-               }
        }
 
        if (plen == NULL || strcmp(plen, "128") == 0)
_______________________________________________
svn-src-all@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to "svn-src-all-unsubscr...@freebsd.org"

Reply via email to