]> xenbits.xensource.com Git - libvirt.git/commitdiff
qemuInterfacePrepareSlirp: Directly populate the 'slirp' variable in network private...
authorPeter Krempa <pkrempa@redhat.com>
Tue, 10 May 2022 14:17:17 +0000 (16:17 +0200)
committerPeter Krempa <pkrempa@redhat.com>
Mon, 16 May 2022 07:15:46 +0000 (09:15 +0200)
Both callers populate the variable when qemuInterfacePrepareSlirp
returned 1. We can save the hassle in the callers by just doing it right
away.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Jonathon Jongsma <jjongsma@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
src/qemu/qemu_hotplug.c
src/qemu/qemu_interface.c
src/qemu/qemu_interface.h
src/qemu/qemu_process.c

index e1266325077c6a69c1b2ee4d219f56b387166ebe..8314d0e54604b1546e20decf3e340d8808bd5a4d 100644 (file)
@@ -1306,14 +1306,12 @@ qemuDomainAttachNetDevice(virQEMUDriver *driver,
         if (!priv->disableSlirp &&
             virQEMUCapsGet(priv->qemuCaps, QEMU_CAPS_DBUS_VMSTATE)) {
             qemuSlirp *slirp = NULL;
-            int rv = qemuInterfacePrepareSlirp(driver, net, &slirp);
 
-            if (rv == -1)
+            if (qemuInterfacePrepareSlirp(driver, net) < 0)
                 goto cleanup;
-            if (rv == 0)
-                break;
 
-            QEMU_DOMAIN_NETWORK_PRIVATE(net)->slirp = slirp;
+            if (!(slirp = QEMU_DOMAIN_NETWORK_PRIVATE(net)->slirp))
+                break;
 
             if (qemuSlirpOpen(slirp, driver, vm->def) < 0 ||
                 qemuSlirpStart(slirp, vm, driver, net, NULL) < 0) {
index c807be0745270df416708cca3d3cc933174bbd67..bda96808eb4bc46d6c295dc693a2dd61b09f4eaa 100644 (file)
@@ -651,12 +651,12 @@ qemuInterfaceVDPAConnect(virDomainNetDef *net)
 
 
 /*
- * Returns: -1 on error, 0 if slirp isn't available, 1 on success
+ * Returns: -1 on error, 0 on success. Populates net->privateData->slirp if
+ * the slirp helper is needed.
  */
 int
 qemuInterfacePrepareSlirp(virQEMUDriver *driver,
-                          virDomainNetDef *net,
-                          qemuSlirp **slirpret)
+                          virDomainNetDef *net)
 {
     g_autoptr(virQEMUDriverConfig) cfg = virQEMUDriverGetConfig(driver);
     g_autoptr(qemuSlirp) slirp = NULL;
@@ -681,8 +681,8 @@ qemuInterfacePrepareSlirp(virQEMUDriver *driver,
             return 0;
     }
 
-    *slirpret = g_steal_pointer(&slirp);
-    return 1;
+    QEMU_DOMAIN_NETWORK_PRIVATE(net)->slirp = g_steal_pointer(&slirp);
+    return 0;
 }
 
 
index a566d877b0e7f9a4ba5c2e597793514d5b17941b..e359d4f520c7bdbbac80856858d2c1510b9f3050 100644 (file)
@@ -55,7 +55,6 @@ int qemuInterfaceOpenVhostNet(virDomainObj *def,
                               virDomainNetDef *net) G_GNUC_NO_INLINE;
 
 int qemuInterfacePrepareSlirp(virQEMUDriver *driver,
-                              virDomainNetDef *net,
-                              qemuSlirp **slirp);
+                              virDomainNetDef *net);
 
 int qemuInterfaceVDPAConnect(virDomainNetDef *net) G_GNUC_NO_INLINE;
index a023e6eb4c626f080dbccf6f7a7fa2f5f915b5c9..07e467d01e1aed91fed78d0c4561753156d9703e 100644 (file)
@@ -5728,13 +5728,8 @@ qemuProcessNetworkPrepareDevices(virQEMUDriver *driver,
         } else if (actualType == VIR_DOMAIN_NET_TYPE_USER &&
                    !priv->disableSlirp &&
                    virQEMUCapsGet(priv->qemuCaps, QEMU_CAPS_DBUS_VMSTATE)) {
-            qemuSlirp *slirp = NULL;
-            int rv = qemuInterfacePrepareSlirp(driver, net, &slirp);
-
-            if (rv == -1)
+            if (qemuInterfacePrepareSlirp(driver, net) < 0)
                 return -1;
-            if (rv == 1)
-                QEMU_DOMAIN_NETWORK_PRIVATE(net)->slirp = slirp;
          }
 
     }