If dnsmasq version is => 2.64, then IPV6 dhcp-range and dhcp-host are proccessed/supported. Otherwise, error out with message that DHCPv6 range and host not supported by the installed dnsmasq version. --- src/network/bridge_driver.c | 15 ++++++++++++++- tests/networkxml2argvtest.c | 2 ++ 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/src/network/bridge_driver.c b/src/network/bridge_driver.c index 2230268..a0c85b5 100644 --- a/src/network/bridge_driver.c +++ b/src/network/bridge_driver.c @@ -654,7 +654,7 @@ networkDnsmasqConfContents(virNetworkObjPtr network, char *recordWeight = NULL; char *recordPriority = NULL; virNetworkIpDefPtr tmpipdef, ipdef, ipv4def, ipv6def; - bool dhcp4flag, dhcp6flag; + bool dhcp4flag, dhcp6flag, dhcp6_OK; *configstr = NULL; @@ -776,6 +776,13 @@ networkDnsmasqConfContents(virNetworkObjPtr network, VIR_FREE(ipaddr); } + /* check to is if dnsmasq version >= 2.64 so that DHCPv6 is OK */ + dhcp6_OK = false; + if (network->dnsmasqMajor > 2) + dhcp6_OK = true; + if ((network->dnsmasqMajor == 2) && (network->dnsmasqMinor > 63)) + dhcp6_OK = true; + /* Find the first dhcp for both IPv4 and IPv6 */ for (ii = 0, ipv4def = NULL, ipv6def = NULL, dhcp4flag = false, dhcp6flag = false; (ipdef = virNetworkDefGetIpByIndex(network->def, AF_UNSPEC, ii)); @@ -790,6 +797,12 @@ networkDnsmasqConfContents(virNetworkObjPtr network, } if (VIR_SOCKET_ADDR_IS_FAMILY(&ipdef->address, AF_INET6)) { if (ipdef->nranges || ipdef->nhosts) { + if (!dhcp6_OK) { + virReportError(VIR_ERR_XML_ERROR, + _("Invlaid to specify DHCPv6 range or host for dnsmasq version %u.%u"), + network->dnsmasqMajor, network->dnsmasqMinor); + goto cleanup; + } if (!ipv6def) { ipv6def = ipdef; dhcp6flag = true; diff --git a/tests/networkxml2argvtest.c b/tests/networkxml2argvtest.c index 413ba80..a64da65 100644 --- a/tests/networkxml2argvtest.c +++ b/tests/networkxml2argvtest.c @@ -38,6 +38,8 @@ static int testCompareXMLToArgvFiles(const char *inxml, const char *outargv) { goto fail; obj->def = dev; + obj->dnsmasqMajor = 2; + obj->dnsmasqMinor = 64; obj->dnsmasqRA = 1; dctx = dnsmasqContextNew(dev->name, "/var/lib/libvirt/dnsmasq"); -- 1.7.11.7 -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list