network: add domain to unqualified names defined with <host>

If a domain name is defined for a network, add the --expand-hosts
option to the dnsmasq commandline. This results in the domain being
added to any hostname that is defined in a dns <host> element and
contains no '.' characters (i.e. it is an "unqualified"
hostname). Since PTR records are automatically created for any name
defined in <host>, the result of a PTR request will change from the
unqualified name to the qualified name.

This also has the same effect on any hostnames that dnsmasq reads
from the host's /etc/hosts file.

(In the case of guest hostnames that were learned by dnsmasq via DHCP
requests, they were already getting the domain name added on, even
without --expand-hosts).
This commit is contained in:
Laine Stump 2011-06-25 01:14:38 -04:00
parent 6818cf8690
commit 25171f607c
5 changed files with 11 additions and 5 deletions

View File

@ -617,6 +617,10 @@ networkBuildDnsmasqArgv(virNetworkObjPtr network,
if (ipdef->nranges || ipdef->nhosts) if (ipdef->nranges || ipdef->nhosts)
virCommandAddArg(cmd, "--dhcp-no-override"); virCommandAddArg(cmd, "--dhcp-no-override");
/* add domain to any non-qualified hostnames in /etc/hosts or addn-hosts */
if (network->def->domain)
virCommandAddArg(cmd, "--expand-hosts");
if ((dctx = networkSaveDnsmasqHostsfile(ipdef, network->def->dns, network->def->name, false))) { if ((dctx = networkSaveDnsmasqHostsfile(ipdef, network->def->dns, network->def->name, false))) {
if (dctx->hostsfile->nhosts) if (dctx->hostsfile->nhosts)
virCommandAddArgPair(cmd, "--dhcp-hostsfile", virCommandAddArgPair(cmd, "--dhcp-hostsfile",

View File

@ -1,3 +1,3 @@
/usr/sbin/dnsmasq --strict-order --bind-interfaces --conf-file= \ /usr/sbin/dnsmasq --strict-order --bind-interfaces --domain example.com \
--except-interface lo --listen-address 192.168.122.1 \ --conf-file= --except-interface lo --listen-address 192.168.122.1 \
--addn-hosts=/var/lib/libvirt/dnsmasq/default.addnhosts\ --expand-hosts --addn-hosts=/var/lib/libvirt/dnsmasq/default.addnhosts\

View File

@ -3,6 +3,7 @@
<uuid>81ff0d90-c91e-6742-64da-4a736edb9a9c</uuid> <uuid>81ff0d90-c91e-6742-64da-4a736edb9a9c</uuid>
<forward dev='eth0' mode='nat'/> <forward dev='eth0' mode='nat'/>
<bridge name='virbr0' stp='on' delay='0' /> <bridge name='virbr0' stp='on' delay='0' />
<domain name="example.com"/>
<dns> <dns>
<host ip='192.168.122.1'> <host ip='192.168.122.1'>
<hostname>host</hostname> <hostname>host</hostname>

View File

@ -2,5 +2,5 @@
--conf-file= --except-interface lo --listen-address 192.168.122.1 \ --conf-file= --except-interface lo --listen-address 192.168.122.1 \
--dhcp-range 192.168.122.2,192.168.122.254 \ --dhcp-range 192.168.122.2,192.168.122.254 \
--dhcp-leasefile=/var/lib/libvirt/dnsmasq/netboot.leases \ --dhcp-leasefile=/var/lib/libvirt/dnsmasq/netboot.leases \
--dhcp-lease-max=253 --dhcp-no-override --enable-tftp \ --dhcp-lease-max=253 --dhcp-no-override --expand-hosts --enable-tftp \
--tftp-root /var/lib/tftproot --dhcp-boot pxeboot.img\ --tftp-root /var/lib/tftproot --dhcp-boot pxeboot.img\

View File

@ -2,4 +2,5 @@
--conf-file= --except-interface lo --listen-address 192.168.122.1 \ --conf-file= --except-interface lo --listen-address 192.168.122.1 \
--dhcp-range 192.168.122.2,192.168.122.254 \ --dhcp-range 192.168.122.2,192.168.122.254 \
--dhcp-leasefile=/var/lib/libvirt/dnsmasq/netboot.leases \ --dhcp-leasefile=/var/lib/libvirt/dnsmasq/netboot.leases \
--dhcp-lease-max=253 --dhcp-no-override --dhcp-boot pxeboot.img,,10.20.30.40\ --dhcp-lease-max=253 --dhcp-no-override --expand-hosts \
--dhcp-boot pxeboot.img,,10.20.30.40\