[PATCH] qemu: don't add --mac-addr option to passt commandline

Stefano Brivio sbrivio at redhat.com
Thu Jul 27 08:28:13 UTC 2023


On Thu, 13 Jul 2023 12:30:22 -0400
Laine Stump <laine at redhat.com> wrote:

> When I implemented passt support in libvirt, I saw the --mac-addr
> option on the passt commandline, immediately assumed that this was
> used for setting the guest interface's mac address somewhere within
> passt, and read no further. As a result, "--mac-addr" is always added
> to the passt commandline, specifying the setting from
> <mac addr='blah'/> in the guest's interface config.
> 
> But as pointed out in this bugzilla comment:
> 
> https://bugzilla.redhat.com/2184967#c8
> 
> That is *not at all* what passt's --mac-addr option does. Instead, it
> is used to force the *remote* mac address for incoming traffic to a
> specific value. So setting --mac-addr results in all traffic on the
> interface having the same (the guest's) mac address for both source
> and destination in all traffic. Surprisingly, this still works, so
> nobody noticed it during testing.
> 
> The proper thing is to not specify any mac address to passt - the
> remote MAC addresses can and should remain untouched, and the local
> MAC address will end up being known to passt and beyond just by the
> guest sending out packets with that MAC address.
> 
> Reported-by: Laszlo Ersek <lersek at redhat.com>
> Signed-off-by: Laine Stump <laine at redhat.com>
> ---
>  src/qemu/qemu_passt.c | 2 --
>  1 file changed, 2 deletions(-)
> 
> diff --git a/src/qemu/qemu_passt.c b/src/qemu/qemu_passt.c
> index 3679bf75fc..d36856e92e 100644
> --- a/src/qemu/qemu_passt.c
> +++ b/src/qemu/qemu_passt.c
> @@ -176,7 +176,6 @@ qemuPasstStart(virDomainObj *vm,
>      g_autofree char *passtSocketName = qemuPasstCreateSocketPath(vm, net);
>      g_autoptr(virCommand) cmd = NULL;
>      g_autofree char *pidfile = qemuPasstCreatePidFilename(vm, net);
> -    char macaddr[VIR_MAC_STRING_BUFLEN];
>      bool needUnlink = false;
>      size_t i;
>  
> @@ -187,7 +186,6 @@ qemuPasstStart(virDomainObj *vm,
>      virCommandAddArgList(cmd,
>                           "--one-off",
>                           "--socket", passtSocketName,
> -                         "--mac-addr", virMacAddrFormat(&net->mac, macaddr),
>                           "--pid", pidfile,
>                           NULL);
>  

Reviewed-by: Stefano Brivio <sbrivio at redhat.com>

-- 
Stefano


More information about the libvir-list mailing list