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
This commit is contained in:
parent
38fb1637a3
commit
5695251a13
Notes:
svn2git
2020-12-20 02:59:44 +00:00
svn path=/head/; revision=190775
@ -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);
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user