aboutsummaryrefslogtreecommitdiff
path: root/rpkid/rpki
diff options
context:
space:
mode:
Diffstat (limited to 'rpkid/rpki')
-rw-r--r--rpkid/rpki/gctx.py6
-rw-r--r--rpkid/rpki/left_right.py23
-rw-r--r--rpkid/rpki/relaxng.py473
3 files changed, 245 insertions, 257 deletions
diff --git a/rpkid/rpki/gctx.py b/rpkid/rpki/gctx.py
index 4a1282bb..9ae896c5 100644
--- a/rpkid/rpki/gctx.py
+++ b/rpkid/rpki/gctx.py
@@ -64,8 +64,8 @@ class global_context(object):
rpki.log.trace()
q_msg = rpki.left_right.msg()
+ q_msg.type = "query"
q_msg.append(rpki.left_right.list_resources_elt())
- q_msg[0].type = "query"
q_msg[0].self_id = self_id
q_msg[0].child_id = child_id
q_cms = rpki.left_right.cms_msg.wrap(q_msg, self.rpkid_key, self.rpkid_cert)
@@ -76,7 +76,7 @@ class global_context(object):
url = self.irdb_url,
msg = q_cms)
r_msg = rpki.left_right.cms_msg.unwrap(der, (self.bpki_ta, self.irdb_cert))
- if len(r_msg) == 0 or not isinstance(r_msg[0], rpki.left_right.list_resources_elt) or r_msg[0].type != "reply":
+ if len(r_msg) == 0 or not isinstance(r_msg[0], rpki.left_right.list_resources_elt) or r_msg.type != "reply":
raise rpki.exceptions.BadIRDBReply, "Unexpected response to IRDB query: %s" % lxml.etree.tostring(r_msg.toXML(), pretty_print = True, encoding = "us-ascii")
return rpki.resource_set.resource_bag(
asn = r_msg[0].asn,
@@ -107,6 +107,8 @@ class global_context(object):
rpki.log.trace()
try:
q_msg = rpki.left_right.cms_msg.unwrap(query, (self.bpki_ta, self.irbe_cert))
+ if q_msg.type != "query":
+ raise rpki.exceptions.BadQuery, "Message type is not query"
r_msg = q_msg.serve_top_level(self)
reply = rpki.left_right.cms_msg.wrap(r_msg, self.rpkid_key, self.rpkid_cert)
self.sql_sweep()
diff --git a/rpkid/rpki/left_right.py b/rpkid/rpki/left_right.py
index 209302f4..78c080f5 100644
--- a/rpkid/rpki/left_right.py
+++ b/rpkid/rpki/left_right.py
@@ -106,7 +106,6 @@ class data_elt(base_elt, rpki.sql.sql_persistant):
for b in r_pdu.booleans:
setattr(r_pdu, b, False)
r_pdu.action = self.action
- r_pdu.type = "reply"
r_pdu.tag = self.tag
return r_pdu
@@ -178,8 +177,8 @@ class data_elt(base_elt, rpki.sql.sql_persistant):
"get" : self.serve_get,
"list" : self.serve_list,
"destroy" : self.serve_destroy }
- if self.type != "query" or self.action not in dispatch:
- raise rpki.exceptions.BadQuery, "Unexpected query: type %s, action %s" % (self.type, self.action)
+ if self.action not in dispatch:
+ raise rpki.exceptions.BadQuery, "Unexpected query: action %s" % self.action
dispatch[self.action](r_msg)
def unimplemented_control(self, *controls):
@@ -214,7 +213,7 @@ class self_elt(data_elt):
"""<self/> element."""
element_name = "self"
- attributes = ("action", "type", "tag", "self_id", "crl_interval", "regen_margin")
+ attributes = ("action", "tag", "self_id", "crl_interval", "regen_margin")
elements = ("extension_preference", "bpki_cert", "bpki_glue")
booleans = ("rekey", "reissue", "revoke", "run_now", "publish_world_now", "clear_extension_preferences")
@@ -442,7 +441,7 @@ class bsc_elt(data_elt):
"""<bsc/> (Business Signing Context) element."""
element_name = "bsc"
- attributes = ("action", "type", "tag", "self_id", "bsc_id", "key_type", "hash_alg", "key_length")
+ attributes = ("action", "tag", "self_id", "bsc_id", "key_type", "hash_alg", "key_length")
elements = ("signing_cert", "signing_cert_crl")
booleans = ("generate_keypair",)
@@ -514,7 +513,7 @@ class parent_elt(data_elt):
"""<parent/> element."""
element_name = "parent"
- attributes = ("action", "type", "tag", "self_id", "parent_id", "bsc_id", "repository_id",
+ attributes = ("action", "tag", "self_id", "parent_id", "bsc_id", "repository_id",
"peer_contact_uri", "sia_base", "sender_name", "recipient_name")
elements = ("bpki_cms_cert", "bpki_cms_glue", "bpki_https_cert", "bpki_https_glue")
booleans = ("rekey", "reissue", "revoke")
@@ -637,7 +636,7 @@ class child_elt(data_elt):
"""<child/> element."""
element_name = "child"
- attributes = ("action", "type", "tag", "self_id", "child_id", "bsc_id")
+ attributes = ("action", "tag", "self_id", "child_id", "bsc_id")
elements = ("bpki_cert", "bpki_glue")
booleans = ("reissue", )
@@ -733,7 +732,7 @@ class repository_elt(data_elt):
"""<repository/> element."""
element_name = "repository"
- attributes = ("action", "type", "tag", "self_id", "repository_id", "bsc_id", "peer_contact_uri")
+ attributes = ("action", "tag", "self_id", "repository_id", "bsc_id", "peer_contact_uri")
elements = ("bpki_cms_cert", "bpki_cms_glue", "bpki_https_cert", "bpki_https_glue")
sql_template = rpki.sql.template("repository", "repository_id", "self_id", "bsc_id", "peer_contact_uri",
@@ -826,7 +825,7 @@ class route_origin_elt(data_elt):
"""<route_origin/> element."""
element_name = "route_origin"
- attributes = ("action", "type", "tag", "self_id", "route_origin_id", "as_number", "ipv4", "ipv6")
+ attributes = ("action", "tag", "self_id", "route_origin_id", "as_number", "ipv4", "ipv6")
booleans = ("suppress_publication",)
sql_template = rpki.sql.template("route_origin", "route_origin_id", "ca_detail_id",
@@ -1036,7 +1035,7 @@ class list_resources_elt(base_elt):
"""<list_resources/> element."""
element_name = "list_resources"
- attributes = ("type", "self_id", "tag", "child_id", "valid_until", "asn", "ipv4", "ipv6", "subject_name")
+ attributes = ("self_id", "tag", "child_id", "valid_until", "asn", "ipv4", "ipv6", "subject_name")
valid_until = None
def startElement(self, stack, name, attrs):
@@ -1099,6 +1098,7 @@ class msg(list):
"""Handle left-right PDU."""
if name == "msg":
assert self.version == int(attrs["version"])
+ self.type = attrs["type"]
else:
elt = self.pdus[name]()
self.append(elt)
@@ -1117,13 +1117,14 @@ class msg(list):
def toXML(self):
"""Generate left-right PDU."""
- elt = lxml.etree.Element("{%s}msg" % (xmlns), nsmap = nsmap, version = str(self.version))
+ elt = lxml.etree.Element("{%s}msg" % (xmlns), nsmap = nsmap, version = str(self.version), type = self.type)
elt.extend([i.toXML() for i in self])
return elt
def serve_top_level(self, gctx):
"""Serve one msg PDU."""
r_msg = self.__class__()
+ r_msg.type = "reply"
for q_pdu in self:
q_pdu.gctx = gctx
q_pdu.serve_dispatch(r_msg)
diff --git a/rpkid/rpki/relaxng.py b/rpkid/rpki/relaxng.py
index 3e594d89..54f79a2a 100644
--- a/rpkid/rpki/relaxng.py
+++ b/rpkid/rpki/relaxng.py
@@ -22,20 +22,73 @@ left_right = lxml.etree.RelaxNG(lxml.etree.fromstring('''<?xml version="1.0" enc
<param name="maxInclusive">1</param>
</data>
</attribute>
- <zeroOrMore>
- <choice>
- <ref name="self_elt"/>
- <ref name="bsc_elt"/>
- <ref name="parent_elt"/>
- <ref name="child_elt"/>
- <ref name="repository_elt"/>
- <ref name="route_origin_elt"/>
- <ref name="list_resources_elt"/>
- <ref name="report_error_elt"/>
- </choice>
- </zeroOrMore>
+ <choice>
+ <group>
+ <attribute name="type">
+ <value>query</value>
+ </attribute>
+ <zeroOrMore>
+ <ref name="query_elt"/>
+ </zeroOrMore>
+ </group>
+ <group>
+ <attribute name="type">
+ <value>reply</value>
+ </attribute>
+ <zeroOrMore>
+ <ref name="reply_elt"/>
+ </zeroOrMore>
+ </group>
+ </choice>
</element>
</start>
+ <!-- PDUs allowed in a query -->
+ <define name="query_elt" combine="choice">
+ <ref name="self_query"/>
+ </define>
+ <define name="query_elt" combine="choice">
+ <ref name="bsc_query"/>
+ </define>
+ <define name="query_elt" combine="choice">
+ <ref name="parent_query"/>
+ </define>
+ <define name="query_elt" combine="choice">
+ <ref name="child_query"/>
+ </define>
+ <define name="query_elt" combine="choice">
+ <ref name="repository_query"/>
+ </define>
+ <define name="query_elt" combine="choice">
+ <ref name="route_origin_query"/>
+ </define>
+ <define name="query_elt" combine="choice">
+ <ref name="list_resources_query"/>
+ </define>
+ <!-- PDUs allowed in a reply -->
+ <define name="reply_elt" combine="choice">
+ <ref name="self_reply"/>
+ </define>
+ <define name="reply_elt" combine="choice">
+ <ref name="bsc_reply"/>
+ </define>
+ <define name="reply_elt" combine="choice">
+ <ref name="parent_reply"/>
+ </define>
+ <define name="reply_elt" combine="choice">
+ <ref name="child_reply"/>
+ </define>
+ <define name="reply_elt" combine="choice">
+ <ref name="repository_reply"/>
+ </define>
+ <define name="reply_elt" combine="choice">
+ <ref name="route_origin_reply"/>
+ </define>
+ <define name="reply_elt" combine="choice">
+ <ref name="list_resources_reply"/>
+ </define>
+ <define name="reply_elt" combine="choice">
+ <ref name="report_error_reply"/>
+ </define>
<!-- Tag attributes for bulk operations -->
<define name="tag">
<optional>
@@ -50,94 +103,34 @@ left_right = lxml.etree.RelaxNG(lxml.etree.fromstring('''<?xml version="1.0" enc
Combinations of action and type attributes used in later definitions.
The same patterns repeat in most of the elements in this protocol.
-->
- <define name="ctl_cq">
+ <define name="ctl_create">
<attribute name="action">
<value>create</value>
</attribute>
- <attribute name="type">
- <value>query</value>
- </attribute>
<ref name="tag"/>
</define>
- <define name="ctl_sq">
+ <define name="ctl_set">
<attribute name="action">
<value>set</value>
</attribute>
- <attribute name="type">
- <value>query</value>
- </attribute>
<ref name="tag"/>
</define>
- <define name="ctl_gq">
+ <define name="ctl_get">
<attribute name="action">
<value>get</value>
</attribute>
- <attribute name="type">
- <value>query</value>
- </attribute>
<ref name="tag"/>
</define>
- <define name="ctl_lq">
+ <define name="ctl_list">
<attribute name="action">
<value>list</value>
</attribute>
- <attribute name="type">
- <value>query</value>
- </attribute>
<ref name="tag"/>
</define>
- <define name="ctl_dq">
+ <define name="ctl_destroy">
<attribute name="action">
<value>destroy</value>
</attribute>
- <attribute name="type">
- <value>query</value>
- </attribute>
- <ref name="tag"/>
- </define>
- <define name="ctl_cr">
- <attribute name="action">
- <value>create</value>
- </attribute>
- <attribute name="type">
- <value>reply</value>
- </attribute>
- <ref name="tag"/>
- </define>
- <define name="ctl_sr">
- <attribute name="action">
- <value>set</value>
- </attribute>
- <attribute name="type">
- <value>reply</value>
- </attribute>
- <ref name="tag"/>
- </define>
- <define name="ctl_gr">
- <attribute name="action">
- <value>get</value>
- </attribute>
- <attribute name="type">
- <value>reply</value>
- </attribute>
- <ref name="tag"/>
- </define>
- <define name="ctl_lr">
- <attribute name="action">
- <value>list</value>
- </attribute>
- <attribute name="type">
- <value>reply</value>
- </attribute>
- <ref name="tag"/>
- </define>
- <define name="ctl_dr">
- <attribute name="action">
- <value>destroy</value>
- </attribute>
- <attribute name="type">
- <value>reply</value>
- </attribute>
<ref name="tag"/>
</define>
<!-- Base64 encoded DER stuff -->
@@ -261,67 +254,67 @@ left_right = lxml.etree.RelaxNG(lxml.etree.fromstring('''<?xml version="1.0" enc
<ref name="sql_id"/>
</attribute>
</define>
- <define name="self_elt" combine="choice">
+ <define name="self_query" combine="choice">
<element name="self">
- <ref name="ctl_cq"/>
+ <ref name="ctl_create"/>
<ref name="self_bool"/>
<ref name="self_payload"/>
</element>
</define>
- <define name="self_elt" combine="choice">
+ <define name="self_reply" combine="choice">
<element name="self">
- <ref name="ctl_cr"/>
+ <ref name="ctl_create"/>
<ref name="self_id"/>
</element>
</define>
- <define name="self_elt" combine="choice">
+ <define name="self_query" combine="choice">
<element name="self">
- <ref name="ctl_sq"/>
+ <ref name="ctl_set"/>
<ref name="self_id"/>
<ref name="self_bool"/>
<ref name="self_payload"/>
</element>
</define>
- <define name="self_elt" combine="choice">
+ <define name="self_reply" combine="choice">
<element name="self">
- <ref name="ctl_sr"/>
+ <ref name="ctl_set"/>
<ref name="self_id"/>
</element>
</define>
- <define name="self_elt" combine="choice">
+ <define name="self_query" combine="choice">
<element name="self">
- <ref name="ctl_gq"/>
+ <ref name="ctl_get"/>
<ref name="self_id"/>
</element>
</define>
- <define name="self_elt" combine="choice">
+ <define name="self_reply" combine="choice">
<element name="self">
- <ref name="ctl_gr"/>
+ <ref name="ctl_get"/>
<ref name="self_id"/>
<ref name="self_payload"/>
</element>
</define>
- <define name="self_elt" combine="choice">
+ <define name="self_query" combine="choice">
<element name="self">
- <ref name="ctl_lq"/>
+ <ref name="ctl_list"/>
</element>
</define>
- <define name="self_elt" combine="choice">
+ <define name="self_reply" combine="choice">
<element name="self">
- <ref name="ctl_lr"/>
+ <ref name="ctl_list"/>
<ref name="self_id"/>
<ref name="self_payload"/>
</element>
</define>
- <define name="self_elt" combine="choice">
+ <define name="self_query" combine="choice">
<element name="self">
- <ref name="ctl_dq"/>
+ <ref name="ctl_destroy"/>
<ref name="self_id"/>
</element>
</define>
- <define name="self_elt" combine="choice">
+ <define name="self_reply" combine="choice">
<element name="self">
- <ref name="ctl_dr"/>
+ <ref name="ctl_destroy"/>
<ref name="self_id"/>
</element>
</define>
@@ -372,80 +365,80 @@ left_right = lxml.etree.RelaxNG(lxml.etree.fromstring('''<?xml version="1.0" enc
</element>
</optional>
</define>
- <define name="bsc_elt" combine="choice">
+ <define name="bsc_query" combine="choice">
<element name="bsc">
- <ref name="ctl_cq"/>
+ <ref name="ctl_create"/>
<ref name="self_id"/>
<ref name="bsc_bool"/>
<ref name="bsc_payload"/>
</element>
</define>
- <define name="bsc_elt" combine="choice">
+ <define name="bsc_reply" combine="choice">
<element name="bsc">
- <ref name="ctl_cr"/>
+ <ref name="ctl_create"/>
<ref name="self_id"/>
<ref name="bsc_id"/>
<ref name="bsc_pkcs10"/>
</element>
</define>
- <define name="bsc_elt" combine="choice">
+ <define name="bsc_query" combine="choice">
<element name="bsc">
- <ref name="ctl_sq"/>
+ <ref name="ctl_set"/>
<ref name="self_id"/>
<ref name="bsc_id"/>
<ref name="bsc_bool"/>
<ref name="bsc_payload"/>
</element>
</define>
- <define name="bsc_elt" combine="choice">
+ <define name="bsc_reply" combine="choice">
<element name="bsc">
- <ref name="ctl_sr"/>
+ <ref name="ctl_set"/>
<ref name="self_id"/>
<ref name="bsc_id"/>
<ref name="bsc_pkcs10"/>
</element>
</define>
- <define name="bsc_elt" combine="choice">
+ <define name="bsc_query" combine="choice">
<element name="bsc">
- <ref name="ctl_gq"/>
+ <ref name="ctl_get"/>
<ref name="self_id"/>
<ref name="bsc_id"/>
</element>
</define>
- <define name="bsc_elt" combine="choice">
+ <define name="bsc_reply" combine="choice">
<element name="bsc">
- <ref name="ctl_gr"/>
+ <ref name="ctl_get"/>
<ref name="self_id"/>
<ref name="bsc_id"/>
<ref name="bsc_payload"/>
<ref name="bsc_pkcs10"/>
</element>
</define>
- <define name="bsc_elt" combine="choice">
+ <define name="bsc_query" combine="choice">
<element name="bsc">
- <ref name="ctl_lq"/>
+ <ref name="ctl_list"/>
<ref name="self_id"/>
</element>
</define>
- <define name="bsc_elt" combine="choice">
+ <define name="bsc_reply" combine="choice">
<element name="bsc">
- <ref name="ctl_lr"/>
+ <ref name="ctl_list"/>
<ref name="self_id"/>
<ref name="bsc_id"/>
<ref name="bsc_payload"/>
<ref name="bsc_pkcs10"/>
</element>
</define>
- <define name="bsc_elt" combine="choice">
+ <define name="bsc_query" combine="choice">
<element name="bsc">
- <ref name="ctl_dq"/>
+ <ref name="ctl_destroy"/>
<ref name="self_id"/>
<ref name="bsc_id"/>
</element>
</define>
- <define name="bsc_elt" combine="choice">
+ <define name="bsc_reply" combine="choice">
<element name="bsc">
- <ref name="ctl_dr"/>
+ <ref name="ctl_destroy"/>
<ref name="self_id"/>
<ref name="bsc_id"/>
</element>
@@ -521,76 +514,76 @@ left_right = lxml.etree.RelaxNG(lxml.etree.fromstring('''<?xml version="1.0" enc
</element>
</optional>
</define>
- <define name="parent_elt" combine="choice">
+ <define name="parent_query" combine="choice">
<element name="parent">
- <ref name="ctl_cq"/>
+ <ref name="ctl_create"/>
<ref name="self_id"/>
<ref name="parent_bool"/>
<ref name="parent_payload"/>
</element>
</define>
- <define name="parent_elt" combine="choice">
+ <define name="parent_reply" combine="choice">
<element name="parent">
- <ref name="ctl_cr"/>
+ <ref name="ctl_create"/>
<ref name="self_id"/>
<ref name="parent_id"/>
</element>
</define>
- <define name="parent_elt" combine="choice">
+ <define name="parent_query" combine="choice">
<element name="parent">
- <ref name="ctl_sq"/>
+ <ref name="ctl_set"/>
<ref name="self_id"/>
<ref name="parent_id"/>
<ref name="parent_bool"/>
<ref name="parent_payload"/>
</element>
</define>
- <define name="parent_elt" combine="choice">
+ <define name="parent_reply" combine="choice">
<element name="parent">
- <ref name="ctl_sr"/>
+ <ref name="ctl_set"/>
<ref name="self_id"/>
<ref name="parent_id"/>
</element>
</define>
- <define name="parent_elt" combine="choice">
+ <define name="parent_query" combine="choice">
<element name="parent">
- <ref name="ctl_gq"/>
+ <ref name="ctl_get"/>
<ref name="self_id"/>
<ref name="parent_id"/>
</element>
</define>
- <define name="parent_elt" combine="choice">
+ <define name="parent_reply" combine="choice">
<element name="parent">
- <ref name="ctl_gr"/>
+ <ref name="ctl_get"/>
<ref name="self_id"/>
<ref name="parent_id"/>
<ref name="parent_payload"/>
</element>
</define>
- <define name="parent_elt" combine="choice">
+ <define name="parent_query" combine="choice">
<element name="parent">
- <ref name="ctl_lq"/>
+ <ref name="ctl_list"/>
<ref name="self_id"/>
</element>
</define>
- <define name="parent_elt" combine="choice">
+ <define name="parent_reply" combine="choice">
<element name="parent">
- <ref name="ctl_lr"/>
+ <ref name="ctl_list"/>
<ref name="self_id"/>
<ref name="parent_id"/>
<ref name="parent_payload"/>
</element>
</define>
- <define name="parent_elt" combine="choice">
+ <define name="parent_query" combine="choice">
<element name="parent">
- <ref name="ctl_dq"/>
+ <ref name="ctl_destroy"/>
<ref name="self_id"/>
<ref name="parent_id"/>
</element>
</define>
- <define name="parent_elt" combine="choice">
+ <define name="parent_reply" combine="choice">
<element name="parent">
- <ref name="ctl_dr"/>
+ <ref name="ctl_destroy"/>
<ref name="self_id"/>
<ref name="parent_id"/>
</element>
@@ -623,76 +616,76 @@ left_right = lxml.etree.RelaxNG(lxml.etree.fromstring('''<?xml version="1.0" enc
</element>
</optional>
</define>
- <define name="child_elt" combine="choice">
+ <define name="child_query" combine="choice">
<element name="child">
- <ref name="ctl_cq"/>
+ <ref name="ctl_create"/>
<ref name="self_id"/>
<ref name="child_bool"/>
<ref name="child_payload"/>
</element>
</define>
- <define name="child_elt" combine="choice">
+ <define name="child_reply" combine="choice">
<element name="child">
- <ref name="ctl_cr"/>
+ <ref name="ctl_create"/>
<ref name="self_id"/>
<ref name="child_id"/>
</element>
</define>
- <define name="child_elt" combine="choice">
+ <define name="child_query" combine="choice">
<element name="child">
- <ref name="ctl_sq"/>
+ <ref name="ctl_set"/>
<ref name="self_id"/>
<ref name="child_id"/>
<ref name="child_bool"/>
<ref name="child_payload"/>
</element>
</define>
- <define name="child_elt" combine="choice">
+ <define name="child_reply" combine="choice">
<element name="child">
- <ref name="ctl_sr"/>
+ <ref name="ctl_set"/>
<ref name="self_id"/>
<ref name="child_id"/>
</element>
</define>
- <define name="child_elt" combine="choice">
+ <define name="child_query" combine="choice">
<element name="child">
- <ref name="ctl_gq"/>
+ <ref name="ctl_get"/>
<ref name="self_id"/>
<ref name="child_id"/>
</element>
</define>
- <define name="child_elt" combine="choice">
+ <define name="child_reply" combine="choice">
<element name="child">
- <ref name="ctl_gr"/>
+ <ref name="ctl_get"/>
<ref name="self_id"/>
<ref name="child_id"/>
<ref name="child_payload"/>
</element>
</define>
- <define name="child_elt" combine="choice">
+ <define name="child_query" combine="choice">
<element name="child">
- <ref name="ctl_lq"/>
+ <ref name="ctl_list"/>
<ref name="self_id"/>
</element>
</define>
- <define name="child_elt" combine="choice">
+ <define name="child_reply" combine="choice">
<element name="child">
- <ref name="ctl_lr"/>
+ <ref name="ctl_list"/>
<ref name="self_id"/>
<ref name="child_id"/>
<ref name="child_payload"/>
</element>
</define>
- <define name="child_elt" combine="choice">
+ <define name="child_query" combine="choice">
<element name="child">
- <ref name="ctl_dq"/>
+ <ref name="ctl_destroy"/>
<ref name="self_id"/>
<ref name="child_id"/>
</element>
</define>
- <define name="child_elt" combine="choice">
+ <define name="child_reply" combine="choice">
<element name="child">
- <ref name="ctl_dr"/>
+ <ref name="ctl_destroy"/>
<ref name="self_id"/>
<ref name="child_id"/>
</element>
@@ -733,74 +726,74 @@ left_right = lxml.etree.RelaxNG(lxml.etree.fromstring('''<?xml version="1.0" enc
</element>
</optional>
</define>
- <define name="repository_elt" combine="choice">
+ <define name="repository_query" combine="choice">
<element name="repository">
- <ref name="ctl_cq"/>
+ <ref name="ctl_create"/>
<ref name="self_id"/>
<ref name="repository_payload"/>
</element>
</define>
- <define name="repository_elt" combine="choice">
+ <define name="repository_reply" combine="choice">
<element name="repository">
- <ref name="ctl_cr"/>
+ <ref name="ctl_create"/>
<ref name="self_id"/>
<ref name="repository_id"/>
</element>
</define>
- <define name="repository_elt" combine="choice">
+ <define name="repository_query" combine="choice">
<element name="repository">
- <ref name="ctl_sq"/>
+ <ref name="ctl_set"/>
<ref name="self_id"/>
<ref name="repository_id"/>
<ref name="repository_payload"/>
</element>
</define>
- <define name="repository_elt" combine="choice">
+ <define name="repository_reply" combine="choice">
<element name="repository">
- <ref name="ctl_sr"/>
+ <ref name="ctl_set"/>
<ref name="self_id"/>
<ref name="repository_id"/>
</element>
</define>
- <define name="repository_elt" combine="choice">
+ <define name="repository_query" combine="choice">
<element name="repository">
- <ref name="ctl_gq"/>
+ <ref name="ctl_get"/>
<ref name="self_id"/>
<ref name="repository_id"/>
</element>
</define>
- <define name="repository_elt" combine="choice">
+ <define name="repository_reply" combine="choice">
<element name="repository">
- <ref name="ctl_gr"/>
+ <ref name="ctl_get"/>
<ref name="self_id"/>
<ref name="repository_id"/>
<ref name="repository_payload"/>
</element>
</define>
- <define name="repository_elt" combine="choice">
+ <define name="repository_query" combine="choice">
<element name="repository">
- <ref name="ctl_lq"/>
+ <ref name="ctl_list"/>
<ref name="self_id"/>
</element>
</define>
- <define name="repository_elt" combine="choice">
+ <define name="repository_reply" combine="choice">
<element name="repository">
- <ref name="ctl_lr"/>
+ <ref name="ctl_list"/>
<ref name="self_id"/>
<ref name="repository_id"/>
<ref name="repository_payload"/>
</element>
</define>
- <define name="repository_elt" combine="choice">
+ <define name="repository_query" combine="choice">
<element name="repository">
- <ref name="ctl_dq"/>
+ <ref name="ctl_destroy"/>
<ref name="self_id"/>
<ref name="repository_id"/>
</element>
</define>
- <define name="repository_elt" combine="choice">
+ <define name="repository_reply" combine="choice">
<element name="repository">
- <ref name="ctl_dr"/>
+ <ref name="ctl_destroy"/>
<ref name="self_id"/>
<ref name="repository_id"/>
</element>
@@ -840,132 +833,124 @@ left_right = lxml.etree.RelaxNG(lxml.etree.fromstring('''<?xml version="1.0" enc
</attribute>
</optional>
</define>
- <define name="route_origin_elt" combine="choice">
+ <define name="route_origin_query" combine="choice">
<element name="route_origin">
- <ref name="ctl_cq"/>
+ <ref name="ctl_create"/>
<ref name="self_id"/>
<ref name="route_origin_bool"/>
<ref name="route_origin_payload"/>
</element>
</define>
- <define name="route_origin_elt" combine="choice">
+ <define name="route_origin_reply" combine="choice">
<element name="route_origin">
- <ref name="ctl_cr"/>
+ <ref name="ctl_create"/>
<ref name="self_id"/>
<ref name="route_origin_id"/>
</element>
</define>
- <define name="route_origin_elt" combine="choice">
+ <define name="route_origin_query" combine="choice">
<element name="route_origin">
- <ref name="ctl_sq"/>
+ <ref name="ctl_set"/>
<ref name="self_id"/>
<ref name="route_origin_id"/>
<ref name="route_origin_bool"/>
<ref name="route_origin_payload"/>
</element>
</define>
- <define name="route_origin_elt" combine="choice">
+ <define name="route_origin_reply" combine="choice">
<element name="route_origin">
- <ref name="ctl_sr"/>
+ <ref name="ctl_set"/>
<ref name="self_id"/>
<ref name="route_origin_id"/>
</element>
</define>
- <define name="route_origin_elt" combine="choice">
+ <define name="route_origin_query" combine="choice">
<element name="route_origin">
- <ref name="ctl_gq"/>
+ <ref name="ctl_get"/>
<ref name="self_id"/>
<ref name="route_origin_id"/>
</element>
</define>
- <define name="route_origin_elt" combine="choice">
+ <define name="route_origin_reply" combine="choice">
<element name="route_origin">
- <ref name="ctl_gr"/>
+ <ref name="ctl_get"/>
<ref name="self_id"/>
<ref name="route_origin_id"/>
<ref name="route_origin_payload"/>
</element>
</define>
- <define name="route_origin_elt" combine="choice">
+ <define name="route_origin_query" combine="choice">
<element name="route_origin">
- <ref name="ctl_lq"/>
+ <ref name="ctl_list"/>
<ref name="self_id"/>
</element>
</define>
- <define name="route_origin_elt" combine="choice">
+ <define name="route_origin_reply" combine="choice">
<element name="route_origin">
- <ref name="ctl_lr"/>
+ <ref name="ctl_list"/>
<ref name="self_id"/>
<ref name="route_origin_id"/>
<ref name="route_origin_payload"/>
</element>
</define>
- <define name="route_origin_elt" combine="choice">
+ <define name="route_origin_query" combine="choice">
<element name="route_origin">
- <ref name="ctl_dq"/>
+ <ref name="ctl_destroy"/>
<ref name="self_id"/>
<ref name="route_origin_id"/>
</element>
</define>
- <define name="route_origin_elt" combine="choice">
+ <define name="route_origin_reply" combine="choice">
<element name="route_origin">
- <ref name="ctl_dr"/>
+ <ref name="ctl_destroy"/>
<ref name="self_id"/>
<ref name="route_origin_id"/>
</element>
</define>
<!-- <list_resources/> element -->
- <define name="list_resources_elt">
+ <define name="list_resources_query">
<element name="list_resources">
- <choice>
- <group>
- <attribute name="type">
- <value>query</value>
- </attribute>
- <ref name="tag"/>
- <ref name="self_id"/>
- <ref name="child_id"/>
- </group>
- <group>
- <attribute name="type">
- <value>reply</value>
- </attribute>
- <ref name="tag"/>
- <ref name="self_id"/>
- <ref name="child_id"/>
- <attribute name="valid_until">
- <data type="dateTime">
- <param name="pattern">.*Z</param>
- </data>
- </attribute>
- <optional>
- <attribute name="subject_name">
- <data type="token">
- <param name="maxLength">1024</param>
- </data>
- </attribute>
- </optional>
- <optional>
- <attribute name="asn">
- <ref name="asn_list"/>
- </attribute>
- </optional>
- <optional>
- <attribute name="ipv4">
- <ref name="ipv4_list"/>
- </attribute>
- </optional>
- <optional>
- <attribute name="ipv6">
- <ref name="ipv6_list"/>
- </attribute>
- </optional>
- </group>
- </choice>
+ <ref name="tag"/>
+ <ref name="self_id"/>
+ <ref name="child_id"/>
+ </element>
+ </define>
+ <define name="list_resources_reply">
+ <element name="list_resources">
+ <ref name="tag"/>
+ <ref name="self_id"/>
+ <ref name="child_id"/>
+ <attribute name="valid_until">
+ <data type="dateTime">
+ <param name="pattern">.*Z</param>
+ </data>
+ </attribute>
+ <optional>
+ <attribute name="subject_name">
+ <data type="token">
+ <param name="maxLength">1024</param>
+ </data>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="asn">
+ <ref name="asn_list"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="ipv4">
+ <ref name="ipv4_list"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="ipv6">
+ <ref name="ipv6_list"/>
+ </attribute>
+ </optional>
</element>
</define>
<!-- <report_error/> element -->
- <define name="report_error_elt">
+ <define name="report_error_reply">
<element name="report_error">
<ref name="tag"/>
<ref name="self_id"/>