mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2024-12-26 07:36:19 +00:00
298fa4858c
This adds a new "localOnly" attribute on the domain element of the
network xml. With this set to "yes", DNS requests under that domain
will only be resolved by libvirt's dnsmasq, never forwarded upstream.
This was how it worked before commit f69a6b987d
, and I found that
functionality useful. For example, I have my host's NetworkManager
dnsmasq configured to forward that domain to libvirt's dnsmasq, so I can
easily resolve guest names from outside. But if libvirt's dnsmasq
doesn't know a name and forwards it to the host, I'd get an endless
forwarding loop. Now I can set localOnly="yes" to prevent the loop.
Signed-off-by: Josh Stone <jistone@redhat.com>
383 lines
12 KiB
XML
383 lines
12 KiB
XML
<?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>
|
|
|
|
<!-- <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">
|
|
<ref name="virOnOff"/>
|
|
</attribute>
|
|
</optional>
|
|
|
|
<optional>
|
|
<attribute name="delay">
|
|
<data type="unsignedLong"/>
|
|
</attribute>
|
|
</optional>
|
|
|
|
<optional>
|
|
<attribute name="macTableManager">
|
|
<choice>
|
|
<value>kernel</value>
|
|
<value>libvirt</value>
|
|
</choice>
|
|
</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>
|
|
<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'>
|
|
<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="forwardPlainNames">
|
|
<ref name="virYesNo"/>
|
|
</attribute>
|
|
</optional>
|
|
<interleave>
|
|
<zeroOrMore>
|
|
<element name="forwarder">
|
|
<attribute name="addr"><ref name="ipAddr"/></attribute>
|
|
</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>
|
|
<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="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>
|
|
<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="ipAddr"/></attribute>
|
|
<attribute name="end"><ref name="ipAddr"/></attribute>
|
|
</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>
|
|
</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>
|
|
<!-- <route> element -->
|
|
<zeroOrMore>
|
|
<ref name="route"/>
|
|
</zeroOrMore>
|
|
</interleave>
|
|
</element>
|
|
</define>
|
|
</grammar>
|