diff options
Diffstat (limited to 'rpkid/rpki')
-rw-r--r-- | rpkid/rpki/gctx.py | 6 | ||||
-rw-r--r-- | rpkid/rpki/left_right.py | 23 | ||||
-rw-r--r-- | rpkid/rpki/relaxng.py | 473 |
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"/> |