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) {
/*
- * 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;
return 0;
}
- *slirpret = g_steal_pointer(&slirp);
- return 1;
+ QEMU_DOMAIN_NETWORK_PRIVATE(net)->slirp = g_steal_pointer(&slirp);
+ return 0;
}
virDomainNetDef *net) G_GNUC_NO_INLINE;
int qemuInterfacePrepareSlirp(virQEMUDriver *driver,
- virDomainNetDef *net,
- qemuSlirp **slirp);
+ virDomainNetDef *net);
int qemuInterfaceVDPAConnect(virDomainNetDef *net) G_GNUC_NO_INLINE;
} 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;
}
}