]> granicus.if.org Git - pdns/commitdiff
clean up a bit, plus optimize /32 and /128 cases
authorbert hubert <bert.hubert@netherlabs.nl>
Fri, 4 Sep 2015 11:29:14 +0000 (13:29 +0200)
committerbert hubert <bert.hubert@netherlabs.nl>
Fri, 4 Sep 2015 11:29:14 +0000 (13:29 +0200)
pdns/iputils.cc

index 6e602090974bdc0d3862571a1b07296b761b68ca..d54257dc8390a9d3bec4e29ac06b67d49c12e121 100644 (file)
@@ -166,19 +166,18 @@ void ComboAddress::truncate(unsigned int bits)
   uint8_t* start;
   int len=4;
   if(sin4.sin_family==AF_INET) {
-    if(bits > 32)
+    if(bits >= 32)
       return;
     start = (uint8_t*)&sin4.sin_addr.s_addr;
     len=4;
   }
   else {
-    if(bits > 128)
+    if(bits >= 128)
       return;
     start = (uint8_t*)&sin6.sin6_addr.s6_addr;
     len=16;
   }
 
-
   auto tozero= len*8 - bits; // if set to 22, this will clear 1 byte, as it should
 
   memset(start + len - tozero/8, 0, tozero/8); // blot out the whole bytes on the right
@@ -188,8 +187,5 @@ void ComboAddress::truncate(unsigned int bits)
   // a b c d, to truncate to 22 bits, we just zeroed 'd' and need to zero 2 bits from c
   // so and by '11111100', which is ~((1<<2)-1)  = ~3
   uint8_t* place = start + len - 1 - tozero/8; 
-
-
-
   *place &= (~((1<<bitsleft)-1));
 }