[libvirt PATCH] qemu: don't reject interface update when switching to/from bridged network

Daniel Henrique Barboza danielhb413 at gmail.com
Thu Jun 4 17:54:23 UTC 2020



On 6/3/20 4:20 PM, Laine Stump wrote:
> If virDomainUpdateDeviceFlags() was used to update an <interface>, and
> the interface type changed from type='network' where the network was
> an unmanaged bridge (so actualType == bridge) to type='bridge'
> (i.e. actualType *also* == bridge), the update would fail due to the
> perceived change in type.
> 
> In practice it is okay to switch between any interface types that end
> up using a tap device, since libvirt just needs to attach the device
> to a new bridge. But in this case we were erroneously rejecting it due
> to a conditional that was too restrictive. This is what the code was doing:
> 
>    if (old->type != new->type)
>       [allow update]
>    else
>       if ((oldActual == bridge and newActual == network)
>           || (oldActual == network and newActual == bridge)) {
>           [allow update]
>       else
>           [error]
> 
> In the case described above though, old->type and new->type don't match,
> but oldActual and newActual are both 'bridge', so we get an error.
> 
> This patch changes the inner conditional so that any combination of
> 'network' and 'bridge' for oldActual and newActual, since they both
> use a tap device connected to a bridge.
> 
> Signed-off-by: Laine Stump <laine at redhat.com>
> ---

Reviewed-by: Daniel Henrique Barboza <danielhb413 at gmail.com>




More information about the libvir-list mailing list