<?xml version="1.0"?> <!-- network-related definitions used in multiple grammars --> <grammar xmlns="http://relaxng.org/ns/structure/1.0" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes"> <define name="virtualPortProfileID"> <data type="string"> <param name="maxLength">39</param> </data> </define> <define name="virtualPortProfile"> <choice> <group> <element name="virtualport"> <attribute name="type"> <value>802.1Qbg</value> </attribute> <optional> <element name="parameters"> <optional> <attribute name="managerid"> <ref name="uint8range"/> </attribute> </optional> <optional> <attribute name="typeid"> <ref name="uint24range"/> </attribute> </optional> <optional> <attribute name="typeidversion"> <ref name="uint8range"/> </attribute> </optional> <optional> <attribute name="instanceid"> <ref name="UUID"/> </attribute> </optional> </element> </optional> </element> </group> <group> <element name="virtualport"> <attribute name="type"> <value>802.1Qbh</value> </attribute> <optional> <element name="parameters"> <optional> <attribute name="profileid"> <ref name="virtualPortProfileID"/> </attribute> </optional> </element> </optional> </element> </group> <group> <element name="virtualport"> <attribute name="type"> <value>openvswitch</value> </attribute> <optional> <element name="parameters"> <optional> <attribute name="profileid"> <ref name="virtualPortProfileID"/> </attribute> </optional> <optional> <attribute name="interfaceid"> <ref name="UUID"/> </attribute> </optional> </element> </optional> </element> </group> <group> <!-- use this when no type attribute is present --> <element name="virtualport"> <optional> <element name="parameters"> <optional> <attribute name="managerid"> <ref name="uint8range"/> </attribute> </optional> <optional> <attribute name="typeid"> <ref name="uint24range"/> </attribute> </optional> <optional> <attribute name="typeidversion"> <ref name="uint8range"/> </attribute> </optional> <optional> <attribute name="instanceid"> <ref name="UUID"/> </attribute> </optional> <optional> <attribute name="profileid"> <ref name="virtualPortProfileID"/> </attribute> </optional> <optional> <attribute name="interfaceid"> <ref name="UUID"/> </attribute> </optional> </element> </optional> </element> </group> </choice> </define> <define name="bandwidth"> <element name="bandwidth"> <interleave> <optional> <element name="inbound"> <ref name="bandwidth-attributes"/> <empty/> </element> </optional> <optional> <element name="outbound"> <ref name="bandwidth-attributes"/> <empty/> </element> </optional> </interleave> </element> </define> <define name="bandwidth-attributes"> <attribute name="average"> <ref name="speed"/> </attribute> <optional> <attribute name="peak"> <ref name="speed"/> </attribute> </optional> <optional> <attribute name='burst'> <ref name="BurstSize"/> </attribute> </optional> </define> <define name="speed"> <data type="unsignedInt"> <param name="pattern">[0-9]+</param> <param name="minInclusive">1</param> </data> </define> <define name="BurstSize"> <data type="unsignedInt"> <param name="pattern">[0-9]+</param> <param name="minInclusive">1</param> </data> </define> <define name='unsignedShort'> <data type='integer'> <param name="minInclusive">0</param> <param name="maxInclusive">65535</param> </data> </define> <define name='protocol'> <data type='string'> <param name='pattern'>(tcp)|(udp)</param> </data> </define> <define name='addr-family'> <data type='string'> <param name="pattern">(ipv4)|(ipv6)</param> </data> </define> <define name="vlan"> <element name="vlan"> <optional> <attribute name="trunk"> <value>yes</value> </attribute> </optional> <oneOrMore> <element name="tag"> <attribute name="id"> <data type="unsignedInt"> <param name="maxInclusive">4095</param> </data> </attribute> <empty/> </element> </oneOrMore> </element> </define> </grammar>