summaryrefslogtreecommitdiffstats
path: root/src/main/resources/libvirt/rng/basictypes.rng
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/resources/libvirt/rng/basictypes.rng')
-rw-r--r--src/main/resources/libvirt/rng/basictypes.rng644
1 files changed, 644 insertions, 0 deletions
diff --git a/src/main/resources/libvirt/rng/basictypes.rng b/src/main/resources/libvirt/rng/basictypes.rng
new file mode 100644
index 0000000..2d6f1a2
--- /dev/null
+++ b/src/main/resources/libvirt/rng/basictypes.rng
@@ -0,0 +1,644 @@
+<?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">
+
+ <!-- Our unsignedInt doesn't allow a leading "+" in its lexical form -->
+ <define name="unsignedInt">
+ <data type="unsignedInt">
+ <param name="pattern">[0-9]+</param>
+ </data>
+ </define>
+ <define name="unsignedLong">
+ <data type="unsignedLong">
+ <param name="pattern">[0-9]+</param>
+ </data>
+ </define>
+
+ <define name="hexuint">
+ <data type="string">
+ <param name="pattern">(0x)?[0-9a-f]+</param>
+ </data>
+ </define>
+
+ <define name="positiveInteger">
+ <data type="positiveInteger">
+ <param name="pattern">[0-9]+</param>
+ </data>
+ </define>
+
+ <define name="octalMode">
+ <data type="unsignedInt">
+ <param name="pattern">[0-7]+</param>
+ </data>
+ </define>
+
+ <define name="uint8">
+ <choice>
+ <data type="string">
+ <param name="pattern">0x[0-9a-fA-F]{1,2}</param>
+ </data>
+ <data type="int">
+ <param name="minInclusive">0</param>
+ <param name="maxInclusive">255</param>
+ </data>
+ </choice>
+ </define>
+ <define name="uint16">
+ <choice>
+ <data type="string">
+ <param name="pattern">(0x)?[0-9a-fA-F]{1,4}</param>
+ </data>
+ <data type="int">
+ <param name="minInclusive">0</param>
+ <param name="maxInclusive">65535</param>
+ </data>
+ </choice>
+ </define>
+ <define name="uint24">
+ <choice>
+ <data type="string">
+ <param name="pattern">0x[0-9a-fA-F]{1,6}</param>
+ </data>
+ <data type="int">
+ <param name="minInclusive">0</param>
+ <param name="maxInclusive">16777215</param>
+ </data>
+ </choice>
+ </define>
+ <define name="uint32">
+ <choice>
+ <data type="string">
+ <param name="pattern">(0x)?[0-9a-fA-F]{1,8}</param>
+ </data>
+ <data type="unsignedInt">
+ <param name="minInclusive">0</param>
+ <param name="maxInclusive">4294967295</param>
+ </data>
+ </choice>
+ </define>
+
+ <define name="UUID">
+ <choice>
+ <data type="string">
+ <param name="pattern">[a-fA-F0-9]{32}</param>
+ </data>
+ <data type="string">
+ <param name="pattern">[a-fA-F0-9]{8}\-([a-fA-F0-9]{4}\-){3}[a-fA-F0-9]{12}</param>
+ </data>
+ </choice>
+ </define>
+
+ <define name="numaDistanceValue">
+ <data type="unsignedInt">
+ <param name="minInclusive">10</param>
+ <param name="maxInclusive">255</param>
+ </data>
+ </define>
+
+ <define name="pciaddress">
+ <optional>
+ <attribute name="domain">
+ <ref name="pciDomain"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="bus">
+ <ref name="pciBus"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="slot">
+ <ref name="pciSlot"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="function">
+ <ref name="pciFunc"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="multifunction">
+ <ref name="virOnOff"/>
+ </attribute>
+ </optional>
+ </define>
+ <define name="zpciaddress">
+ <optional>
+ <element name="zpci">
+ <optional>
+ <attribute name="uid">
+ <ref name="uint16"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="fid">
+ <ref name="uint32"/>
+ </attribute>
+ </optional>
+ </element>
+ </optional>
+ </define>
+
+ <!-- a 6 byte MAC address in ASCII-hex format, eg "12:34:56:78:9A:BC" -->
+ <!-- The lowest bit of the 1st byte is the "multicast" bit. a -->
+ <!-- uniMacAddr requires that bit to be 0, and a multiMacAddr -->
+ <!-- requires it to be 1. Plain macAddr will accept either. -->
+ <!-- Currently there is no use of multiMacAddr in libvirt, it -->
+ <!-- is included here for documentation/comparison purposes. -->
+ <define name="uniMacAddr">
+ <data type="string">
+ <param name="pattern">[a-fA-F0-9][02468aAcCeE](:[a-fA-F0-9]{2}){5}</param>
+ </data>
+ </define>
+ <define name="multiMacAddr">
+ <data type="string">
+ <param name="pattern">[a-fA-F0-9][13579bBdDfF](:[a-fA-F0-9]{2}){5}</param>
+ </data>
+ </define>
+ <define name="macAddr">
+ <data type="string">
+ <param name="pattern">[a-fA-F0-9]{2}(:[a-fA-F0-9]{2}){5}</param>
+ </data>
+ </define>
+
+ <!--====================================================================-->
+ <!--The duid is a unique identifier used in DHCPv6 to identity an -->
+ <!--interface on a device (system). The duid is often used by servers -->
+ <!--such as dnsmasq to assign a specific IP address (and optionally a -->
+ <!--name to an interface. The applicable standards are RFC3315 and -->
+ <!--RFC6355. These standards actually require the duid to be fixed for -->
+ <!--the hardware device and applicable to all network interfaces on -->
+ <!--that device. It is not clear that any software currently enforces -->
+ <!--this requirement although it could be implemented manually. -->
+ <!--====================================================================-->
+ <!--There are currently four types of duids defined: -->
+ <!-- type 1, duid-LLT, link-layer (MAC) plus 32 bit time when the -->
+ <!-- duid-LLT was created in seconds from January 1, 2000 -->
+ <!-- type 2, duid-EN, 32 bit "enterprise number" followed by a -->
+ <!-- variable length unique identifier. -->
+ <!-- type 3, duid-LL, link-layer (MAC) -->
+ <!-- type 4, duid-UUID, a 128 bit UUID (16 bytes) -->
+ <!--RFC3315 states that the maximum length of a duid is 128 bytes plus -->
+ <!--the 16 bit type field. Often, the machine type is "1" which is the -->
+ <!--number assigned to ethernet. -->
+
+ <define name="duidLLT">
+ <data type="string">
+ <!-- 0======| type======| 0======| machine type======| time================| link-layer============| -->
+ <param name="pattern">[0]{1,2}:[0]{0,1}[1]:[0]{1,2}:[0]{0,1}[a-fA-F1-9](:[a-fA-F0-9]{1,2}){4}(:[a-fA-F0-9]{1,2}){6,8}</param>
+ </data>
+ </define>
+
+ <define name="duidEN">
+ <data type="string">
+ <!-- 0======| type======| Enterprise number===| unique id ==============| -->
+ <param name="pattern">[0]{1,2}:[0]{0,1}[2](:[a-fA-F0-9]{1,2}){4}(:[a-fA-F0-9]{1,2}){1,124}</param>
+ </data>
+ </define>
+
+ <define name="duidLL">
+ <data type="string">
+ <!-- 0======| type======| 0======| machine type======| link-layer============| -->
+ <param name="pattern">[0]{1,2}:[0]{0,1}[3]:[0]{1,2}:[0]{0,1}[a-fA-F1-9](:[a-fA-F0-9]{1,2}){6,8}</param>
+ </data>
+ </define>
+
+ <define name="duidUUID">
+ <data type="string">
+ <!-- 0======| type======| UUID=================| -->
+ <param name="pattern">[0]{1,2}:[0]{0,1}[4](:[a-fA-F0-9]{1,2}){16}</param>
+ </data>
+ </define>
+
+ <define name="DUID">
+ <choice>
+ <ref name="duidLLT"/>
+ <ref name="duidEN"/>
+ <ref name="duidLL"/>
+ <ref name="duidUUID"/>
+ </choice>
+ </define>
+ <!--======================================================================-->
+
+ <!-- A D-Bus server address: https://dbus.freedesktop.org/doc/dbus-specification.html#addresses -->
+ <define name="dbusAddr">
+ <data type="string">
+ <param name="pattern">.+</param>
+ </data>
+ </define>
+
+ <!-- An ipv4 "dotted quad" address -->
+ <define name="ipv4Addr">
+ <data type="string">
+ <param name="pattern">(((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([1-9][0-9])|([0-9]))\.){3}((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([1-9][0-9])|([0-9]))</param>
+ </data>
+ </define>
+
+ <!-- Based on https://web.archive.org/web/20090503193311/http://blog.mes-stats.fr/2008/10/09/regex-ipv4-et-ipv6 -->
+ <define name="ipv6Addr">
+ <data type="string">
+ <!-- To understand this better, take apart the toplevel "|"s -->
+<param name="pattern">(([0-9A-Fa-f]{1,4}:){7}[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){6}:[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){5}:([0-9A-Fa-f]{1,4}:)?[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){4}:([0-9A-Fa-f]{1,4}:){0,2}[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){3}:([0-9A-Fa-f]{1,4}:){0,3}[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){2}:([0-9A-Fa-f]{1,4}:){0,4}[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){6}(((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([1-9][0-9])|([0-9]))\.){3}((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([1-9][0-9])|([0-9])))|(([0-9A-Fa-f]{1,4}:){0,5}:(((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([1-9][0-9])|([0-9]))\.){3}((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([1-9][0-9])|([0-9])))|(::([0-9A-Fa-f]{1,4}:){0,5}(((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([1-9][0-9])|([0-9]))\.){3}((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([1-9][0-9])|([0-9])))|([0-9A-Fa-f]{1,4}::([0-9A-Fa-f]{1,4}:){0,5}[0-9A-Fa-f]{1,4})|(::([0-9A-Fa-f]{1,4}:){0,6}[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){1,7}:)|(::)</param>
+ </data>
+ </define>
+
+ <define name="ipAddr">
+ <choice>
+ <ref name="ipv4Addr"/>
+ <ref name="ipv6Addr"/>
+ </choice>
+ </define>
+
+ <define name="ipv4Prefix">
+ <data type="unsignedInt">
+ <param name="maxInclusive">32</param>
+ </data>
+ </define>
+
+ <define name="ipv6Prefix">
+ <data type="unsignedInt">
+ <param name="maxInclusive">128</param>
+ </data>
+ </define>
+
+ <define name="ipPrefix">
+ <choice>
+ <ref name="ipv4Prefix"/>
+ <ref name="ipv6Prefix"/>
+ </choice>
+ </define>
+
+ <!-- objectName represents any generic string for naming objects like domain -->
+ <define name="objectNameWithSlash">
+ <data type="string">
+ <param name="pattern">[^\n]+</param>
+ </data>
+ </define>
+
+ <define name="objectName">
+ <data type="string">
+ <param name="pattern">[^/\n]+</param>
+ </data>
+ </define>
+
+ <define name="genericName">
+ <data type="string">
+ <param name="pattern">[a-zA-Z0-9_\+\-]+</param>
+ </data>
+ </define>
+
+ <define name="dnsName">
+ <data type="string">
+ <param name="pattern">[a-zA-Z0-9\.\-]+</param>
+ </data>
+ </define>
+
+ <define name="deviceName">
+ <data type="string">
+ <param name="pattern">[a-zA-Z0-9_\.\-\\:/]+</param>
+ </data>
+ </define>
+
+ <define name="zoneName">
+ <data type="string">
+ <param name="pattern">[a-zA-Z0-9_\-]+</param>
+ </data>
+ </define>
+
+ <define name="filePath">
+ <data type="string">
+ <param name="pattern">.+</param>
+ </data>
+ </define>
+
+ <define name="dirPath">
+ <data type="string">
+ <param name="pattern">.+</param>
+ </data>
+ </define>
+
+ <define name="absFilePath">
+ <data type="string">
+ <param name="pattern">(/|[a-zA-Z]:\\).+</param>
+ </data>
+ </define>
+
+ <define name="vmwarePath">
+ <data type="string">
+ <param name="pattern">\[[^\]]+\] .+</param>
+ </data>
+ </define>
+
+ <define name="absDirPath">
+ <data type="string">
+ <param name="pattern">/.*</param>
+ </data>
+ </define>
+
+ <define name="unit">
+ <data type="string">
+ <param name="pattern">([bB]([yY][tT][eE][sS]?)?)|([kKmMgGtTpPeE]([iI]?[bB])?)</param>
+ </data>
+ </define>
+ <define name="scaledInteger">
+ <optional>
+ <attribute name="unit">
+ <ref name="unit"/>
+ </attribute>
+ </optional>
+ <ref name="unsignedLong"/>
+ </define>
+
+ <define name="pciDomain">
+ <ref name="uint32"/>
+ </define>
+ <define name="pciBus">
+ <ref name="uint8"/>
+ </define>
+ <define name="pciSlot">
+ <choice>
+ <data type="string">
+ <param name="pattern">(0x)?[0-1]?[0-9a-fA-F]</param>
+ </data>
+ <data type="int">
+ <param name="minInclusive">0</param>
+ <param name="maxInclusive">31</param>
+ </data>
+ </choice>
+ </define>
+ <define name="pciFunc">
+ <choice>
+ <data type="string">
+ <param name="pattern">(0x)?[0-7]</param>
+ </data>
+ <data type="int">
+ <param name="minInclusive">0</param>
+ <param name="maxInclusive">7</param>
+ </data>
+ </choice>
+ </define>
+
+ <define name="wwn">
+ <data type="string">
+ <param name="pattern">(0x)?[0-9a-fA-F]{16}</param>
+ </data>
+ </define>
+
+ <define name="ccwCssidRange">
+ <choice>
+ <data type="string">
+ <param name="pattern">0x[0-9a-eA-E][0-9a-fA-F]?</param>
+ </data>
+ <data type="string">
+ <param name="pattern">0x[fF][0-9a-eA-E]?</param>
+ </data>
+ <data type="int">
+ <param name="minInclusive">0</param>
+ <param name="maxInclusive">254</param>
+ </data>
+ </choice>
+ </define>
+ <define name="ccwSsidRange">
+ <data type="string">
+ <param name="pattern">(0x)?[0-3]</param>
+ </data>
+ </define>
+ <define name="ccwDevnoRange">
+ <choice>
+ <data type="string">
+ <param name="pattern">0x[0-9a-fA-F]{1,4}</param>
+ </data>
+ <data type="int">
+ <param name="minInclusive">0</param>
+ <param name="maxInclusive">65535</param>
+ </data>
+ </choice>
+ </define>
+
+ <define name="cpuset">
+ <data type="string">
+ <param name="pattern">([0-9]+(-[0-9]+)?|\^[0-9]+)(,([0-9]+(-[0-9]+)?|\^[0-9]+))*</param>
+ </data>
+ </define>
+
+ <define name="volName">
+ <!-- directory pools allow almost any file name as a volume name -->
+ <data type="string">
+ <param name="pattern">[^/]+</param>
+ <except>
+ <choice>
+ <value>.</value>
+ <value>..</value>
+ </choice>
+ </except>
+ </data>
+ </define>
+
+ <define name="archnames">
+ <choice>
+ <value>aarch64</value>
+ <value>alpha</value>
+ <value>armv6l</value>
+ <value>armv7l</value>
+ <value>cris</value>
+ <value>i686</value>
+ <value>ia64</value>
+ <value>lm32</value>
+ <value>m68k</value>
+ <value>microblaze</value>
+ <value>microblazeel</value>
+ <value>mips</value>
+ <value>mipsel</value>
+ <value>mips64</value>
+ <value>mips64el</value>
+ <value>openrisc</value>
+ <value>parisc</value>
+ <value>parisc64</value>
+ <value>ppc</value>
+ <value>ppc64</value>
+ <value>ppc64le</value>
+ <value>ppcemb</value>
+ <value>riscv32</value>
+ <value>riscv64</value>
+ <value>s390</value>
+ <value>s390x</value>
+ <value>sh4</value>
+ <value>sh4eb</value>
+ <value>sparc</value>
+ <value>sparc64</value>
+ <value>unicore32</value>
+ <value>x86_64</value>
+ <value>xtensa</value>
+ <value>xtensaeb</value>
+ </choice>
+ </define>
+
+ <define name="PortNumber">
+ <data type="int">
+ <param name="minInclusive">-1</param>
+ <param name="maxInclusive">65535</param>
+ </data>
+ </define>
+
+ <define name="sourceinfoadapter">
+ <element name="adapter">
+ <choice>
+ <group>
+ <!-- To keep back-compat, "type" is not mandatory for
+ scsi_host adapter -->
+ <optional>
+ <attribute name="type">
+ <value>scsi_host</value>
+ </attribute>
+ </optional>
+ <choice>
+ <group>
+ <attribute name="name">
+ <text/>
+ </attribute>
+ </group>
+ <group>
+ <interleave>
+ <element name="parentaddr">
+ <optional>
+ <attribute name="unique_id">
+ <ref name="positiveInteger"/>
+ </attribute>
+ </optional>
+ <element name="address">
+ <ref name="pciaddress"/>
+ </element>
+ </element>
+ </interleave>
+ </group>
+ </choice>
+ </group>
+ <group>
+ <attribute name="type">
+ <value>fc_host</value>
+ </attribute>
+ <optional>
+ <attribute name="parent">
+ <text/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="managed">
+ <ref name="virYesNo"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="parent_wwnn">
+ <ref name="wwn"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="parent_wwpn">
+ <ref name="wwn"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="parent_fabric_wwn">
+ <ref name="wwn"/>
+ </attribute>
+ </optional>
+ <attribute name="wwnn">
+ <ref name="wwn"/>
+ </attribute>
+ <attribute name="wwpn">
+ <ref name="wwn"/>
+ </attribute>
+ </group>
+ </choice>
+ <empty/>
+ </element>
+ </define>
+
+ <define name="isaaddress">
+ <optional>
+ <attribute name="iobase">
+ <data type="string">
+ <param name="pattern">0x[a-fA-F0-9]{1,4}</param>
+ </data>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="irq">
+ <data type="string">
+ <param name="pattern">0x[a-fA-F0-9]</param>
+ </data>
+ </attribute>
+ </optional>
+ </define>
+
+ <define name="link-speed-state">
+ <optional>
+ <element name="link">
+ <optional>
+ <attribute name="speed">
+ <ref name="unsignedInt"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="state">
+ <choice>
+ <value>unknown</value>
+ <value>notpresent</value>
+ <value>down</value>
+ <value>lowerlayerdown</value>
+ <value>testing</value>
+ <value>dormant</value>
+ <value>up</value>
+ </choice>
+ </attribute>
+ </optional>
+ </element>
+ </optional>
+ </define>
+
+ <define name="virYesNo">
+ <choice>
+ <value>yes</value>
+ <value>no</value>
+ </choice>
+ </define>
+
+ <define name="virOnOff">
+ <choice>
+ <value>on</value>
+ <value>off</value>
+ </choice>
+ </define>
+
+ <define name="metadata">
+ <element name="metadata">
+ <zeroOrMore>
+ <ref name="customElement"/>
+ </zeroOrMore>
+ </element>
+ </define>
+
+ <define name="customElement">
+ <element>
+ <anyName/>
+ <zeroOrMore>
+ <choice>
+ <attribute>
+ <anyName/>
+ </attribute>
+ <text/>
+ <ref name="customElement"/>
+ </choice>
+ </zeroOrMore>
+ </element>
+ </define>
+
+ <define name="leaseUnit">
+ <choice>
+ <value>seconds</value>
+ <value>minutes</value>
+ <value>hours</value>
+ </choice>
+ </define>
+
+</grammar>