diff options
author | Rob Austein <sra@hactrn.net> | 2012-05-03 17:39:35 +0000 |
---|---|---|
committer | Rob Austein <sra@hactrn.net> | 2012-05-03 17:39:35 +0000 |
commit | 84c82bea2b5c77202e5712511e9476a54c83e67a (patch) | |
tree | 0756467ea4d44babdcda43ebe27611a1c0739d48 /scripts/iana-to-csv.py | |
parent | 344c3f6a9fc40cff4d6c3ae31d35158aacb214f8 (diff) |
Handle legacy via sixth pseudo-RIR named "LEGACY," at least for now.
svn path=/branches/tk33/; revision=4463
Diffstat (limited to 'scripts/iana-to-csv.py')
-rw-r--r-- | scripts/iana-to-csv.py | 20 |
1 files changed, 11 insertions, 9 deletions
diff --git a/scripts/iana-to-csv.py b/scripts/iana-to-csv.py index 2bfe2bf8..a9aee0b9 100644 --- a/scripts/iana-to-csv.py +++ b/scripts/iana-to-csv.py @@ -34,9 +34,10 @@ tag_designation = ns("designation") tag_record = ns("record") tag_number = ns("number") tag_prefix = ns("prefix") +tag_status = ns("status") handles = {} -rirs = {} +rirs = { "LEGACY" : resource_bag() } for rir in ("AfriNIC", "APNIC", "ARIN", "LACNIC", "RIPE NCC"): handle = rir.split()[0].upper() @@ -53,12 +54,12 @@ for record in iterate_xml("as-numbers.xml", tag_record): for record in iterate_xml("ipv4-address-space.xml", tag_record): designation = record.findtext(tag_designation) - if designation in handles: - prefix = record.findtext(tag_prefix) - p, l = prefix.split("/") - assert l == "8", "Violated /8 assumption: %r" % prefix - rirs[handles[designation]] |= resource_bag.from_str("%d.0.0.0/8" % int(p)) - + if record.findtext(tag_status) != "RESERVED": + prefix, prefixlen = [int(i) for i in record.findtext(tag_prefix).split("/")] + if prefixlen != 8: + raise ValueError("%s violated /8 assumption" % record.findtext(tag_prefix)) + rirs[handles.get(designation, "LEGACY")] |= resource_bag.from_str("%d.0.0.0/8" % prefix) + for record in iterate_xml("ipv6-unicast-address-assignments.xml", tag_record): description = record.findtext(tag_description) if record.findtext(tag_description) in handles: @@ -70,8 +71,9 @@ assert all(r in rirs for r, p in erx) erx_overrides = resource_bag.from_str(",".join(p for r, p in erx), allow_overlap = True) for rir in rirs: - rirs[rir] -= erx_overrides - rirs[rir] |= resource_bag.from_str(",".join(p for r, p in erx if r == rir), allow_overlap = True) + if rir != "LEGACY": + rirs[rir] -= erx_overrides + rirs[rir] |= resource_bag.from_str(",".join(p for r, p in erx if r == rir), allow_overlap = True) for rir, bag in rirs.iteritems(): for p in bag.v4: |