On Mon, 2009-04-06 at 14:27 +0000, Randall Stewart wrote:
> 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.

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.

>   
>   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

Attachment: signature.asc
Description: This is a digitally signed message part

Reply via email to