adding he_ipv6 schema

This commit is contained in:
brent s. 2020-05-11 16:21:22 -04:00
parent 9423997dca
commit 8567ee0965
Signed by: bts
GPG Key ID: 8C004C2F93481F6B
3 changed files with 115 additions and 0 deletions

View File

@ -0,0 +1,54 @@
<?xml version="1.0" encoding="UTF-8" ?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
elementFormDefault="qualified"
attributeFormDefault="unqualified">

<xs:include schemaLocation="../types/net.xsd"/>
<xs:include schemaLocation="../types/he_ipv6.xsd"/>

<xs:complexType name="e_he_ipv6_cred">
<xs:all>
<xs:element name="user" type="xs:token" minOccurs="1"/>
<xs:element name="updateKey" type="xs:token" minOccurs="1"/>
</xs:all>
<xs:attribute name="id" type="xs:ID" use="required"/>
</xs:complexType>

<xs:complexType name="e_he_ipv6_tunnel">
<xs:all>
<xs:element name="server" type="t_net_addr_ip4"/>
<xs:element name="allocs">
<xs:complexType>
<xs:sequence minOccurs="1">
<!-- HE only allocates a single /64 and, upon request, a single /48 per tunnel. -->
<xs:element name="alloc" minOccurs="1" maxOccurs="2">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="t_net_addr_ip6">
<xs:attribute name="prefix" type="t_he_ipv6_prefix" use="required" default="64"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
<xs:unique name="uniq_alloc_prefix">
<xs:selector xpath="alloc"/>
<xs:field xpath="@prefix"/>
</xs:unique>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="client" minOccurs="1" maxOccurs="1">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="t_net_addr_ip6">
<xs:attribute name="prefix" type="t_he_ipv6_prefix" use="required" default="64"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
</xs:all>
<xs:attribute name="id" type="xs:positiveInteger" use="required"/>
<xs:attribute name="creds" type="xs:IDREF" use="required"/>
</xs:complexType>

</xs:schema>

View File

@ -0,0 +1,13 @@
<?xml version="1.0" encoding="UTF-8" ?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
elementFormDefault="qualified"
attributeFormDefault="unqualified">

<xs:simpleType name="t_he_ipv6_prefix">
<xs:restriction base="xs:positiveInteger">
<xs:enumeration value="48"/>
<xs:enumeration value="64"/>
</xs:restriction>
</xs:simpleType>

</xs:schema>

View File

@ -0,0 +1,48 @@
<?xml version="1.0" encoding="UTF-8" ?>
<xs:schema targetNamespace="https://tunnelbroker.net/"
xmlns="https://tunnelbroker.net/"
xmlns:heIPv6="https://tunelbroker.net/"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
elementFormDefault="qualified"
attributeFormDefault="unqualified">

<xs:include schemaLocation="../lib/elements/he_ipv6.xsd"/>

<!-- ROOT -->
<xs:element name="heIPv6">
<xs:complexType>
<xs:all>
<xs:element name="creds" minOccurs="1">
<xs:complexType>
<xs:sequence>
<xs:element name="cred" type="e_he_ipv6_cred" minOccurs="1" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="tunnels" minOccurs="1">
<xs:complexType>
<xs:sequence>
<xs:element name="tunnel" minOccurs="1" maxOccurs="unbounded" type="e_he_ipv6_tunnel">
<xs:unique name="uniq_alloc">
<xs:unique name="uniq_alloc_addr">
<xs:selector xpath="heIPv6:tunnel/heIPv6:alloc"/>
<xs:field xpath="."/>
</xs:unique>
</xs:unique>
</xs:element>
</xs:sequence>
</xs:complexType>
<xs:unique name="uniq_tun">
<xs:selector xpath="heIPv6:tunnel"/>
<xs:field xpath="@id"/>
</xs:unique>
</xs:element>
</xs:all>
</xs:complexType>
<xs:unique name="uniq_addr">
<xs:selector xpath=""/>
<xs:field xpath=""/>
</xs:unique>
</xs:element>

</xs:schema>