Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 6 Apr 2009 09:33:33 -0400
From:      Randall Stewart <rrs@lakerest.net>
To:        Robert Watson <rwatson@FreeBSD.org>
Cc:        svn-src-head@FreeBSD.org, Randall Stewart <rrs@FreeBSD.org>, svn-src-all@FreeBSD.org, src-committers@FreeBSD.org
Subject:   Re: svn commit: r190758 - head/sbin/route
Message-ID:  <B1BDC35F-546A-4261-B34C-008C1E86A580@lakerest.net>
In-Reply-To: <alpine.BSF.2.00.0904061139110.34905@fledge.watson.org>
References:  <200904061009.n36A9K6l063517@svn.freebsd.org> <alpine.BSF.2.00.0904061139110.34905@fledge.watson.org>

next in thread | previous in thread | raw e-mail | index | archive | help
Sure it should..

If you do

route add -net 10.0.0.0 it will work.. Hmmm

I wonder if more is not needed though.. let me think on this.

What strange about the whole thing is that the
behavior I put in used to work in previous releases... its
rather strange actually..

I reviewed several of the past commits and I can't see what broke
it.


R
On Apr 6, 2009, at 6:39 AM, Robert Watson wrote:

>
> On Mon, 6 Apr 2009, Randall Stewart wrote:
>
>> Author: rrs
>> Date: Mon Apr  6 10:09:20 2009
>> New Revision: 190758
>> URL: http://svn.freebsd.org/changeset/base/190758
>>
>> Log:
>> Class based addressing went out in the early 90's. Basically
>> if a entry is not route add -net xxx/bits then we should use
>> the addr (xxx) to establish the number of bits by looking at
>> the first non-zero bit. So if we enter
>> route add -net 10.1.1.0 10.1.3.5
>> this is the same as doing
>> route add -net 10.1.1.0/24
>> Since the 8th bit (zero counting) is set to 1 we set bits
>> to 32-8.
>>
>> Users can of course still use the /x to change this behavior
>> or in cases where the network is in the trailing part
>> of the address, a "netmask" argument can be supplied to
>> override what is established from the interpretation of the
>> address itself. e.g:
>>
>> route add -net 10.1.1.8 -netmask 0xff00ffff
>>
>> should overide and place the proper CIDR mask in place.
>
> Does this maintain compatibility for people who may still  
> mysteriously be specifying class-based IPs and netmasks in  
> configuration files?  If not, this should not be MFC'd...
>
> Robert N M Watson
> Computer Laboratory
> University of Cambridge
>
>>
>> PR:		131365
>> MFC after:	1 week
>>
>> Modified:
>> head/sbin/route/route.c
>>
>> Modified: head/sbin/route/route.c
>> = 
>> = 
>> = 
>> = 
>> = 
>> = 
>> = 
>> = 
>> = 
>> =====================================================================
>> --- head/sbin/route/route.c	Mon Apr  6 07:13:26 2009	(r190757)
>> +++ head/sbin/route/route.c	Mon Apr  6 10:09:20 2009	(r190758)
>> @@ -713,7 +713,7 @@ newroute(argc, argv)
>> #ifdef INET6
>> 		if (af == AF_INET6) {
>> 			rtm_addrs &= ~RTA_NETMASK;
>> -			memset((void *)&so_mask, 0, sizeof(so_mask));
>> +				memset((void *)&so_mask, 0, sizeof(so_mask));
>> 		}
>> #endif
>> 	}
>> @@ -803,21 +803,22 @@ inet_makenetandmask(net, sin, bits)
>> 		addr = net << IN_CLASSC_NSHIFT;
>> 	else
>> 		addr = net;
>> -
>> -	if (bits != 0)
>> -		mask = 0xffffffff << (32 - bits);
>> -	else if (net == 0)
>> -		mask = 0;
>> -	else if (IN_CLASSA(addr))
>> -		mask = IN_CLASSA_NET;
>> -	else if (IN_CLASSB(addr))
>> -		mask = IN_CLASSB_NET;
>> -	else if (IN_CLASSC(addr))
>> -		mask = IN_CLASSC_NET;
>> -	else if (IN_MULTICAST(addr))
>> -		mask = IN_CLASSD_NET;
>> -	else
>> -		mask = 0xffffffff;
>> +	/*
>> +	 * If no /xx was specified we must cacluate the
>> +	 * CIDR address.
>> +	 */
>> +	if ((bits == 0)  && (addr != 0)) {
>> +		int i, j;
>> +		for(i=0,j=1; i<32; i++)  {
>> +			if (addr & j) {
>> +				break;
>> +			}
>> +			j <<= 1;
>> +		}
>> +		/* i holds the first non zero bit */
>> +		bits = 32 - i;
>> +	}
>> +	mask = 0xffffffff << (32 - bits);
>>
>> 	sin->sin_addr.s_addr = htonl(addr);
>> 	sin = &so_mask.sin;
>>
>

------------------------------
Randall Stewart
803-317-4952 (cell)
803-345-0391(direct)




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?B1BDC35F-546A-4261-B34C-008C1E86A580>