[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