aboutsummaryrefslogtreecommitdiff
path: root/scripts/rpki
diff options
context:
space:
mode:
Diffstat (limited to 'scripts/rpki')
-rw-r--r--scripts/rpki/left_right.py2
-rw-r--r--scripts/rpki/up_down.py11
2 files changed, 11 insertions, 2 deletions
diff --git a/scripts/rpki/left_right.py b/scripts/rpki/left_right.py
index ce26758d..8bd8daf4 100644
--- a/scripts/rpki/left_right.py
+++ b/scripts/rpki/left_right.py
@@ -360,7 +360,7 @@ class parent_elt(data_elt):
bsc = bsc_elt.sql_fetch(gctx.db, gctx.cur, self.bsc_id)
if bsc is None:
raise rpki.exceptions.NotFound, "Could not find BSC %s" % self.bsc_id
- q_msg = rpki.up_down.message_pdu.make_query(sender = "tweedledee", recipient = "tweedledum", payload = q_pdu)
+ q_msg = rpki.up_down.message_pdu.make_query(q_pdu)
q_elt = q_msg.toXML()
rpki.relaxng.up_down.assertValid(q_elt)
q_cms = rpki.cms.xml_encode(q_elt, bsc.private_key_id, bsc.signing_cert)
diff --git a/scripts/rpki/up_down.py b/scripts/rpki/up_down.py
index 91e82438..c904e5fe 100644
--- a/scripts/rpki/up_down.py
+++ b/scripts/rpki/up_down.py
@@ -154,6 +154,7 @@ class list_pdu(base_elt):
return []
def serve_pdu(self, gctx, q_msg, r_msg, child):
+ """Serve one "list" PDU."""
r_msg.payload = list_response_pdu()
irdb_as, irdb_v4, irdb_v6 = rpki.left_right.irdb_query(gctx, child.self_id, child.child_id)
for ca_id in rpki.sql.fetch_column(gctx.cur, "SELECT ca_id FROM ca WHERE ca.parent_id = parent.parent_id AND parent.self_id = %s" % child.self_id):
@@ -175,6 +176,12 @@ class list_pdu(base_elt):
rc.issuer = ca_detail.latest_ca_cert
r_msg.payload.classes.append(rc)
+ @classmethod
+ def query(cls, gctx, parent):
+ """Compose a "list" query to parent."""
+ self = cls()
+ return parent.query_up_down(gctx, self)
+
class class_response_syntax(base_elt):
"""Syntax for Up-Down protocol "list_response" and "issue_response" PDUs."""
@@ -409,11 +416,13 @@ class message_pdu(base_elt):
def serve_top_level(self, gctx, child):
r_msg = message_pdu()
+ r_msg.sender = self.receiver
+ r_msg.receiver = self.sender
self.payload.serve_pdu(gctx, self, r_msg, child)
return r_msg
@classmethod
- def make_query(cls, sender, recipient, payload):
+ def make_query(cls, payload, sender = "tweedledee", recipient = "tweedledum"):
assert not self.type2name[type(payload)].endswith("_response")
self = cls()
self.sender = sender