return ret;
}
+
+/**
+ * virQEMUDriverGetDomainCapabilities:
+ *
+ * Build a virDomainCapsPtr instance for the passed data.
+ *
+ * Returns: a reference to a virDomainCapsPtr instance or NULL
+ */
+virDomainCapsPtr
+virQEMUDriverGetDomainCapabilities(virQEMUDriverPtr driver,
+ virQEMUCapsPtr qemuCaps,
+ const char *machine,
+ virArch arch,
+ virDomainVirtType virttype)
+{
+ virDomainCapsPtr ret = NULL, domCaps = NULL;
+ virCapsPtr caps = NULL;
+ virQEMUDriverConfigPtr cfg = virQEMUDriverGetConfig(driver);
+
+ if (!(caps = virQEMUDriverGetCapabilities(driver, false)))
+ goto cleanup;
+
+ if (!(domCaps = virDomainCapsNew(virQEMUCapsGetBinary(qemuCaps), machine,
+ arch, virttype)))
+ goto cleanup;
+
+ if (virQEMUCapsFillDomainCaps(caps, domCaps, qemuCaps, driver->privileged,
+ cfg->firmwares, cfg->nfirmwares) < 0)
+ goto cleanup;
+
+ VIR_STEAL_PTR(ret, domCaps);
+ cleanup:
+ virObjectUnref(domCaps);
+ virObjectUnref(cfg);
+ virObjectUnref(caps);
+ return ret;
+}
+
+
struct _qemuSharedDeviceEntry {
size_t ref;
char **domains; /* array of domain names */
virCapsPtr virQEMUDriverGetCapabilities(virQEMUDriverPtr driver,
bool refresh);
+virDomainCapsPtr
+virQEMUDriverGetDomainCapabilities(virQEMUDriverPtr driver,
+ virQEMUCapsPtr qemuCaps,
+ const char *machine,
+ virArch arch,
+ virDomainVirtType virttype);
+
typedef struct _qemuSharedDeviceEntry qemuSharedDeviceEntry;
typedef qemuSharedDeviceEntry *qemuSharedDeviceEntryPtr;
virArch arch;
virDomainVirtType virttype;
virDomainCapsPtr domCaps = NULL;
- virQEMUDriverConfigPtr cfg = NULL;
- virCapsPtr caps = NULL;
virCheckFlags(0, ret);
if (virConnectGetDomainCapabilitiesEnsureACL(conn) < 0)
return ret;
- cfg = virQEMUDriverGetConfig(driver);
-
- if (!(caps = virQEMUDriverGetCapabilities(driver, false)))
- goto cleanup;
-
qemuCaps = virQEMUCapsCacheLookupDefault(driver->qemuCapsCache,
emulatorbin,
arch_str,
if (!qemuCaps)
goto cleanup;
- if (!(domCaps = virDomainCapsNew(virQEMUCapsGetBinary(qemuCaps), machine,
- arch, virttype)))
- goto cleanup;
-
- if (virQEMUCapsFillDomainCaps(caps, domCaps, qemuCaps,
- driver->privileged,
- cfg->firmwares, cfg->nfirmwares) < 0)
+ if (!(domCaps = virQEMUDriverGetDomainCapabilities(driver,
+ qemuCaps, machine,
+ arch, virttype)))
goto cleanup;
ret = virDomainCapsFormat(domCaps);
cleanup:
- virObjectUnref(cfg);
- virObjectUnref(caps);
virObjectUnref(domCaps);
virObjectUnref(qemuCaps);
return ret;