aboutsummaryrefslogtreecommitdiff
path: root/rpkid/rpki/relaxng.py
diff options
context:
space:
mode:
Diffstat (limited to 'rpkid/rpki/relaxng.py')
-rw-r--r--rpkid/rpki/relaxng.py473
1 files changed, 229 insertions, 244 deletions
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"/>