summaryrefslogtreecommitdiffstats
path: root/src/main/resources/libvirt/rng/network.rng
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/resources/libvirt/rng/network.rng')
-rw-r--r--src/main/resources/libvirt/rng/network.rng450
1 files changed, 450 insertions, 0 deletions
diff --git a/src/main/resources/libvirt/rng/network.rng b/src/main/resources/libvirt/rng/network.rng
new file mode 100644
index 0000000..4317572
--- /dev/null
+++ b/src/main/resources/libvirt/rng/network.rng
@@ -0,0 +1,450 @@
+<?xml version="1.0"?>
+<!-- A Relax NG schema for the libvirt network XML format -->
+<grammar xmlns="http://relaxng.org/ns/structure/1.0"
+ datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <start>
+ <ref name="network"/>
+ </start>
+
+ <include href="basictypes.rng"/>
+ <include href="networkcommon.rng"/>
+
+ <define name="network">
+
+ <element name="network">
+ <optional>
+ <attribute name="connections">
+ <data type="unsignedInt"/>
+ </attribute>
+ </optional>
+ <!-- Enables IPv6 guest-to-guest communications on a network
+ with no gateways addresses specified -->
+ <optional>
+ <attribute name="ipv6">
+ <ref name="virYesNo"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="trustGuestRxFilters">
+ <ref name="virYesNo"/>
+ </attribute>
+ </optional>
+ <interleave>
+
+ <!-- The name of the network, used to refer to it through the API
+ and in virsh -->
+ <element name="name">
+ <text/>
+ </element>
+
+ <!-- <metadata> element -->
+ <optional>
+ <ref name="metadata"/>
+ </optional>
+
+ <!-- <uuid> element -->
+ <optional>
+ <element name="uuid"><ref name="UUID"/></element>
+ </optional>
+
+ <!-- <bridge> element -->
+ <optional>
+ <!-- The name of the network to be set up; this will back
+ the network on the host -->
+ <element name="bridge">
+ <optional>
+ <attribute name="name">
+ <ref name="deviceName"/>
+ </attribute>
+ </optional>
+
+ <optional>
+ <attribute name="zone">
+ <ref name="zoneName"/>
+ </attribute>
+ </optional>
+
+ <optional>
+ <attribute name="stp">
+ <ref name="virOnOff"/>
+ </attribute>
+ </optional>
+
+ <optional>
+ <attribute name="delay">
+ <data type="unsignedLong"/>
+ </attribute>
+ </optional>
+
+ <optional>
+ <attribute name="macTableManager">
+ <ref name="macTableManager"/>
+ </attribute>
+ </optional>
+
+ </element>
+ </optional>
+
+ <!-- <mtu> element -->
+ <optional>
+ <ref name="mtu"/>
+ </optional>
+
+ <!-- <mac> element -->
+ <optional>
+ <element name="mac">
+ <attribute name="address"><ref name="uniMacAddr"/></attribute>
+ <empty/>
+ </element>
+ </optional>
+
+ <!-- <forward> element -->
+ <optional>
+ <!-- The device through which the bridge is connected to the
+ rest of the network -->
+ <element name="forward">
+ <optional>
+ <attribute name="dev">
+ <ref name="deviceName"/>
+ </attribute>
+ </optional>
+
+ <optional>
+ <attribute name="mode">
+ <choice>
+ <value>nat</value>
+ <value>route</value>
+ <value>open</value>
+ <value>bridge</value>
+ <value>passthrough</value>
+ <value>private</value>
+ <value>vepa</value>
+ <value>hostdev</value>
+ </choice>
+ </attribute>
+ </optional>
+
+ <optional>
+ <attribute name="managed">
+ <ref name="virYesNo"/>
+ </attribute>
+ </optional>
+ <interleave>
+ <choice>
+ <group>
+ <zeroOrMore>
+ <element name="interface">
+ <attribute name="dev">
+ <ref name="deviceName"/>
+ </attribute>
+ <optional>
+ <attribute name="connections">
+ <data type="unsignedInt"/>
+ </attribute>
+ </optional>
+ </element>
+ </zeroOrMore>
+ </group>
+ <group>
+ <zeroOrMore>
+ <element name="address">
+ <attribute name="type">
+ <value>pci</value>
+ </attribute>
+ <ref name="pciaddress"/>
+ <optional>
+ <attribute name="connections">
+ <data type="unsignedInt"/>
+ </attribute>
+ </optional>
+ </element>
+ </zeroOrMore>
+ </group>
+ </choice>
+ <optional>
+ <element name="pf">
+ <attribute name="dev">
+ <ref name="deviceName"/>
+ </attribute>
+ </element>
+ </optional>
+ <optional>
+ <element name="driver">
+ <attribute name="name">
+ <choice>
+ <value>kvm</value>
+ <value>vfio</value>
+ </choice>
+ </attribute>
+ <empty/>
+ </element>
+ </optional>
+ <optional>
+ <element name="nat">
+ <optional>
+ <attribute name="ipv6">
+ <ref name="virYesNo"/>
+ </attribute>
+ </optional>
+ <interleave>
+ <optional>
+ <element name="address">
+ <attribute name="start">
+ <ref name="ipv4Addr"/>
+ </attribute>
+ <attribute name="end">
+ <ref name="ipv4Addr"/>
+ </attribute>
+ </element>
+ </optional>
+ <optional>
+ <element name="port">
+ <attribute name="start">
+ <ref name="port"/>
+ </attribute>
+ <attribute name="end">
+ <ref name="port"/>
+ </attribute>
+ </element>
+ </optional>
+ </interleave>
+ </element>
+ </optional>
+ </interleave>
+ </element>
+ </optional>
+
+ <!-- <virtualport> element -->
+ <optional>
+ <ref name="virtualPortProfile"/>
+ </optional>
+
+ <!-- <portgroup> elements -->
+ <zeroOrMore>
+ <element name="portgroup">
+ <attribute name="name">
+ <ref name="deviceName"/>
+ </attribute>
+ <optional>
+ <attribute name="default">
+ <ref name="virYesNo"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="trustGuestRxFilters">
+ <ref name="virYesNo"/>
+ </attribute>
+ </optional>
+ <interleave>
+ <optional>
+ <ref name="virtualPortProfile"/>
+ </optional>
+ <optional>
+ <ref name="bandwidth"/>
+ </optional>
+ <optional>
+ <ref name="vlan"/>
+ </optional>
+ </interleave>
+ </element>
+ </zeroOrMore>
+
+ <!-- <domain> element -->
+ <optional>
+ <element name="domain">
+ <attribute name="name"><ref name="dnsName"/></attribute>
+ <optional>
+ <attribute name="localOnly"><ref name="virYesNo"/></attribute>
+ </optional>
+ </element>
+ </optional>
+
+ <!-- Define the DNS related elements like TXT records
+ and other features in the <dns> element -->
+ <optional>
+ <element name="dns">
+ <optional>
+ <attribute name="enable">
+ <ref name="virYesNo"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="forwardPlainNames">
+ <ref name="virYesNo"/>
+ </attribute>
+ </optional>
+ <interleave>
+ <zeroOrMore>
+ <element name="forwarder">
+ <optional>
+ <attribute name="addr"><ref name="ipAddr"/></attribute>
+ </optional>
+ <optional>
+ <attribute name="domain"><ref name="dnsName"/></attribute>
+ </optional>
+ <empty/>
+ </element>
+ </zeroOrMore>
+ <zeroOrMore>
+ <element name="txt">
+ <attribute name="name"><ref name="dnsName"/></attribute>
+ <attribute name="value"><text/></attribute>
+ </element>
+ </zeroOrMore>
+ <zeroOrMore>
+ <element name="srv">
+ <attribute name="service"><text/></attribute>
+ <attribute name="protocol">
+ <ref name="protocol"/>
+ </attribute>
+ <optional>
+ <attribute name="domain"><ref name="dnsName"/></attribute>
+ </optional>
+ <optional>
+ <attribute name="target"><text/></attribute>
+ </optional>
+ <optional>
+ <attribute name="port">
+ <ref name="unsignedShort"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="priority">
+ <ref name="unsignedShort"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="weight">
+ <ref name="unsignedShort"/>
+ </attribute>
+ </optional>
+ </element>
+ </zeroOrMore>
+ <zeroOrMore>
+ <element name="host">
+ <attribute name="ip"><ref name="ipAddr"/></attribute>
+ <oneOrMore>
+ <element name="hostname"><ref name="dnsName"/></element>
+ </oneOrMore>
+ </element>
+ </zeroOrMore>
+ </interleave>
+ </element>
+ </optional>
+ <optional>
+ <ref name="bandwidth"/>
+ </optional>
+ <optional>
+ <ref name="vlan"/>
+ </optional>
+ <optional>
+ <ref name="portOptions"/>
+ </optional>
+
+ <!-- <ip> element -->
+ <zeroOrMore>
+ <!-- The IP element sets up NAT'ing and an optional DHCP server
+ local to the host. -->
+ <element name="ip">
+ <optional>
+ <attribute name="address"><ref name="ipAddr"/></attribute>
+ </optional>
+ <optional>
+ <choice>
+ <attribute name="netmask"><ref name="ipv4Addr"/></attribute>
+ <attribute name="prefix"><ref name="ipPrefix"/></attribute>
+ </choice>
+ </optional>
+ <optional>
+ <attribute name="family"><ref name="addr-family"/></attribute>
+ </optional>
+ <optional>
+ <attribute name="localPtr"><ref name="virYesNo"/></attribute>
+ </optional>
+ <interleave>
+ <optional>
+ <element name="tftp">
+ <attribute name="root"><text/></attribute>
+ </element>
+ </optional>
+ <optional>
+ <!-- Define the range(s) of IP addresses that the DHCP
+ server should hand out -->
+ <element name="dhcp">
+ <interleave>
+ <zeroOrMore>
+ <element name="range">
+ <attribute name="start"><ref name="ipAddr"/></attribute>
+ <attribute name="end"><ref name="ipAddr"/></attribute>
+ <interleave>
+ <optional>
+ <element name="lease">
+ <attribute name="expiry"><ref name="unsignedLong"/></attribute>
+ <optional>
+ <attribute name="unit"><ref name="leaseUnit"/></attribute>
+ </optional>
+ </element>
+ </optional>
+ </interleave>
+ </element>
+ </zeroOrMore>
+ <zeroOrMore>
+ <element name="host">
+ <choice>
+ <group>
+ <choice>
+ <attribute name="mac"><ref name="uniMacAddr"/></attribute>
+ <attribute name="id"><ref name="DUID"/></attribute>
+ </choice>
+ <optional>
+ <attribute name="name"><text/></attribute>
+ </optional>
+ </group>
+ <attribute name="name"><text/></attribute>
+ </choice>
+ <attribute name="ip"><ref name="ipAddr"/></attribute>
+ <interleave>
+ <optional>
+ <element name="lease">
+ <attribute name="expiry"><ref name="unsignedLong"/></attribute>
+ <optional>
+ <attribute name="unit"><ref name="leaseUnit"/></attribute>
+ </optional>
+ </element>
+ </optional>
+ </interleave>
+ </element>
+ </zeroOrMore>
+ <optional>
+ <element name="bootp">
+ <attribute name="file"><ref name="filePath"/></attribute>
+ <optional>
+ <attribute name="server"><ref name="dnsName"/></attribute>
+ </optional>
+ </element>
+ </optional>
+ </interleave>
+ </element>
+ </optional>
+ </interleave>
+ </element>
+ </zeroOrMore>
+ <!-- <route> element -->
+ <zeroOrMore>
+ <ref name="route"/>
+ </zeroOrMore>
+
+ <!-- <dnsmasq:options> -->
+ <optional>
+ <element name="options" ns="http://libvirt.org/schemas/network/dnsmasq/1.0">
+ <zeroOrMore>
+ <element name="option">
+ <attribute name="value"/>
+ </element>
+ </zeroOrMore>
+ </element>
+ </optional>
+ </interleave>
+ </element>
+ </define>
+</grammar>