aboutsummaryrefslogtreecommitdiff
path: root/scripts/rpki/left_right.py
diff options
context:
space:
mode:
Diffstat (limited to 'scripts/rpki/left_right.py')
-rw-r--r--scripts/rpki/left_right.py62
1 files changed, 13 insertions, 49 deletions
diff --git a/scripts/rpki/left_right.py b/scripts/rpki/left_right.py
index 4c950951..069835a3 100644
--- a/scripts/rpki/left_right.py
+++ b/scripts/rpki/left_right.py
@@ -465,15 +465,15 @@ class route_origin_elt(data_elt):
"""Generate <route_origin/> element."""
return self.make_elt()
-class resource_class_elt(base_elt):
- """<resource_class/> element."""
+class list_resources_elt(base_elt):
+ """<list_resources/> element."""
- element_name = "resource_class"
- attributes = ("as", "ipv4", "ipv6", "subject_name")
+ element_name = "list_resources"
+ attributes = ("type", "self_id", "child_id", "valid_until", "as", "ipv4", "ipv6", "subject_name")
def startElement(self, stack, name, attrs):
- """Handle <resource_class/> element."""
- assert name == "resource_class", "Unexpected name %s, stack %s" % (name, stack)
+ """Handle <list_resources/> element."""
+ assert name == "list_resources", "Unexpected name %s, stack %s" % (name, stack)
self.read_attrs(attrs)
if self.as is not None:
self.as = rpki.resource_set.resource_set_as(self.as)
@@ -482,40 +482,9 @@ class resource_class_elt(base_elt):
if self.ipv6 is not None:
self.ipv6 = rpki.resource_set.resource_set_ipv6(self.ipv6)
- def endElement(self, stack, name, text):
- """Handle <resource_class/> element."""
- assert name == "resource_class", "Unexpected name %s, stack %s" % (name, stack)
- stack.pop()
-
- def toXML(self):
- """Generate <resource_class/> element."""
- return self.make_elt()
-
-class list_resources_elt(base_elt):
- """<list_resources/> element."""
-
- element_name = "list_resources"
- attributes = ("type", "self_id", "child_id", "valid_until")
-
- def __init__(self):
- self.resources = []
-
- def startElement(self, stack, name, attrs):
- """Handle <list_resources/> element."""
- if name == "resource_class":
- rc = resource_class_elt()
- self.resources.append(rc)
- stack.append(rc)
- rc.startElement(stack, name, attrs)
- else:
- assert name == "list_resources", "Unexpected name %s, stack %s" % (name, stack)
- self.read_attrs(attrs)
-
def toXML(self):
"""Generate <list_resources/> element."""
- elt = self.make_elt()
- elt.extend([i.toXML() for i in self.resources])
- return elt
+ return self.make_elt()
class report_error_elt(base_elt):
"""<report_error/> element."""
@@ -595,6 +564,11 @@ def irdb_query(gctx, self_id, child_id=None):
instead issue a query and set up a handler to receive the response.
For the moment, though, we're doing simple lock step and damn the
torpedos.
+
+ Not yet doing anything useful with validity interval or subject
+ name. Most likely this function should really be wrapped up in a
+ class that carries both the query result and also the intermediate state
+ needed for the event-driven code that this function will need to become.
"""
q_msg = msg_elt()
@@ -617,14 +591,4 @@ def irdb_query(gctx, self_id, child_id=None):
r_msg = rpki.left_right.sax_handler.saxify(r_elt)
if len(r_msg) != 0 or not isinstance(r_msg[0], list_resources_elt) or r_msg[0].type != "reply":
raise rpki.exceptions.BadIRDBReply, "Unexpected response to IRDB query: %s" % r_msg.toXML()
- as = rpki.resource_set.resource_set_as()
- ipv4 = rpki.resource_set.resource_set_ipv4()
- ipv6 = rpki.resource_set.resource_set_ipv6()
- for r in r_msg[0].resources:
- if r.as is not None:
- as.union(r.as)
- if r.ipv4 is not None:
- ipv4.union(r.ipv4)
- if r.ipv6 is not None:
- ipv6.union(r.ipv6)
- return as, ipv4, ipv6
+ return r_msg[0].as, r_msg[0].ipv4, r_msg[0].ipv6