From: Cole Robinson Date: Sun, 31 Mar 2019 21:42:08 +0000 (-0400) Subject: qemu: domain: Call virDomainCapsDeviceDefValidate X-Git-Tag: v5.7.0-rc1~365 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=b66ca0220abb8f2e9afbbd9174da5de32da25347;p=thirdparty%2Flibvirt.git qemu: domain: Call virDomainCapsDeviceDefValidate Fill in virDomainCaps at Validate time and use it to call virDomainCapsDeviceDefValidate Reviewed-by: Reviewed-by: Daniel Henrique Barboza Reviewed-by: Michal Privoznik Signed-off-by: Cole Robinson --- diff --git a/src/qemu/qemu_domain.c b/src/qemu/qemu_domain.c index 4bafb35a28..8c8dacb247 100644 --- a/src/qemu/qemu_domain.c +++ b/src/qemu/qemu_domain.c @@ -41,6 +41,7 @@ #include "viruuid.h" #include "virfile.h" #include "domain_addr.h" +#include "domain_capabilities.h" #include "domain_event.h" #include "virtime.h" #include "virnetdevopenvswitch.h" @@ -6737,14 +6738,24 @@ qemuDomainDeviceDefValidate(const virDomainDeviceDef *dev, int ret = 0; virQEMUDriverPtr driver = opaque; virQEMUCapsPtr qemuCaps = NULL; + virDomainCapsPtr domCaps = NULL; if (!(qemuCaps = virQEMUCapsCacheLookup(driver->qemuCapsCache, def->emulator))) return -1; + if (!(domCaps = virQEMUDriverGetDomainCapabilities(driver, qemuCaps, + def->os.machine, + def->os.arch, + def->virtType))) + goto cleanup; + if ((ret = qemuDomainDeviceDefValidateAddress(dev, qemuCaps)) < 0) goto cleanup; + if (virDomainCapsDeviceDefValidate(domCaps, dev, def) < 0) + goto cleanup; + switch ((virDomainDeviceType)dev->type) { case VIR_DOMAIN_DEVICE_NET: ret = qemuDomainDeviceDefValidateNetwork(dev->data.net); @@ -6831,6 +6842,7 @@ qemuDomainDeviceDefValidate(const virDomainDeviceDef *dev, cleanup: virObjectUnref(qemuCaps); + virObjectUnref(domCaps); return ret; }