mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2024-12-25 15:15:25 +00:00
738ee810b4
Currently, libvirtd will start a dnsmasq process for the virtual network, but (aside from killing the dnsmasq process and replacing it), there's no way to define tftp boot options. This change introduces the appropriate tags to the dhcp configuration: <network> <name>default</name> <bridge name="virbr%d" /> <forward/> <ip address="192.168.122.1" netmask="255.255.255.0"> <tftp root="/var/lib/tftproot" /> <dhcp> <range start="192.168.122.2" end="192.168.122.254" /> <bootp file="pxeboot.img"/> </dhcp> </ip> </network> When the attributes are present, these are passed to the arguments to dnsmasq: dnsmasq [...] --enable-tftp --tftp-root /srv/tftp --dhcp-boot pxeboot.img ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^ from <tftp /> from <bootp /> At present, only local tftp servers are supported (ie, dnsmasq runs as the tftp server), but we could improve this in future by adding a server= attribute. Signed-off-by: Jeremy Kerr <jk@ozlabs.org> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com> 2009-09-21 Paolo Bonzini <pbonzini@redhat.com> Jeremy Kerr <jk@ozlabs.org> * docs/formatnetwork.html.in: Document new tags. * docs/formatnetwork.html: Regenerate. * docs/schemas/network.rng: Update. * src/network_conf.c (virNetworkDefFree): Free new fields. (virNetworkDHCPRangeDefParseXML): Parse <bootp>. (virNetworkIPParseXML): New, parsing <dhcp> and <tftp>. (virNetworkDefParseXML): Use virNetworkIPParseXML instead of virNetworkDHCPRangeDefParseXML. (virNetworkDefFormat): Pretty print new fields. * src/network_conf.h (struct _virNetworkDef): Add netboot fields. * src/network_driver.c (networkBuildDnsmasqArgv): Add TFTP and BOOTP arguments. * tests/Makefile.am (EXTRA_DIST): Add networkschemadata. * tests/networkschematest: Look in networkschemadata. * tests/networkschemadata/netboot-network.xml: New.
94 lines
2.8 KiB
Plaintext
94 lines
2.8 KiB
Plaintext
<!-- A Relax NG schema for the libvirt network XML format -->
|
|
<element name="network" xmlns="http://relaxng.org/ns/structure/1.0"
|
|
datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
|
|
<interleave>
|
|
<!-- The name of the network, used to refer to it through the API
|
|
and in virsh -->
|
|
<element name="name"><text/></element>
|
|
<optional>
|
|
<element name="uuid"><text/></element>
|
|
</optional>
|
|
<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"><text/></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>
|
|
<optional>
|
|
<!-- The device through which the bridge is connected to the
|
|
rest of the network -->
|
|
<element name="forward">
|
|
<optional><attribute name="dev"><text/></attribute></optional>
|
|
<optional>
|
|
<attribute name="mode">
|
|
<choice>
|
|
<value>nat</value>
|
|
<value>routed</value>
|
|
</choice>
|
|
</attribute>
|
|
</optional>
|
|
</element>
|
|
</optional>
|
|
<optional>
|
|
<element name="domain">
|
|
<attribute name="name"><text/></attribute>
|
|
</element>
|
|
</optional>
|
|
<optional>
|
|
<!-- The IP element sets up NAT'ing and an optional DHCP server
|
|
local to the host. -->
|
|
<!-- FIXME: address, netmask and the start and end of the ranges
|
|
are IP addresses, and should be validated as such in the scheme -->
|
|
<element name="ip">
|
|
<optional>
|
|
<attribute name="address"><text/></attribute>
|
|
</optional>
|
|
<optional>
|
|
<attribute name="netmask"><text/></attribute>
|
|
</optional>
|
|
<optional>
|
|
<element name="tftp">
|
|
<attribute name="root"><text/></attribute>
|
|
</element>
|
|
</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"><text/></attribute>
|
|
<attribute name="end"><text/></attribute>
|
|
</element>
|
|
</zeroOrMore>
|
|
<zeroOrMore>
|
|
<element name="host">
|
|
<attribute name="mac"><text/></attribute>
|
|
<attribute name="name"><text/></attribute>
|
|
<attribute name="ip"><text/></attribute>
|
|
</element>
|
|
</zeroOrMore>
|
|
<optional>
|
|
<element name="bootp">
|
|
<attribute name="file"><text/></attribute>
|
|
</element>
|
|
</optional>
|
|
</element>
|
|
</element>
|
|
</optional>
|
|
</interleave>
|
|
</element>
|