diff options
author | Rob Austein <sra@hactrn.net> | 2007-07-02 23:18:30 +0000 |
---|---|---|
committer | Rob Austein <sra@hactrn.net> | 2007-07-02 23:18:30 +0000 |
commit | 7a28541a983111daa517850a2feb1dc7a0e62dc8 (patch) | |
tree | 07514947017959e9982aafc60ef5a935f739df86 /scripts/xml-parse-test.py | |
parent | f11392b287ca424c04bc3571306445b3b92211df (diff) |
Checkpoint
svn path=/scripts/up-down-protocol-samples/issue_response.xml; revision=709
Diffstat (limited to 'scripts/xml-parse-test.py')
-rwxr-xr-x | scripts/xml-parse-test.py | 20 |
1 files changed, 11 insertions, 9 deletions
diff --git a/scripts/xml-parse-test.py b/scripts/xml-parse-test.py index 52e9d65f..ced4954e 100755 --- a/scripts/xml-parse-test.py +++ b/scripts/xml-parse-test.py @@ -1,6 +1,6 @@ # $Id$ -import base64, glob, math, os, re, socket, struct, xml.sax +import base64, glob, os, re, socket, struct, xml.sax def relaxng(xml, rng): i, o = os.popen4(("xmllint", "--noout", "--relaxng", rng, "-")) @@ -63,23 +63,25 @@ class rpki_updown_resource_set_ip(rpki_updown_resource_set): if r: min = self.pton(r.group(1)) prefixlen = int(r.group(2)) - mask = (1 << (self.bitlen - prefixlen)) - 1 + mask = (1 << (self.bits - prefixlen)) - 1 assert (min & mask) == 0, "Resource not in canonical form: %s" % (elt) max = min | mask return self.range(min, max) raise RuntimeError, 'Bad IP resource "%s"' % (elt) def tostr(self, elt): - if elt.min == elt.max: - return self.ntop(elt.min) + "/" + str(self.bitlen) mask = elt.min ^ elt.max - if mask & -mask == 1 and ((mask + 1) & -(mask + 1)) == (mask + 1): - return self.ntop(elt.min) + "/" + str(self.bitlen - int(math.log(mask + 1, 2))) - else: + prefixlen = self.bits + while mask & 1: + prefixlen -= 1 + mask >>= 1 + if mask: return self.ntop(elt.min) + "-" + self.ntop(elt.max) + else: + return self.ntop(elt.min) + "/" + str(prefixlen) class rpki_updown_resource_set_ipv4(rpki_updown_resource_set_ip): - bitlen = 32 + bits = 32 def pton(self, x): r = struct.unpack("!I", socket.inet_pton(socket.AF_INET, x)) @@ -89,7 +91,7 @@ class rpki_updown_resource_set_ipv4(rpki_updown_resource_set_ip): return socket.inet_ntop(socket.AF_INET, struct.pack("!I", x)) class rpki_updown_resource_set_ipv6(rpki_updown_resource_set_ip): - bitlen = 128 + bits = 128 def pton(self, x): r = struct.unpack("!QQ", socket.inet_pton(socket.AF_INET6, x)) |