svn commit: r190775 - head/sbin/route

Randall Stewart rrs at FreeBSD.org
Mon Apr 6 07:27:29 PDT 2009


Author: rrs
Date: Mon Apr  6 14:27:28 2009
New Revision: 190775
URL: http://svn.freebsd.org/changeset/base/190775

Log:
  Ok, looking at the solution a bit closer, the level
  calculation was too agressive. Instead we should only
  look at each nibble. This makes it so we make
  10.2.0.0 become 10.2/16 NOT 10.2/17.
  
  Need to explore the non-cidr address issue. The two
  may not be seperable..
  
  MFC after:	1 week

Modified:
  head/sbin/route/route.c

Modified: head/sbin/route/route.c
==============================================================================
--- head/sbin/route/route.c	Mon Apr  6 14:12:22 2009	(r190774)
+++ head/sbin/route/route.c	Mon Apr  6 14:27:28 2009	(r190775)
@@ -808,15 +808,15 @@ inet_makenetandmask(net, sin, bits)
 	 * CIDR address.
 	 */
 	if ((bits == 0)  && (addr != 0)) {
-		int i, j;
-		for(i=0,j=1; i<32; i++)  {
+		u_long i, j;
+		for(i=0,j=0xff; i<4; i++)  {
 			if (addr & j) {
 				break;
 			}
-			j <<= 1;
+			j <<= 8;
 		}
 		/* i holds the first non zero bit */
-		bits = 32 - i;	
+		bits = 32 - (i*8);	
 	}
 	mask = 0xffffffff << (32 - bits);
 


More information about the svn-src-head mailing list