for (i = 0; i < def->nnets; i++) {
virDomainNetDef *net = def->nets[i];
- if (net->type != VIR_DOMAIN_NET_TYPE_USER &&
- net->type != VIR_DOMAIN_NET_TYPE_VHOSTUSER) {
- continue;
- }
-
if (net->backend.type == VIR_DOMAIN_NET_BACKEND_PASST) {
if (qemuPasstStart(vm, net) < 0)
return -1;
if (slirp)
qemuSlirpStop(slirp, vm, driver, net);
- if (net->type == VIR_DOMAIN_NET_TYPE_USER &&
- net->backend.type == VIR_DOMAIN_NET_BACKEND_PASST) {
+ if (net->backend.type == VIR_DOMAIN_NET_BACKEND_PASST)
qemuPasstStop(vm, net);
- }
if (actualType == VIR_DOMAIN_NET_TYPE_ETHERNET && net->downscript)
virNetDevRunEthernetScript(net->ifname, net->downscript);
if (QEMU_DOMAIN_NETWORK_PRIVATE(net)->slirp)
return true;
- if (net->type == VIR_DOMAIN_NET_TYPE_USER &&
- net->backend.type == VIR_DOMAIN_NET_BACKEND_PASST)
+ if (net->backend.type == VIR_DOMAIN_NET_BACKEND_PASST)
return true;
}
if (slirp && qemuSlirpSetupCgroup(slirp, cgroup) < 0)
return -1;
- if (net->type == VIR_DOMAIN_NET_TYPE_USER &&
- net->backend.type == VIR_DOMAIN_NET_BACKEND_PASST &&
+ if (net->backend.type == VIR_DOMAIN_NET_BACKEND_PASST &&
qemuPasstSetupCgroup(vm, net, cgroup) < 0) {
return -1;
}
qemuPasstPrepareVhostUser(vm, net);
- if (qemuPasstStart(vm, net) < 0)
- goto cleanup;
} else {
if (virNetDevOpenvswitchGetVhostuserIfname(net->data.vhostuser->data.nix.path,
net->data.vhostuser->data.nix.listen,
break;
case VIR_DOMAIN_NET_TYPE_USER:
- if (net->backend.type == VIR_DOMAIN_NET_BACKEND_PASST) {
-
- if (qemuPasstStart(vm, net) < 0)
- goto cleanup;
-
- } else if (!priv->disableSlirp &&
- virQEMUCapsGet(priv->qemuCaps, QEMU_CAPS_DBUS_VMSTATE)) {
+ if (!priv->disableSlirp &&
+ virQEMUCapsGet(priv->qemuCaps, QEMU_CAPS_DBUS_VMSTATE)) {
if (qemuInterfacePrepareSlirp(driver, net) < 0)
goto cleanup;
goto cleanup;
}
+ /* both NET_TYPE_USER and NET_TYPE_VHOSTUSER might use passt */
+ if (net->backend.type == VIR_DOMAIN_NET_BACKEND_PASST &&
+ qemuPasstStart(vm, net) < 0) {
+ goto cleanup;
+ }
+
/* Set device online immediately */
if (virDomainInterfaceStartDevice(net) < 0)
goto cleanup;
if (QEMU_DOMAIN_NETWORK_PRIVATE(net)->slirp)
qemuSlirpStop(QEMU_DOMAIN_NETWORK_PRIVATE(net)->slirp, vm, driver, net);
- if (net->type == VIR_DOMAIN_NET_TYPE_USER &&
- net->backend.type == VIR_DOMAIN_NET_BACKEND_PASST) {
+ if (net->backend.type == VIR_DOMAIN_NET_BACKEND_PASST)
qemuPasstStop(vm, net);
- }
qemuDomainObjEnterMonitor(vm);
if (charDevPlugged &&
if (QEMU_DOMAIN_NETWORK_PRIVATE(net)->slirp)
qemuSlirpStop(QEMU_DOMAIN_NETWORK_PRIVATE(net)->slirp, vm, driver, net);
- if (net->type == VIR_DOMAIN_NET_TYPE_USER &&
- net->backend.type == VIR_DOMAIN_NET_BACKEND_PASST) {
+ if (net->backend.type == VIR_DOMAIN_NET_BACKEND_PASST)
qemuPasstStop(vm, net);
- }
virDomainAuditNet(vm, net, NULL, "detach", true);