<?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"> <interleave> <!-- The name of the network, used to refer to it through the API and in virsh --> <element name="name"> <text/> </element> <!-- <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="stp"> <choice> <value>on</value> <value>off</value> </choice> </attribute> </optional> <optional> <attribute name="delay"> <data type="integer"/> </attribute> </optional> </element> </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>bridge</value> <value>passthrough</value> <value>private</value> <value>vepa</value> </choice> </attribute> </optional> <interleave> <zeroOrMore> <element name='interface'> <attribute name='dev'> <ref name='deviceName'/> </attribute> </element> </zeroOrMore> <optional> <element name='pf'> <attribute name='dev'> <ref name='deviceName'/> </attribute> </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"> <choice> <value>yes</value> <value>no</value> </choice> </attribute> </optional> <optional> <ref name="virtualPortProfile"/> </optional> </element> </zeroOrMore> <!-- <domain> element --> <optional> <element name="domain"> <attribute name="name"><ref name="dnsName"/></attribute> </element> </optional> <!-- Define the DNS related elements like TXT records and other features in the <dns> element --> <optional> <element name="dns"> <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> <attribute name="target"><text/></attribute> <attribute name="port"><ref name="unsignedShort"/></attribute> <attribute name="priority"><ref name="unsignedShort"/></attribute> <attribute name="weight"><ref name="unsignedShort"/></attribute> </optional> </element> </zeroOrMore> <zeroOrMore> <element name="host"> <attribute name="ip"><ref name="ipv4Addr"/></attribute> <oneOrMore> <element name="hostname"><ref name="dnsName"/></element> </oneOrMore> </element> </zeroOrMore> </element> </optional> <optional> <ref name="bandwidth"/> </optional> <optional> <element name="link"> <attribute name="state"> <choice> <value>up</value> <value>down</value> </choice> </attribute> <empty/> </element> </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> <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"> <zeroOrMore> <element name="range"> <attribute name="start"><ref name="ipv4Addr"/></attribute> <attribute name="end"><ref name="ipv4Addr"/></attribute> </element> </zeroOrMore> <zeroOrMore> <element name="host"> <attribute name="mac"><ref name="uniMacAddr"/></attribute> <attribute name="name"><text/></attribute> <attribute name="ip"><ref name="ipv4Addr"/></attribute> </element> </zeroOrMore> <optional> <element name="bootp"> <attribute name="file"><ref name="filePath"/></attribute> <optional> <attribute name="server"><ref name="dnsName"/></attribute> </optional> </element> </optional> </element> </optional> </element> </zeroOrMore> </interleave> </element> </define> </grammar>