added first draft of SMP relax-ng schema
This commit is contained in:
@@ -0,0 +1,225 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
|
||||||
|
<!-- strongSwan Managment Protocol (SMP) V1.0 -->
|
||||||
|
|
||||||
|
<!--
|
||||||
|
Copyright (C) 2007 Martin Willi
|
||||||
|
Copyright (C) 2006 Andreas Eigenmann, Joël Stillhart
|
||||||
|
Hochschule fuer Technik Rapperswil
|
||||||
|
|
||||||
|
This program is free software; you can redistribute it and/or modify it
|
||||||
|
under the terms of the GNU General Public License as published by the
|
||||||
|
Free Software Foundation; either version 2 of the License, or (at your
|
||||||
|
option) any later version. See <http://www.fsf.org/copyleft/gpl.txt>.
|
||||||
|
|
||||||
|
This program is distributed in the hope that it will be useful, but
|
||||||
|
WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
|
||||||
|
or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||||
|
for more details.
|
||||||
|
-->
|
||||||
|
|
||||||
|
<grammar xmlns="http://relaxng.org/ns/structure/1.0"
|
||||||
|
datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes"
|
||||||
|
ns="http://www.strongswan.org/smp/1.0">
|
||||||
|
<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
|
||||||
|
<!-- Message -->
|
||||||
|
<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
|
||||||
|
<start>
|
||||||
|
<element name="message">
|
||||||
|
<choice>
|
||||||
|
<group>
|
||||||
|
<attribute name="type">
|
||||||
|
<value>request</value>
|
||||||
|
</attribute>
|
||||||
|
<optional>
|
||||||
|
<element name="query">
|
||||||
|
<optional>
|
||||||
|
<ref name="QueryRequestIkesa"/>
|
||||||
|
</optional>
|
||||||
|
<!-- others -->
|
||||||
|
</element>
|
||||||
|
</optional>
|
||||||
|
<!-- others -->
|
||||||
|
</group>
|
||||||
|
<group>
|
||||||
|
<attribute name="type">
|
||||||
|
<value>response</value>
|
||||||
|
</attribute>
|
||||||
|
<choice>
|
||||||
|
<element name="error">
|
||||||
|
<attribute name="code">
|
||||||
|
<data type="string"/>
|
||||||
|
</attribute>
|
||||||
|
</element>
|
||||||
|
<group>
|
||||||
|
<optional>
|
||||||
|
<element name="query">
|
||||||
|
<optional>
|
||||||
|
<ref name="QueryResponseIkesa"/>
|
||||||
|
</optional>
|
||||||
|
<!-- others -->
|
||||||
|
</element>
|
||||||
|
</optional>
|
||||||
|
<!-- others -->
|
||||||
|
</group>
|
||||||
|
</choice>
|
||||||
|
</group>
|
||||||
|
</choice>
|
||||||
|
</element>
|
||||||
|
</start>
|
||||||
|
<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
|
||||||
|
<!-- IKE SA query -->
|
||||||
|
<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
|
||||||
|
<define name="QueryRequestIkesa">
|
||||||
|
<element name="ikesalist">
|
||||||
|
<empty/>
|
||||||
|
</element>
|
||||||
|
</define>
|
||||||
|
<define name="QueryResponseIkesa">
|
||||||
|
<element name="ikesalist">
|
||||||
|
<zeroOrMore>
|
||||||
|
<element name="ikesa">
|
||||||
|
<element name="id">
|
||||||
|
<data type="positiveInteger"/>
|
||||||
|
</element>
|
||||||
|
<element name="status">
|
||||||
|
<choice>
|
||||||
|
<value type="string">created</value>
|
||||||
|
<value type="string">connecting</value>
|
||||||
|
<value type="string">established</value>
|
||||||
|
<value type="string">rekeying</value>
|
||||||
|
<value type="string">deleting</value>
|
||||||
|
</choice>
|
||||||
|
</element>
|
||||||
|
<element name="role">
|
||||||
|
<choice>
|
||||||
|
<value type="string">initiator</value>
|
||||||
|
<value type="string">responder</value>
|
||||||
|
</choice>
|
||||||
|
</element>
|
||||||
|
<element name="peerconfig">
|
||||||
|
<data type="string"/>
|
||||||
|
</element>
|
||||||
|
<element name="local">
|
||||||
|
<ref name="endPoint"/>
|
||||||
|
</element>
|
||||||
|
<element name="remote">
|
||||||
|
<ref name="endPoint"/>
|
||||||
|
</element>
|
||||||
|
</element>
|
||||||
|
</zeroOrMore>
|
||||||
|
</element>
|
||||||
|
</define>
|
||||||
|
<define name="endPoint">
|
||||||
|
<element name="spi">
|
||||||
|
<data type="hexBinary" />
|
||||||
|
</element>
|
||||||
|
<element name="identification">
|
||||||
|
<ref name="identification"/>
|
||||||
|
</element>
|
||||||
|
<element name="address">
|
||||||
|
<ref name="address"/>
|
||||||
|
</element>
|
||||||
|
<element name="port">
|
||||||
|
<data type="nonNegativeInteger">
|
||||||
|
<param name="maxInclusive">65535</param>
|
||||||
|
</data>
|
||||||
|
</element>
|
||||||
|
<optional>
|
||||||
|
<element name="nat">
|
||||||
|
<data type="boolean"/>
|
||||||
|
</element>
|
||||||
|
</optional>
|
||||||
|
</define>
|
||||||
|
<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
|
||||||
|
<!-- identification and address -->
|
||||||
|
<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
|
||||||
|
<define name="identification">
|
||||||
|
<choice>
|
||||||
|
<group>
|
||||||
|
<attribute name="type">
|
||||||
|
<value>any</value>
|
||||||
|
</attribute>
|
||||||
|
<empty/>
|
||||||
|
</group>
|
||||||
|
<group>
|
||||||
|
<attribute name="type">
|
||||||
|
<value>ipv4</value>
|
||||||
|
</attribute>
|
||||||
|
<ref name="ipv4"/>
|
||||||
|
</group>
|
||||||
|
<group>
|
||||||
|
<attribute name="type">
|
||||||
|
<value>ipv6</value>
|
||||||
|
</attribute>
|
||||||
|
<ref name="ipv6"/>
|
||||||
|
</group>
|
||||||
|
<group>
|
||||||
|
<attribute name="type">
|
||||||
|
<value>fqdn</value>
|
||||||
|
</attribute>
|
||||||
|
<ref name="fqdn"/>
|
||||||
|
</group>
|
||||||
|
<group>
|
||||||
|
<attribute name="type">
|
||||||
|
<value>email</value>
|
||||||
|
</attribute>
|
||||||
|
<ref name="email"/>
|
||||||
|
</group>
|
||||||
|
<group>
|
||||||
|
<attribute name="type">
|
||||||
|
<value>asn1gn</value>
|
||||||
|
</attribute>
|
||||||
|
<data type="string"/>
|
||||||
|
</group>
|
||||||
|
<group>
|
||||||
|
<attribute name="type">
|
||||||
|
<value>asn1dn</value>
|
||||||
|
</attribute>
|
||||||
|
<data type="string"/>
|
||||||
|
</group>
|
||||||
|
<group>
|
||||||
|
<attribute name="type">
|
||||||
|
<value>keyid</value>
|
||||||
|
</attribute>
|
||||||
|
<data type="base64Binary"/>
|
||||||
|
</group>
|
||||||
|
</choice>
|
||||||
|
</define>
|
||||||
|
<define name="address">
|
||||||
|
<choice>
|
||||||
|
<group>
|
||||||
|
<attribute name="type">
|
||||||
|
<value>ipv4</value>
|
||||||
|
</attribute>
|
||||||
|
<ref name="ipv4"/>
|
||||||
|
</group>
|
||||||
|
<group>
|
||||||
|
<attribute name="type">
|
||||||
|
<value>ipv6</value>
|
||||||
|
</attribute>
|
||||||
|
<ref name="ipv6"/>
|
||||||
|
</group>
|
||||||
|
</choice>
|
||||||
|
</define>
|
||||||
|
<define name="ipv4">
|
||||||
|
<data type="string">
|
||||||
|
<param name="pattern">(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(/([0-9]|[1-2][0-9]|3[0-2]))?</param>
|
||||||
|
</data>
|
||||||
|
</define>
|
||||||
|
<define name="ipv6">
|
||||||
|
<data type="string">
|
||||||
|
<param name="pattern">([0-9a-fA-F]{1,4}:|:){1,7}([0-9a-fA-F]{1,4}|:)(/([0-9]|[1-9][0-9]|1[0-1][0-9]|12[0-8]))?</param>
|
||||||
|
</data>
|
||||||
|
</define>
|
||||||
|
<define name="fqdn">
|
||||||
|
<data type="string">
|
||||||
|
<param name="pattern">[a-z0-9\-](\.[a-z0-9\-]+)*</param>
|
||||||
|
</data>
|
||||||
|
</define>
|
||||||
|
<define name="email">
|
||||||
|
<data type="string">
|
||||||
|
<param name="pattern">[a-zA-Z0-9_\-\.]+@(([a-z0-9\-](\.[a-z0-9\-]+)*)|(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5]))</param>
|
||||||
|
</data>
|
||||||
|
</define>
|
||||||
|
</grammar>
|
||||||
Reference in New Issue
Block a user