diff options
Diffstat (limited to 'src/charon/plugins/xml/schema.xml')
-rw-r--r-- | src/charon/plugins/xml/schema.xml | 400 |
1 files changed, 400 insertions, 0 deletions
diff --git a/src/charon/plugins/xml/schema.xml b/src/charon/plugins/xml/schema.xml new file mode 100644 index 000000000..66a51117e --- /dev/null +++ b/src/charon/plugins/xml/schema.xml @@ -0,0 +1,400 @@ +<?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> + <optional> + <ref name="QueryRequestConfig"/> + </optional> + <!-- others --> + </element> + </optional> + <optional> + <element name="control"> + <optional> + <ref name="ControlRequestIkeTerminate"/> + </optional> + <optional> + <ref name="ControlRequestChildTerminate"/> + </optional> + <optional> + <ref name="ControlRequestIkeInitiate"/> + </optional> + <optional> + <ref name="ControlRequestChildInitiate"/> + </optional> + <!-- others --> + </element> + </optional> + <!-- others --> + </group> + <group> + <attribute name="type"> + <value>response</value> + </attribute> + <choice> + <element name="error"> + <attribute name="code"> + <data type="nonNegativeInteger"/> + </attribute> + <data type="string"/> + </element> + <group> + <optional> + <element name="query"> + <optional> + <ref name="QueryResponseIkesa"/> + </optional> + <optional> + <ref name="QueryResponseConfig"/> + </optional> + <!-- others --> + </element> + </optional> + <optional> + <element name="control"> + <optional> + <ref name="ControlResponse"/> + </optional> + <!-- others --> + </element> + </optional> + <!-- others --> + </group> + </choice> + </group> + </choice> + </element> + </start> + <!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - --> + <!-- 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="lifetime"> + <data type="integer"/> + </element> + <element name="rekeytime"> + <data type="integer"/> + </element> + <element name="local"> + <ref name="ikeEnd"/> + </element> + <element name="remote"> + <ref name="ikeEnd"/> + </element> + <element name="childsalist"> + <zeroOrMore> + <element name="childsa"> + <ref name="childsa"/> + </element> + </zeroOrMore> + </element> + </element> + </zeroOrMore> + </element> + </define> + <define name="ikeEnd"> + <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> + <define name="childsa"> + <element name="reqid"> + <data type="nonNegativeInteger"/> + </element> + <element name="lifetime"> + <data type="integer"/> + </element> + <element name="rekeytime"> + <data type="integer"/> + </element> + <element name="local"> + <ref name="childEnd"/> + </element> + <element name="remote"> + <ref name="childEnd"/> + </element> + </define> + <define name="childEnd"> + <element name="spi"> + <element name="networks"> + <ref name="networks"> + </element> + </define> + <define name="QueryRequestConfig"> + <element name="configlist"> + <empty/> + </element> + </define> + <define name="QueryResponseConfig"> + <element name="configlist"> + <zeroOrMore> + <element name="peerconfig"> + <element name="name"> + <data type="string"/> + </element> + <element name="local"> + <ref name="identification"/> + </element> + <element name="remote"> + <ref name="identification"/> + </element> + <element name="ikeconfig"> + <ref name="ikeconfig"/> + </element> + <element name="childconfiglist"> + <zeroOrMore> + <element name="childconfig"> + <ref name="childconfig"/> + </element> + </zeroOrMore> + </element> + </element> + </zeroOrMore> + </element> + </define> + <define name="ikeconfig"> + <element name="local"> + <ref name="address"/> + </element> + <element name="remote"> + <ref name="address"/> + </element> + </define> + <define name="childconfig"> + <element name="name"> + <data type="string"/> + </element> + <element name="local"> + <ref name="networks"> + </element> + <element name="remote"> + <ref name="networks"> + </element> + </define> + <!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - --> + <!-- Control --> + <!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - --> + <define name="ControlRequestIkeTerminate"> + <element name="ikesaterminate"> + <data type="positiveInteger"/> + </element> + </define> + <define name="ControlRequestChildTerminate"> + <element name="childsaterminate"> + <data type="positiveInteger"/> + </element> + </define> + <define name="ControlRequestIkeInitiate"> + <element name="ikesainitiate"> + <data type="string"/> + </element> + </define> + <define name="ControlRequestChildInitiate"> + <element name="childsainitiate"> + <data type="string"/> + </element> + </define> + <define name="QueryResponse"> + <element name="status"> + <data type="nonNegativeInteger"/> + </element> + <element name="log"> + <zeroOrMore> + <element name="item"> + <attribute name="level"> + <data type="nonNegativeInteger"> + </attribute> + <attribute name="thread"> + <data type="nonNegativeInteger"> + </attribute> + <attribute name="source"> + <data type="string"> + </attribute> + <data type="string"/> + <element> + </zeroOrMore> + </element> + </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> + <define name="networks"> + <zeroOrMore> + <element name="network"> + <optional> + <attribute name="protocol"/> + </optional> + <optional> + <attribute name="port"/> + </optional> + </element> + </zeroOrMore> + </define> +</grammar> |