]> xenbits.xensource.com Git - libvirt.git/commit
network: fix endless loop when starting network with multiple IPs and no dhcp
authorLaine Stump <laine@laine.org>
Fri, 28 Oct 2016 15:43:56 +0000 (11:43 -0400)
committerLaine Stump <laine@laine.org>
Fri, 28 Oct 2016 17:59:17 +0000 (13:59 -0400)
commitbbb333e4813ebe74580e75b0e8c2eb325e3d11ca
tree8ad431bdc788438743e6860894a6af20ee422e56
parent3b782ce57235f8e3aa2f948d7e99bfea21e2a877
network: fix endless loop when starting network with multiple IPs and no dhcp

commit 9065cfaa added the ability to disable DNS services for a
libvirt virtual network. If neither DNS nor DHCP is needed for a
network, then we don't need to start dnsmasq, so code was added to
check for this.

Unfortunately, it was written with a great lack of attention to detail
(I can say that, because I was the author), and the loop that checked
if DHCP is needed for the network would never end if the network had
multiple IP addresses and the first <ip> had no <dhcp> subelement
(which would have contained a <range> or <host> subelement, thus
requiring DHCP services).

This patch rewrites the check to be more compact and (more
importantly) finite.

This bug was present in release 2.2.0 and 2.3.0, so will need to be
backported to any relevant maintainence branches.

Reported here:
  https://www.redhat.com/archives/libvirt-users/2016-October/msg00032.html
  https://www.redhat.com/archives/libvirt-users/2016-October/msg00045.html
src/network/bridge_driver.c