svn commit: r277241 - head/sbin/route

Alexander V. Chernikov melifaro at FreeBSD.org
Fri Jan 16 11:17:31 UTC 2015


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)


More information about the svn-src-all mailing list