Re: [libvirt PATCH 1/8] qemu: passt: split out qemuPasstBuildCommand

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 9/9/25 8:05 AM, Ján Tomko via Devel wrote:
From: Ján Tomko <jtomko@xxxxxxxxxx>

Separate the command line building to make it testable.

Signed-off-by: Ján Tomko <jtomko@xxxxxxxxxx>

Reviewed-by: Laine Stump <laine@xxxxxxxxxx>

---
  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);




[Index of Archives]     [Virt Tools]     [Libvirt Users]     [Lib OS Info]     [Fedora Users]     [Fedora Desktop]     [Fedora SELinux]     [Big List of Linux Books]     [Yosemite News]     [KDE Users]     [Fedora Tools]

  Powered by Linux