提交 eef413e7 编写于 作者: M Marc-André Lureau 提交者: Michal Privoznik

qemu-extdevice: prepare, start and stop slirp-helper

If a slirp-helper is associated with a network interface,
prepare/start/stop the process via qemu-extdevice.
Signed-off-by: NMarc-André Lureau <marcandre.lureau@redhat.com>
Signed-off-by: NMichal Privoznik <mprivozn@redhat.com>
Reviewed-by: NMichal Privoznik <mprivozn@redhat.com>
上级 8f2a6bac
...@@ -23,6 +23,7 @@ ...@@ -23,6 +23,7 @@
#include "qemu_extdevice.h" #include "qemu_extdevice.h"
#include "qemu_domain.h" #include "qemu_domain.h"
#include "qemu_tpm.h" #include "qemu_tpm.h"
#include "qemu_slirp.h"
#include "viralloc.h" #include "viralloc.h"
#include "virlog.h" #include "virlog.h"
...@@ -87,14 +88,24 @@ qemuExtDevicesInitPaths(virQEMUDriverPtr driver, ...@@ -87,14 +88,24 @@ qemuExtDevicesInitPaths(virQEMUDriverPtr driver,
*/ */
int int
qemuExtDevicesPrepareHost(virQEMUDriverPtr driver, qemuExtDevicesPrepareHost(virQEMUDriverPtr driver,
virDomainDefPtr def) virDomainObjPtr vm)
{ {
int ret = 0; virDomainDefPtr def = vm->def;
size_t i;
if (def->tpm) if (def->tpm &&
ret = qemuExtTPMPrepareHost(driver, def); qemuExtTPMPrepareHost(driver, def) < 0)
return -1;
return ret; for (i = 0; i < def->nnets; i++) {
virDomainNetDefPtr net = def->nets[i];
qemuSlirpPtr slirp = QEMU_DOMAIN_NETWORK_PRIVATE(net)->slirp;
if (slirp && qemuSlirpOpen(slirp, driver, def) < 0)
return -1;
}
return 0;
} }
...@@ -115,7 +126,9 @@ qemuExtDevicesStart(virQEMUDriverPtr driver, ...@@ -115,7 +126,9 @@ qemuExtDevicesStart(virQEMUDriverPtr driver,
virDomainObjPtr vm, virDomainObjPtr vm,
bool incomingMigration) bool incomingMigration)
{ {
virDomainDefPtr def = vm->def;
int ret = 0; int ret = 0;
size_t i;
if (qemuExtDevicesInitPaths(driver, vm->def) < 0) if (qemuExtDevicesInitPaths(driver, vm->def) < 0)
return -1; return -1;
...@@ -123,6 +136,15 @@ qemuExtDevicesStart(virQEMUDriverPtr driver, ...@@ -123,6 +136,15 @@ qemuExtDevicesStart(virQEMUDriverPtr driver,
if (vm->def->tpm) if (vm->def->tpm)
ret = qemuExtTPMStart(driver, vm, incomingMigration); ret = qemuExtTPMStart(driver, vm, incomingMigration);
for (i = 0; i < def->nnets; i++) {
virDomainNetDefPtr net = def->nets[i];
qemuSlirpPtr slirp = QEMU_DOMAIN_NETWORK_PRIVATE(net)->slirp;
if (slirp &&
qemuSlirpStart(slirp, vm, driver, net, false, incomingMigration) < 0)
return -1;
}
return ret; return ret;
} }
...@@ -131,11 +153,22 @@ void ...@@ -131,11 +153,22 @@ void
qemuExtDevicesStop(virQEMUDriverPtr driver, qemuExtDevicesStop(virQEMUDriverPtr driver,
virDomainObjPtr vm) virDomainObjPtr vm)
{ {
virDomainDefPtr def = vm->def;
size_t i;
if (qemuExtDevicesInitPaths(driver, vm->def) < 0) if (qemuExtDevicesInitPaths(driver, vm->def) < 0)
return; return;
if (vm->def->tpm) if (vm->def->tpm)
qemuExtTPMStop(driver, vm); qemuExtTPMStop(driver, vm);
for (i = 0; i < def->nnets; i++) {
virDomainNetDefPtr net = def->nets[i];
qemuSlirpPtr slirp = QEMU_DOMAIN_NETWORK_PRIVATE(net)->slirp;
if (slirp)
qemuSlirpStop(slirp, vm, driver, net, false);
}
} }
......
...@@ -31,7 +31,7 @@ int qemuExtDeviceLogCommand(virQEMUDriverPtr driver, ...@@ -31,7 +31,7 @@ int qemuExtDeviceLogCommand(virQEMUDriverPtr driver,
ATTRIBUTE_RETURN_CHECK; ATTRIBUTE_RETURN_CHECK;
int qemuExtDevicesPrepareHost(virQEMUDriverPtr driver, int qemuExtDevicesPrepareHost(virQEMUDriverPtr driver,
virDomainDefPtr def) virDomainObjPtr vm)
ATTRIBUTE_NONNULL(1) ATTRIBUTE_NONNULL(2) ATTRIBUTE_NONNULL(1) ATTRIBUTE_NONNULL(2)
ATTRIBUTE_RETURN_CHECK; ATTRIBUTE_RETURN_CHECK;
......
...@@ -6619,7 +6619,7 @@ qemuProcessPrepareHost(virQEMUDriverPtr driver, ...@@ -6619,7 +6619,7 @@ qemuProcessPrepareHost(virQEMUDriverPtr driver,
goto cleanup; goto cleanup;
VIR_DEBUG("Preparing external devices"); VIR_DEBUG("Preparing external devices");
if (qemuExtDevicesPrepareHost(driver, vm->def) < 0) if (qemuExtDevicesPrepareHost(driver, vm) < 0)
goto cleanup; goto cleanup;
if (qemuProcessPrepareSEVGuestInput(vm) < 0) if (qemuProcessPrepareSEVGuestInput(vm) < 0)
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册