mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2024-08-27 11:01:19 +00:00
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.
34 lines
645 B
Bash
Executable File
34 lines
645 B
Bash
Executable File
#!/bin/sh
|
|
|
|
test -z "$srcdir" && srcdir=`pwd`
|
|
test -z "$abs_srcdir" && abs_srcdir=`pwd`
|
|
|
|
DIRS="../src/network networkschemadata"
|
|
|
|
n=0
|
|
f=0
|
|
for dir in $DIRS
|
|
do
|
|
XML=`find $abs_srcdir/$dir -name '*.xml'` || exit 1
|
|
|
|
for xml in $XML
|
|
do
|
|
n=`expr $n + 1`
|
|
printf "%4d) %.60s " $n $(basename $(dirname $xml))"/"$(basename $xml)
|
|
result=`xmllint --relaxng $srcdir/../docs/schemas/network.rng --noout $xml 2>&1`
|
|
ret=$?
|
|
if test $ret = 0; then
|
|
echo "OK"
|
|
else
|
|
echo "FAILED"
|
|
echo $result
|
|
f=`expr $f + 1`
|
|
fi
|
|
done
|
|
done
|
|
echo "Validated $n files, $f failed"
|
|
|
|
ret=0
|
|
test $f != 0 && ret=255
|
|
exit $ret
|