On 09/12/2014 11:37 AM, Laine Stump wrote: > Sometimes libvirt is installed on a host that is already using the > network 192.168.122.0/24. If the libvirt-daemon-config-network package > is installed, this creates a conflict, since that package has been > hard-coded to create a virtual network that also uses > 192.168.122.0/24. In the past libvirt has attempted to warn of / > remediate this situation by checking for conflicting routes when the > network is started, but it turns out that isn't always useful (for > example in the case that the *other* interface/network creating the > conflict hasn't yet been started at the time libvirtd start its own > networks). > > This patch attempts to catch the problem earlier - at install > time. During the %post install script for > libvirt-daemon-config-network, we use a case statement to look through > the output of "ip route show" for a route that exactly matches > 192.168.122.0/24, and if found we search for a similar route that > *doesn't* match (e.g. 192.168.123.0/24). When we find an available > route, we just replace all occurrences of "122" in the default.xml > that is being created with the newly found 192.168 subnet. This could > obviously be made more complicated - examine the template defaul.xml s/defaul/default/ > to automatically determine the existing network address and mask > rather than hard coding it in the specfile, etc, but this scripting is > simpler and gets the job done as long as we continue to use > 192.168.122.0/24 in the template. (If anyone with mad bash skillz > wants to suggest something to do that, by all means please do). > > This is intended to at least "further reduce" occurrence of the > problems detailed in: > > https://bugzilla.redhat.com/show_bug.cgi?id=811967 > --- > > Difference from V1: fixed some typos in the commit message as pointed > out by Eric. Except I missed one :) > Also switched from using comparison loops for route > matching, to using a case statement as a low cost replacement for grep > (again, as suggested by Eric). > > Unless there is an objection, I will push this patch later this > afternoon so that we can try it out. In the off chance that it causes > any disasters, we have plenty of time to revert before the next > release :-) > > libvirt.spec.in | 31 ++++++++++++++++++++++++++++++- > 1 file changed, 30 insertions(+), 1 deletion(-) > > diff --git a/libvirt.spec.in b/libvirt.spec.in > index a6a58cf..90da0c2 100644 > --- a/libvirt.spec.in > +++ b/libvirt.spec.in > @@ -1728,8 +1728,37 @@ fi > %if %{with_network} > %post daemon-config-network > if test $1 -eq 1 && test ! -f %{_sysconfdir}/libvirt/qemu/networks/default.xml ; then > + # see if the network used by default network creates a conflict, > + # and try to resolve it > + # NB: 192.168.122.0/24 is used in the default.xml template file; > + # do not modify any of those values here without also modifying > + # them in the template. I would _also_ like to see a comment in the default.xml template (at least the copy that lives in our git repo; maybe at install time we would strip that out so that the end user doesn't have to see it), but that can be a followup patch ACK -- Eric Blake eblake redhat com +1-919-301-3266 Libvirt virtualization library http://libvirt.org
Attachment:
signature.asc
Description: OpenPGP digital signature
-- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list