[libvirt] [PATCHv2.1 4/4] v1: disable dnsmasq's RA service; use radvd

Gene Czarcinski gene at czarc.net
Sat Dec 1 14:22:22 UTC 2012


I regret needing to submit this patch but, in good contentiousness,
I cannot let use of dnsmasq's RA service be generally enabled because of
a problem.  I am disabling the use of dnsmasq's RA rather than just
deleting the code in the hope that the problem will be resolved.
Right now I cannot guarantee that the problem will not exist with radvd.
Although I seems to be able to make the problem happen, I have had limited
success doing this "on demand".

This patch file is being submitted as the "4th" files as part of
the original 3 file set.

I do not plan on running this patch since I will continue to
troubleshoot the problem.

The problem:  Basically, it is that "occasionally," when libvirtd
starts/restarts (such as when the packages are updated with a new version), and
there is a virtual network with a IPv6 defintion which is autostarted,
sometimes the dnsmasq will "overlay" the virtual networks IPv6 address on the
system's REAL network interface and begin sending RA packets on the
interface.

I can see what the result is but, currently, I do not understand the cause.
Thus, this also could happen with radvd.  But, I have seen it happen
with dnsmasq and I have not seen it happen with radvd.

Currently, to remove the problem once it occurs is to destroy the virtual
network and then restart the real network.

I have proof that this occurred before the "bind-dynamic" patches were
introduced so they are not an issue.
---
 src/network/bridge_driver.c                             | 3 ++-
 tests/networkxml2argvdata/dhcp6-nat-network.argv        | 1 -
 tests/networkxml2argvdata/dhcp6-network.argv            | 1 -
 tests/networkxml2argvdata/dhcp6host-routed-network.argv | 1 -
 tests/networkxml2argvdata/nat-network.argv              | 2 --
 5 files changed, 2 insertions(+), 6 deletions(-)

diff --git a/src/network/bridge_driver.c b/src/network/bridge_driver.c
index a8f6d8e..ed03262 100644
--- a/src/network/bridge_driver.c
+++ b/src/network/bridge_driver.c
@@ -77,8 +77,9 @@
 
 #define CHECK_VERSION_DHCP(CAPS)                 \
                 (dnsmasqCapsGetVersion(CAPS) >= 2064000)
+/* termporarily disable dnsmasq's RA service */
 #define CHECK_VERSION_RA(CAPS)                   \
-                (dnsmasqCapsGetVersion(CAPS) >= 2064000)
+                (dnsmasqCapsGetVersion(CAPS) >= 9099000)
 
 /* Main driver state */
 struct network_driver {
diff --git a/tests/networkxml2argvdata/dhcp6-nat-network.argv b/tests/networkxml2argvdata/dhcp6-nat-network.argv
index bdb64d6..a8caf81 100644
--- a/tests/networkxml2argvdata/dhcp6-nat-network.argv
+++ b/tests/networkxml2argvdata/dhcp6-nat-network.argv
@@ -11,4 +11,3 @@ dhcp-leasefile=/var/lib/libvirt/dnsmasq/default.leases
 dhcp-lease-max=493
 dhcp-hostsfile=/var/lib/libvirt/dnsmasq/default.hostsfile
 addn-hosts=/var/lib/libvirt/dnsmasq/default.addnhosts
-enable-ra
diff --git a/tests/networkxml2argvdata/dhcp6-network.argv b/tests/networkxml2argvdata/dhcp6-network.argv
index 42c7b35..4550aa9 100644
--- a/tests/networkxml2argvdata/dhcp6-network.argv
+++ b/tests/networkxml2argvdata/dhcp6-network.argv
@@ -11,4 +11,3 @@ dhcp-leasefile=/var/lib/libvirt/dnsmasq/default.leases
 dhcp-lease-max=240
 dhcp-hostsfile=/var/lib/libvirt/dnsmasq/default.hostsfile
 addn-hosts=/var/lib/libvirt/dnsmasq/default.addnhosts
-enable-ra
diff --git a/tests/networkxml2argvdata/dhcp6host-routed-network.argv b/tests/networkxml2argvdata/dhcp6host-routed-network.argv
index 9ee3c28..a7d4059 100644
--- a/tests/networkxml2argvdata/dhcp6host-routed-network.argv
+++ b/tests/networkxml2argvdata/dhcp6host-routed-network.argv
@@ -9,4 +9,3 @@ dhcp-no-override
 dhcp-range=2001:db8:ac10:fd01::1,static
 dhcp-hostsfile=/var/lib/libvirt/dnsmasq/local.hostsfile
 addn-hosts=/var/lib/libvirt/dnsmasq/local.addnhosts
-enable-ra
diff --git a/tests/networkxml2argvdata/nat-network.argv b/tests/networkxml2argvdata/nat-network.argv
index e71f54b..012f3d5 100644
--- a/tests/networkxml2argvdata/nat-network.argv
+++ b/tests/networkxml2argvdata/nat-network.argv
@@ -10,5 +10,3 @@ dhcp-leasefile=/var/lib/libvirt/dnsmasq/default.leases
 dhcp-lease-max=253
 dhcp-hostsfile=/var/lib/libvirt/dnsmasq/default.hostsfile
 addn-hosts=/var/lib/libvirt/dnsmasq/default.addnhosts
-dhcp-range=2001:db8:ac10:fe01::1,ra-only
-dhcp-range=2001:db8:ac10:fd01::1,ra-only
-- 
1.7.11.7




More information about the libvir-list mailing list