[libvirt] [RFC PATCHv2] network: try to eliminate default network conflict during package install

Eric Blake eblake at redhat.com
Fri Sep 12 19:25:41 UTC 2014


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

-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 539 bytes
Desc: OpenPGP digital signature
URL: <http://listman.redhat.com/archives/libvir-list/attachments/20140912/9eae04f4/attachment-0001.sig>


More information about the libvir-list mailing list