
On 9/9/25 8:05 AM, Ján Tomko via Devel wrote:
From: Ján Tomko <jtomko@redhat.com>
Separate the command line building to make it testable.
Signed-off-by: Ján Tomko <jtomko@redhat.com>
Reviewed-by: Laine Stump <laine@redhat.com>
--- src/qemu/qemu_passt.c | 38 +++++++++++++++++++++++++++++--------- src/qemu/qemu_passt.h | 5 +++++ 2 files changed, 34 insertions(+), 9 deletions(-)
diff --git a/src/qemu/qemu_passt.c b/src/qemu/qemu_passt.c index fcc34de384..d8e281b7a1 100644 --- a/src/qemu/qemu_passt.c +++ b/src/qemu/qemu_passt.c @@ -194,15 +194,15 @@ qemuPasstPrepareVhostUser(virDomainObj *vm, net->data.vhostuser->data.nix.reconnect.timeout = QEMU_PASST_RECONNECT_TIMEOUT; }
-int -qemuPasstStart(virDomainObj *vm, - virDomainNetDef *net) +virCommand * +qemuPasstBuildCommand(char **socketName, + char **pidfileRet, + virDomainObj *vm, + virDomainNetDef *net) { - qemuDomainObjPrivate *priv = vm->privateData; - virQEMUDriver *driver = priv->driver; g_autofree char *passtSocketName = qemuPasstCreateSocketPath(vm, net); - g_autoptr(virCommand) cmd = NULL; g_autofree char *pidfile = qemuPasstCreatePidFilename(vm, net); + g_autoptr(virCommand) cmd = NULL; size_t i;
cmd = virCommandNew(PASST); @@ -238,7 +238,7 @@ qemuPasstStart(virDomainObj *vm, * a single IPv4 and single IPv6 address */ if (!(addr = virSocketAddrFormat(&ip->address))) - return -1; + return NULL;
virCommandAddArgList(cmd, "--address", addr, NULL);
@@ -266,14 +266,14 @@ qemuPasstStart(virDomainObj *vm, /* validation guarantees this will never happen */ virReportError(VIR_ERR_INTERNAL_ERROR, _("Invalid portForward proto value %1$u"), pf->proto); - return -1; + return NULL; }
if (VIR_SOCKET_ADDR_VALID(&pf->address)) { g_autofree char *addr = NULL;
if (!(addr = virSocketAddrFormat(&pf->address))) - return -1; + return NULL;
virBufferAddStr(&buf, addr); emitsep = true; @@ -317,6 +317,26 @@ qemuPasstStart(virDomainObj *vm, virCommandAddArg(cmd, virBufferCurrentContent(&buf)); }
+ if (socketName) + *socketName = g_steal_pointer(&passtSocketName); + if (pidfileRet) + *pidfileRet = g_steal_pointer(&pidfile); + + return g_steal_pointer(&cmd); +} + +int +qemuPasstStart(virDomainObj *vm, + virDomainNetDef *net) +{ + qemuDomainObjPrivate *priv = vm->privateData; + g_autofree char *passtSocketName = NULL; + g_autofree char *pidfile = NULL; + virQEMUDriver *driver = priv->driver; + g_autoptr(virCommand) cmd = NULL; + + if (!(cmd = qemuPasstBuildCommand(&passtSocketName, &pidfile, vm, net))) + return -1;
if (qemuExtDeviceLogCommand(driver, vm, cmd, "passt") < 0) return -1; diff --git a/src/qemu/qemu_passt.h b/src/qemu/qemu_passt.h index ea545ccf38..e16d4c1119 100644 --- a/src/qemu/qemu_passt.h +++ b/src/qemu/qemu_passt.h @@ -27,6 +27,11 @@ qemuPasstAddNetProps(virDomainObj *vm, virDomainNetDef *net, virJSONValue **netprops);
+virCommand *qemuPasstBuildCommand(char **socketName, + char **pidfileRet, + virDomainObj *vm, + virDomainNetDef *net); + int qemuPasstStart(virDomainObj *vm, virDomainNetDef *net);