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

Michal Privoznik mprivozn at redhat.com
Thu Jun 4 09:53:13 UTC 2020


On 6/3/20 9: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>
> ---
>   src/qemu/qemu_hotplug.c | 16 ++++++++--------
>   1 file changed, 8 insertions(+), 8 deletions(-)

Reviewed-by: Michal Privoznik <mprivozn at redhat.com>

Michal




More information about the libvir-list mailing list