aboutsummaryrefslogtreecommitdiff
path: root/scripts/rpki/resource_set.py
diff options
context:
space:
mode:
authorRob Austein <sra@hactrn.net>2007-10-01 06:21:13 +0000
committerRob Austein <sra@hactrn.net>2007-10-01 06:21:13 +0000
commit9162534362e2ff6ff3b54625ee3d3e2f778d1e8b (patch)
treec87e18d6365cceda9151fa18b2f84af915847233 /scripts/rpki/resource_set.py
parentf720a81de18f2703ead63747e99665a9a9076d0a (diff)
Checkpoint
svn path=/scripts/rpki/resource_set.py; revision=1063
Diffstat (limited to 'scripts/rpki/resource_set.py')
-rw-r--r--scripts/rpki/resource_set.py27
1 files changed, 15 insertions, 12 deletions
diff --git a/scripts/rpki/resource_set.py b/scripts/rpki/resource_set.py
index b805fb97..45fa096e 100644
--- a/scripts/rpki/resource_set.py
+++ b/scripts/rpki/resource_set.py
@@ -56,28 +56,31 @@ class resource_range_ip(resource_range):
represented as prefixes are written as prefixes on output.
"""
- def __str__(self):
+ def _prefixlen(self):
mask = self.min ^ self.max
- prefixlen = self.min.bits
+ prefixlen = self.addr_type.bits
while mask & 1:
prefixlen -= 1
mask >>= 1
if mask:
+ return -1
+ else:
+ return prefixlen
+
+ def __str__(self):
+ prefixlen = self._prefixlen()
+ if prefixlen < 0:
return str(self.min) + "-" + str(self.max)
else:
return str(self.min) + "/" + str(prefixlen)
def to_tuple(self):
- mask = self.min ^ self.max
- if (mask & (~mask + 1)) <= 1:
- n = self.bits
- while mask:
- n -= 1
- mask >>= 1
- return ("addressPrefix", _long2bs(self.min, self.bits, prefixlen = n))
+ prefixlen = self._prefixlen()
+ if prefixlen < 0:
+ return ("addressRange", (_long2bs(self.min, self.addr_type.bits, strip = 0),
+ _long2bs(self.max, self.addr_type.bits, strip = 1)))
else:
- return ("addressRange", (_long2bs(self.min, self.bits, strip = 0),
- _long2bs(self.max, self.bits, strip = 1)))
+ return ("addressPrefix", _long2bs(self.min, self.addr_type.bits, prefixlen = prefixlen))
class resource_range_ipv4(resource_range_ip):
"""Range of IPv4 addresses."""
@@ -313,7 +316,7 @@ def _long2bs(number, addrlen, prefixlen = None, strip = None):
assert prefixlen is None or strip is None
bs = []
while number:
- bs.append(number & 1)
+ bs.append(int(number & 1))
number >>= 1
if addrlen > len(bs):
bs.extend((0 for i in xrange(addrlen - len(bs))))