aboutsummaryrefslogtreecommitdiff
path: root/scripts/rpki/up_down.py
diff options
context:
space:
mode:
Diffstat (limited to 'scripts/rpki/up_down.py')
-rw-r--r--scripts/rpki/up_down.py31
1 files changed, 22 insertions, 9 deletions
diff --git a/scripts/rpki/up_down.py b/scripts/rpki/up_down.py
index ef7d175d..91e82438 100644
--- a/scripts/rpki/up_down.py
+++ b/scripts/rpki/up_down.py
@@ -372,6 +372,17 @@ class message_pdu(base_elt):
version = 1
+ name2type = {
+ "list" : list_pdu,
+ "list_response" : list_response_pdu,
+ "issue" : issue_pdu,
+ "issue_response" : issue_response_pdu,
+ "revoke" : revoke_pdu,
+ "revoke_response" : revoke_response_pdu,
+ "error_response" : error_response_pdu }
+
+ type2name = dict((v,k) for k,v in name2type.items())
+
def toXML(self):
"""Generate payload of message PDU."""
elt = self.make_elt("message", "version", "sender", "recipient", "type")
@@ -390,15 +401,7 @@ class message_pdu(base_elt):
self.sender = attrs["sender"]
self.recipient = attrs["recipient"]
self.type = attrs["type"]
- self.payload = {
- "list" : list_pdu,
- "list_response" : list_response_pdu,
- "issue" : issue_pdu,
- "issue_response" : issue_response_pdu,
- "revoke" : revoke_pdu,
- "revoke_response" : revoke_response_pdu,
- "error_response" : error_response_pdu
- }[attrs["type"]]()
+ self.payload = self.name2type[attrs["type"]]()
stack.append(self.payload)
def __str__(self):
@@ -409,6 +412,16 @@ class message_pdu(base_elt):
self.payload.serve_pdu(gctx, self, r_msg, child)
return r_msg
+ @classmethod
+ def make_query(cls, sender, recipient, payload):
+ assert not self.type2name[type(payload)].endswith("_response")
+ self = cls()
+ self.sender = sender
+ self.recipient = recipient
+ self.payload = payload
+ self.type = self.type2name[type(payload)]
+ return self
+
class sax_handler(rpki.sax_utils.handler):
"""SAX handler for Up-Down protocol."""