From 3fcc90968cda55c24ed885db790b0ad1c5278d2e Mon Sep 17 00:00:00 2001 From: Gene Czarcinski Date: Wed, 22 Aug 2012 12:59:24 -0400 Subject: [PATCH] dnsmasq: avoid forwarding queries without a domain dnsmasq is forwarding a number of queries upstream that should not be done. There still remains an MX query for a plain name with no domain specified that will be forwarded is dnsmasq has --domain=xxx --local=/xxx/ specified. This does not happen with no domain name and --local=// ... not a libvirt problem. BTW, thanks again to Claudio Bley! (cherry picked from commit f3868259ca0517212e439a65c9060868f673b6c9) Conflicts: AUTHORS --- AUTHORS | 1 + src/network/bridge_driver.c | 6 +++++- tests/networkxml2argvdata/isolated-network.argv | 3 ++- tests/networkxml2argvdata/nat-network-dns-hosts.argv | 3 ++- .../nat-network-dns-srv-record-minimal.argv | 2 +- tests/networkxml2argvdata/nat-network-dns-srv-record.argv | 2 +- tests/networkxml2argvdata/nat-network-dns-txt-record.argv | 3 ++- tests/networkxml2argvdata/nat-network.argv | 3 ++- tests/networkxml2argvdata/netboot-network.argv | 5 +++-- tests/networkxml2argvdata/netboot-proxy-network.argv | 5 +++-- tests/networkxml2argvdata/routed-network.argv | 3 ++- 11 files changed, 24 insertions(+), 12 deletions(-) diff --git a/AUTHORS b/AUTHORS index 76fa3cd2d8..41e6bd55ca 100644 --- a/AUTHORS +++ b/AUTHORS @@ -241,6 +241,7 @@ Patches have also been contributed by: Thang Pham Eiichi Tsukata Wido den Hollander + Gene Czarcinski [....send patches to get your name here....] diff --git a/src/network/bridge_driver.c b/src/network/bridge_driver.c index d82212f91d..f66718a42c 100644 --- a/src/network/bridge_driver.c +++ b/src/network/bridge_driver.c @@ -491,7 +491,11 @@ networkBuildDnsmasqArgv(virNetworkObjPtr network, virCommandAddArgList(cmd, "--strict-order", "--bind-interfaces", NULL); if (network->def->domain) - virCommandAddArgList(cmd, "--domain", network->def->domain, NULL); + virCommandAddArgPair(cmd, "--domain", network->def->domain); + /* need to specify local even if no domain specified */ + virCommandAddArgFormat(cmd, "--local=/%s/", + network->def->domain ? network->def->domain : ""); + virCommandAddArgList(cmd, "--domain-needed", "--filterwin2k", NULL); if (pidfile) virCommandAddArgPair(cmd, "--pid-file", pidfile); diff --git a/tests/networkxml2argvdata/isolated-network.argv b/tests/networkxml2argvdata/isolated-network.argv index a9beb05911..276f42a4f6 100644 --- a/tests/networkxml2argvdata/isolated-network.argv +++ b/tests/networkxml2argvdata/isolated-network.argv @@ -1,4 +1,5 @@ -@DNSMASQ@ --strict-order --bind-interfaces --conf-file= \ +@DNSMASQ@ --strict-order --bind-interfaces \ +--local=// --domain-needed --filterwin2k --conf-file= \ --except-interface lo --dhcp-option=3 --no-resolv \ --listen-address 192.168.152.1 \ --dhcp-range 192.168.152.2,192.168.152.254 \ diff --git a/tests/networkxml2argvdata/nat-network-dns-hosts.argv b/tests/networkxml2argvdata/nat-network-dns-hosts.argv index c7e496797d..8040e2ae83 100644 --- a/tests/networkxml2argvdata/nat-network-dns-hosts.argv +++ b/tests/networkxml2argvdata/nat-network-dns-hosts.argv @@ -1,3 +1,4 @@ -@DNSMASQ@ --strict-order --bind-interfaces --domain example.com \ +@DNSMASQ@ --strict-order --bind-interfaces --domain=example.com \ +--local=/example.com/ --domain-needed --filterwin2k \ --conf-file= --except-interface lo --listen-address 192.168.122.1 \ --expand-hosts --addn-hosts=/var/lib/libvirt/dnsmasq/default.addnhosts\ diff --git a/tests/networkxml2argvdata/nat-network-dns-srv-record-minimal.argv b/tests/networkxml2argvdata/nat-network-dns-srv-record-minimal.argv index ea1da6d5f8..bb50fd6ddc 100644 --- a/tests/networkxml2argvdata/nat-network-dns-srv-record-minimal.argv +++ b/tests/networkxml2argvdata/nat-network-dns-srv-record-minimal.argv @@ -1,7 +1,7 @@ @DNSMASQ@ \ --strict-order \ --bind-interfaces \ ---conf-file= \ +--local=// --domain-needed --filterwin2k --conf-file= \ --except-interface lo \ --srv-host=name.tcp.,,,, \ --listen-address 192.168.122.1 \ diff --git a/tests/networkxml2argvdata/nat-network-dns-srv-record.argv b/tests/networkxml2argvdata/nat-network-dns-srv-record.argv index 84c2d2f60d..36498f2233 100644 --- a/tests/networkxml2argvdata/nat-network-dns-srv-record.argv +++ b/tests/networkxml2argvdata/nat-network-dns-srv-record.argv @@ -1,7 +1,7 @@ @DNSMASQ@ \ --strict-order \ --bind-interfaces \ ---conf-file= \ +--local=// --domain-needed --filterwin2k --conf-file= \ --except-interface lo \ --srv-host=name.tcp.test-domain-name,.,1024,10,10 \ --listen-address 192.168.122.1 \ diff --git a/tests/networkxml2argvdata/nat-network-dns-txt-record.argv b/tests/networkxml2argvdata/nat-network-dns-txt-record.argv index bed309ffe6..1b318716e5 100644 --- a/tests/networkxml2argvdata/nat-network-dns-txt-record.argv +++ b/tests/networkxml2argvdata/nat-network-dns-txt-record.argv @@ -1,4 +1,5 @@ -@DNSMASQ@ --strict-order --bind-interfaces --conf-file= \ +@DNSMASQ@ --strict-order --bind-interfaces \ +--local=// --domain-needed --filterwin2k --conf-file= \ --except-interface lo --txt-record=example,example value \ --listen-address 192.168.122.1 --listen-address 192.168.123.1 \ --listen-address 2001:db8:ac10:fe01::1 \ diff --git a/tests/networkxml2argvdata/nat-network.argv b/tests/networkxml2argvdata/nat-network.argv index 80878a8eb0..265b931980 100644 --- a/tests/networkxml2argvdata/nat-network.argv +++ b/tests/networkxml2argvdata/nat-network.argv @@ -1,4 +1,5 @@ -@DNSMASQ@ --strict-order --bind-interfaces --conf-file= \ +@DNSMASQ@ --strict-order --bind-interfaces \ +--local=// --domain-needed --filterwin2k --conf-file= \ --except-interface lo --listen-address 192.168.122.1 \ --listen-address 192.168.123.1 --listen-address 2001:db8:ac10:fe01::1 \ --listen-address 2001:db8:ac10:fd01::1 --listen-address 10.24.10.1 \ diff --git a/tests/networkxml2argvdata/netboot-network.argv b/tests/networkxml2argvdata/netboot-network.argv index 7ae5b75bc6..4f998d576c 100644 --- a/tests/networkxml2argvdata/netboot-network.argv +++ b/tests/networkxml2argvdata/netboot-network.argv @@ -1,5 +1,6 @@ -@DNSMASQ@ --strict-order --bind-interfaces --domain example.com \ ---conf-file= --except-interface lo --listen-address 192.168.122.1 \ +@DNSMASQ@ --strict-order --bind-interfaces --domain=example.com \ +--local=/example.com/ --domain-needed --filterwin2k --conf-file= \ +--except-interface lo --listen-address 192.168.122.1 \ --dhcp-range 192.168.122.2,192.168.122.254 \ --dhcp-leasefile=/var/lib/libvirt/dnsmasq/netboot.leases \ --dhcp-lease-max=253 --dhcp-no-override --expand-hosts --enable-tftp \ diff --git a/tests/networkxml2argvdata/netboot-proxy-network.argv b/tests/networkxml2argvdata/netboot-proxy-network.argv index 2c5a0d5339..89319ef4fe 100644 --- a/tests/networkxml2argvdata/netboot-proxy-network.argv +++ b/tests/networkxml2argvdata/netboot-proxy-network.argv @@ -1,5 +1,6 @@ -@DNSMASQ@ --strict-order --bind-interfaces --domain example.com \ ---conf-file= --except-interface lo --listen-address 192.168.122.1 \ +@DNSMASQ@ --strict-order --bind-interfaces --domain=example.com \ +--local=/example.com/ --domain-needed --filterwin2k --conf-file= \ +--except-interface lo --listen-address 192.168.122.1 \ --dhcp-range 192.168.122.2,192.168.122.254 \ --dhcp-leasefile=/var/lib/libvirt/dnsmasq/netboot.leases \ --dhcp-lease-max=253 --dhcp-no-override --expand-hosts \ diff --git a/tests/networkxml2argvdata/routed-network.argv b/tests/networkxml2argvdata/routed-network.argv index 75303e6ee4..ac43991178 100644 --- a/tests/networkxml2argvdata/routed-network.argv +++ b/tests/networkxml2argvdata/routed-network.argv @@ -1,2 +1,3 @@ -@DNSMASQ@ --strict-order --bind-interfaces --conf-file= \ +@DNSMASQ@ --strict-order --bind-interfaces \ +--local=// --domain-needed --filterwin2k --conf-file= \ --except-interface lo --listen-address 192.168.122.1\ -- GitLab