[PATCH 32/37] qemuSlirpStart: Simplify parameters

Peter Krempa pkrempa at redhat.com
Tue May 10 15:20:08 UTC 2022


The 'driver' can be taken from the private data of 'vm' and 'slirp' can
be taken from private data of 'net', both of which we need anyways.

Additionally by checking whether slirp needs to be started inside the
function we don't need to do this logic in the callers.

Signed-off-by: Peter Krempa <pkrempa at redhat.com>
---
 src/qemu/qemu_extdevice.c |  4 +---
 src/qemu/qemu_hotplug.c   |  2 +-
 src/qemu/qemu_slirp.c     | 10 +++++++---
 src/qemu/qemu_slirp.h     |  4 +---
 4 files changed, 10 insertions(+), 10 deletions(-)

diff --git a/src/qemu/qemu_extdevice.c b/src/qemu/qemu_extdevice.c
index 537b130394..1e54d4ef2c 100644
--- a/src/qemu/qemu_extdevice.c
+++ b/src/qemu/qemu_extdevice.c
@@ -185,10 +185,8 @@ qemuExtDevicesStart(virQEMUDriver *driver,

     for (i = 0; i < def->nnets; i++) {
         virDomainNetDef *net = def->nets[i];
-        qemuSlirp *slirp = QEMU_DOMAIN_NETWORK_PRIVATE(net)->slirp;

-        if (slirp &&
-            qemuSlirpStart(slirp, vm, driver, net, incomingMigration) < 0)
+        if (qemuSlirpStart(vm, net, incomingMigration) < 0)
             return -1;
     }

diff --git a/src/qemu/qemu_hotplug.c b/src/qemu/qemu_hotplug.c
index 8314d0e546..9eeba0210f 100644
--- a/src/qemu/qemu_hotplug.c
+++ b/src/qemu/qemu_hotplug.c
@@ -1314,7 +1314,7 @@ qemuDomainAttachNetDevice(virQEMUDriver *driver,
                 break;

             if (qemuSlirpOpen(slirp, driver, vm->def) < 0 ||
-                qemuSlirpStart(slirp, vm, driver, net, NULL) < 0) {
+                qemuSlirpStart(vm, net, NULL) < 0) {
                 virReportError(VIR_ERR_INTERNAL_ERROR,
                                "%s", _("Failed to start slirp"));
                 goto cleanup;
diff --git a/src/qemu/qemu_slirp.c b/src/qemu/qemu_slirp.c
index c832cfc20b..e1f06573e3 100644
--- a/src/qemu/qemu_slirp.c
+++ b/src/qemu/qemu_slirp.c
@@ -245,12 +245,13 @@ qemuSlirpSetupCgroup(qemuSlirp *slirp,


 int
-qemuSlirpStart(qemuSlirp *slirp,
-               virDomainObj *vm,
-               virQEMUDriver *driver,
+qemuSlirpStart(virDomainObj *vm,
                virDomainNetDef *net,
                bool incoming)
 {
+    qemuDomainObjPrivate *priv = vm->privateData;
+    virQEMUDriver *driver = priv->driver;
+    qemuSlirp *slirp = QEMU_DOMAIN_NETWORK_PRIVATE(net)->slirp;
     g_autoptr(virQEMUDriverConfig) cfg = virQEMUDriverGetConfig(driver);
     g_autoptr(virCommand) cmd = NULL;
     g_autofree char *pidfile = NULL;
@@ -262,6 +263,9 @@ qemuSlirpStart(qemuSlirp *slirp,
     VIR_AUTOCLOSE errfd = -1;
     bool killDBusDaemon = false;

+    if (!slirp)
+        return 0;
+
     if (incoming &&
         !qemuSlirpHasFeature(slirp, QEMU_SLIRP_FEATURE_MIGRATE)) {
         virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
diff --git a/src/qemu/qemu_slirp.h b/src/qemu/qemu_slirp.h
index a9a09cd5f8..507ea720fa 100644
--- a/src/qemu/qemu_slirp.h
+++ b/src/qemu/qemu_slirp.h
@@ -61,9 +61,7 @@ int qemuSlirpOpen(qemuSlirp *slirp,
                   virQEMUDriver *driver,
                   virDomainDef *def);

-int qemuSlirpStart(qemuSlirp *slirp,
-                   virDomainObj *vm,
-                   virQEMUDriver *driver,
+int qemuSlirpStart(virDomainObj *vm,
                    virDomainNetDef *net,
                    bool incoming);

-- 
2.35.1



More information about the libvir-list mailing list