[PATCH] qemu: don't set interface MTU when managed='no'
Daniel Henrique Barboza
danielhb413 at gmail.com
Tue Jan 12 23:58:48 UTC 2021
On 1/12/21 7:30 PM, Laine Stump wrote:
> managed='no' on an <interface> allows an unprivileged libvirt to use a
> pre-created tap/macvtap device that libvirt has permission to
> open/read/write, but no permission to modify (i.e. set the MTU or MAC
> address). But when the XML had an <mtu size='blah'/> setting (which
> was put there in order to tell the *guest* OS what MTU to set for the
> emulated device at the other end of the tap) We were attempting to set
I guess you meant to use lowcase "We" ?
"(...) the other end of the tap) we were attempting (...)"
> the MTU of the tap device on the host, paying no attention to the
> setting of 'managed'. That would of course end in failure.
>
> This patch only sets the MTU if managed='no' is *not* set (so, if it
> is 'yes', or just not set at all).
>
> Note that MTU of the tap is also set when connecting the tap to a
> bridge device, but managed='no' is only allowed for <interface
> type='ethernet', which would never attach to a bridge anyway, so we
Missed an enclosing ">":
"type='ethernet'>, which would ....."
> don't need the check there.
>
> Resolves: https://bugzilla.redhat.com/1905929
> Signed-off-by: Laine Stump <laine at redhat.com>
> ---
Reviewed-by: Daniel Henrique Barboza <danielhb413 at gmail.com>
> src/qemu/qemu_command.c | 2 +-
> src/qemu/qemu_hotplug.c | 2 +-
> 2 files changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/src/qemu/qemu_command.c b/src/qemu/qemu_command.c
> index 6f970a3128..3eff09a9d3 100644
> --- a/src/qemu/qemu_command.c
> +++ b/src/qemu/qemu_command.c
> @@ -8149,7 +8149,7 @@ qemuBuildInterfaceCommandLine(virQEMUDriverPtr driver,
> }
> }
>
> - if (net->mtu &&
> + if (net->mtu && net->managed_tap != VIR_TRISTATE_BOOL_NO &&
> virNetDevSetMTU(net->ifname, net->mtu) < 0)
> goto cleanup;
>
> diff --git a/src/qemu/qemu_hotplug.c b/src/qemu/qemu_hotplug.c
> index f336a90c8e..95f2bd0aca 100644
> --- a/src/qemu/qemu_hotplug.c
> +++ b/src/qemu/qemu_hotplug.c
> @@ -1387,7 +1387,7 @@ qemuDomainAttachNetDevice(virQEMUDriverPtr driver,
> }
> }
>
> - if (net->mtu &&
> + if (net->mtu && net->managed_tap != VIR_TRISTATE_BOOL_NO &&
> virNetDevSetMTU(net->ifname, net->mtu) < 0)
> goto cleanup;
>
>
More information about the libvir-list
mailing list