From owner-svn-src-all@FreeBSD.ORG Mon Apr 6 17:45:30 2009 Return-Path: Delivered-To: svn-src-all@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 51A21106571C; Mon, 6 Apr 2009 17:45:30 +0000 (UTC) (envelope-from rwatson@FreeBSD.org) Received: from cyrus.watson.org (cyrus.watson.org [65.122.17.42]) by mx1.freebsd.org (Postfix) with ESMTP id 2511B8FC17; Mon, 6 Apr 2009 17:45:30 +0000 (UTC) (envelope-from rwatson@FreeBSD.org) Received: from fledge.watson.org (fledge.watson.org [65.122.17.41]) by cyrus.watson.org (Postfix) with ESMTPS id CB7E746B03; Mon, 6 Apr 2009 13:45:29 -0400 (EDT) Date: Mon, 6 Apr 2009 18:45:29 +0100 (BST) From: Robert Watson X-X-Sender: robert@fledge.watson.org To: Randall Stewart In-Reply-To: <5EEC0668-D1C4-45E8-AFC1-959AE3E8715E@lakerest.net> Message-ID: References: <200904061427.n36ERTVF074015@svn.freebsd.org> <1239030459.1946.4.camel@localhost> <5EEC0668-D1C4-45E8-AFC1-959AE3E8715E@lakerest.net> User-Agent: Alpine 2.00 (BSF 1167 2008-08-23) MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII; format=flowed Cc: svn-src-head@FreeBSD.org, Randall Stewart , svn-src-all@FreeBSD.org, src-committers@FreeBSD.org, Coleman Kane Subject: Re: svn commit: r190775 - head/sbin/route X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 06 Apr 2009 17:45:30 -0000 On Mon, 6 Apr 2009, Randall Stewart wrote: >> I presume you meant "NOT 10.2/15" here? Correct me if I'm wrong, but that's >> what I gathered by the discussion of "the bug" in the previous thread. > > It would have actually done any number of ones... basically looking at the > bottom number of 0 bits and that would be the / value. > > So depending on what number you put with 10.x (for x) you could get a > variety of results.. > > 10.2 would == 10.2/17 > 10.4 would == 10.2/18 > > etc. > > This is not the correct behavior.. even though it might be technically right > with regard to CIDR. > > Now as far as the old class based routings go.. this is a problem since the > two schemes are at odds. Perhaps I'm sort of old-fashioned, but I would generally expect: (1) No netmask specified -- use class to determine netmask (2) netmask specified using -net 192.168/20 -- use /20 (3) netmask specified using -netmask -- use the -netmask argument. I guess I just don't administer routers very much anymore, but is using the last set bit a commonly used way to name networks these days, as opposed to explicitly setting the netmask with /whatever? Robert N M Watson Computer Laboratory University of Cambridge > > We have for a long time had doing > > route add -net 10.2.0.0 be equal to adding 10.2/16 > > But if you follow the old Class based routing then > the upper 4 bits of the address needs to be examined to > determine if its a /8, /16 etc. > > That is incorrect in a CIDR world.. but I don't see a way > to make the two schemes work together. And since previous to 7.1 > the above worked.. I think this last fix is the right approach.. > > R > >>> >>> 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); >>> >> >> -- >> Coleman Kane > > ------------------------------ > Randall Stewart > 803-317-4952 (cell) > 803-345-0391(direct) > >