#include <fcntl.h>
#include <dirent.h>
#include <sys/time.h>
+#include <math.h>
#include "virterror_internal.h"
#include "datatypes.h"
#include "storage_file.h"
#include "files.h"
#include "bitmap.h"
+#include "verify.h"
+#include "count-one-bits.h"
#define VIR_FROM_THIS VIR_FROM_DOMAIN
+/* virDomainVirtType is used to set bits in the expectedVirtTypes bitmask,
+ * verify that it doesn't overflow an unsigned int when shifting */
+verify(VIR_DOMAIN_VIRT_LAST <= 32);
+
VIR_ENUM_IMPL(virDomainTaint, VIR_DOMAIN_TAINT_LAST,
"custom-argv",
"custom-monitor",
if (!(xml = virDomainDefFormat(domain->def, VIR_DOMAIN_XML_WRITE_FLAGS)))
goto out;
- if (!(newDef = virDomainDefParseString(caps, xml,
+ if (!(newDef = virDomainDefParseString(caps, xml, -1,
VIR_DOMAIN_XML_READ_FLAGS)))
goto out;
xmlDocPtr xml,
xmlNodePtr root,
xmlXPathContextPtr ctxt,
+ unsigned int expectedVirtTypes,
unsigned int flags)
{
xmlNodePtr *nodes = NULL, node = NULL;
}
VIR_FREE(tmp);
+ if ((expectedVirtTypes & (1 << def->virtType)) == 0) {
+ if (count_one_bits(expectedVirtTypes) == 1) {
+ virDomainReportError(VIR_ERR_INTERNAL_ERROR,
+ _("unexpected domain type %s, expecting %s"),
+ virDomainVirtTypeToString(def->virtType),
+ virDomainVirtTypeToString(log2(expectedVirtTypes)));
+ } else {
+ virBuffer buffer = VIR_BUFFER_INITIALIZER;
+ char *string;
+
+ for (i = 0; i < VIR_DOMAIN_VIRT_LAST; ++i) {
+ if ((expectedVirtTypes & (1 << i)) != 0) {
+ if (virBufferUse(&buffer) > 0)
+ virBufferAddLit(&buffer, ", ");
+
+ virBufferAdd(&buffer, virDomainVirtTypeToString(i), -1);
+ }
+ }
+
+ if (virBufferError(&buffer)) {
+ virReportOOMError();
+ virBufferFreeAndReset(&buffer);
+ goto error;
+ }
+
+ string = virBufferContentAndReset(&buffer);
+
+ virDomainReportError(VIR_ERR_INTERNAL_ERROR,
+ _("unexpected domain type %s, "
+ "expecting one of these: %s"),
+ virDomainVirtTypeToString(def->virtType),
+ string);
+
+ VIR_FREE(string);
+ }
+
+ goto error;
+ }
+
/* Extract domain name */
if (!(def->name = virXPathString("string(./name[1])", ctxt))) {
virDomainReportError(VIR_ERR_NO_NAME, NULL);
static virDomainObjPtr virDomainObjParseXML(virCapsPtr caps,
xmlDocPtr xml,
xmlXPathContextPtr ctxt,
+ unsigned int expectedVirtTypes,
unsigned int flags)
{
char *tmp = NULL;
oldnode = ctxt->node;
ctxt->node = config;
- obj->def = virDomainDefParseXML(caps, xml, config, ctxt, flags);
+ obj->def = virDomainDefParseXML(caps, xml, config, ctxt, expectedVirtTypes,
+ flags);
ctxt->node = oldnode;
if (!obj->def)
goto error;
virDomainDefParse(const char *xmlStr,
const char *filename,
virCapsPtr caps,
+ unsigned int expectedVirtTypes,
unsigned int flags)
{
xmlDocPtr xml;
virDomainDefPtr def = NULL;
if ((xml = virXMLParse(filename, xmlStr, "domain.xml"))) {
- def = virDomainDefParseNode(caps, xml, xmlDocGetRootElement(xml), flags);
+ def = virDomainDefParseNode(caps, xml, xmlDocGetRootElement(xml),
+ expectedVirtTypes, flags);
xmlFreeDoc(xml);
}
virDomainDefPtr virDomainDefParseString(virCapsPtr caps,
const char *xmlStr,
+ unsigned int expectedVirtTypes,
unsigned int flags)
{
- return virDomainDefParse(xmlStr, NULL, caps, flags);
+ return virDomainDefParse(xmlStr, NULL, caps, expectedVirtTypes, flags);
}
virDomainDefPtr virDomainDefParseFile(virCapsPtr caps,
const char *filename,
+ unsigned int expectedVirtTypes,
unsigned int flags)
{
- return virDomainDefParse(NULL, filename, caps, flags);
+ return virDomainDefParse(NULL, filename, caps, expectedVirtTypes, flags);
}
virDomainDefPtr virDomainDefParseNode(virCapsPtr caps,
xmlDocPtr xml,
xmlNodePtr root,
+ unsigned int expectedVirtTypes,
unsigned int flags)
{
xmlXPathContextPtr ctxt = NULL;
}
ctxt->node = root;
- def = virDomainDefParseXML(caps, xml, root, ctxt, flags);
+ def = virDomainDefParseXML(caps, xml, root, ctxt, expectedVirtTypes, flags);
cleanup:
xmlXPathFreeContext(ctxt);
virDomainObjParseNode(virCapsPtr caps,
xmlDocPtr xml,
xmlNodePtr root,
+ unsigned int expectedVirtTypes,
unsigned int flags)
{
xmlXPathContextPtr ctxt = NULL;
}
ctxt->node = root;
- obj = virDomainObjParseXML(caps, xml, ctxt, flags);
+ obj = virDomainObjParseXML(caps, xml, ctxt, expectedVirtTypes, flags);
cleanup:
xmlXPathFreeContext(ctxt);
virDomainObjPtr virDomainObjParseFile(virCapsPtr caps,
const char *filename,
+ unsigned int expectedVirtTypes,
unsigned int flags)
{
xmlDocPtr xml;
if ((xml = virXMLParseFile(filename))) {
obj = virDomainObjParseNode(caps, xml,
- xmlDocGetRootElement(xml), flags);
+ xmlDocGetRootElement(xml),
+ expectedVirtTypes, flags);
xmlFreeDoc(xml);
}
const char *configDir,
const char *autostartDir,
const char *name,
+ unsigned int expectedVirtTypes,
virDomainLoadConfigNotify notify,
void *opaque)
{
if ((configFile = virDomainConfigFile(configDir, name)) == NULL)
goto error;
- if (!(def = virDomainDefParseFile(caps, configFile,
+ if (!(def = virDomainDefParseFile(caps, configFile, expectedVirtTypes,
VIR_DOMAIN_XML_INACTIVE)))
goto error;
virDomainObjListPtr doms,
const char *statusDir,
const char *name,
+ unsigned int expectedVirtTypes,
virDomainLoadConfigNotify notify,
void *opaque)
{
if ((statusFile = virDomainConfigFile(statusDir, name)) == NULL)
goto error;
- if (!(obj = virDomainObjParseFile(caps, statusFile,
+ if (!(obj = virDomainObjParseFile(caps, statusFile, expectedVirtTypes,
VIR_DOMAIN_XML_INTERNAL_STATUS)))
goto error;
const char *configDir,
const char *autostartDir,
int liveStatus,
+ unsigned int expectedVirtTypes,
virDomainLoadConfigNotify notify,
void *opaque)
{
doms,
configDir,
entry->d_name,
+ expectedVirtTypes,
notify,
opaque);
else
configDir,
autostartDir,
entry->d_name,
+ expectedVirtTypes,
notify,
opaque);
if (dom) {
if (!xml)
return NULL;
- ret = virDomainDefParseString(caps, xml, VIR_DOMAIN_XML_READ_FLAGS);
+ ret = virDomainDefParseString(caps, xml, -1, VIR_DOMAIN_XML_READ_FLAGS);
VIR_FREE(xml);
return ret;
unsigned int flags);
virDomainDefPtr virDomainDefParseString(virCapsPtr caps,
const char *xmlStr,
+ unsigned int expectedVirtTypes,
unsigned int flags);
virDomainDefPtr virDomainDefParseFile(virCapsPtr caps,
const char *filename,
+ unsigned int expectedVirtTypes,
unsigned int flags);
virDomainDefPtr virDomainDefParseNode(virCapsPtr caps,
xmlDocPtr doc,
xmlNodePtr root,
+ unsigned int expectedVirtTypes,
unsigned int flags);
virDomainObjPtr virDomainObjParseFile(virCapsPtr caps,
const char *filename,
+ unsigned int expectedVirtTypes,
unsigned int flags);
bool virDomainDefCheckABIStability(virDomainDefPtr src,
const char *configDir,
const char *autostartDir,
int liveStatus,
+ unsigned int expectedVirtTypes,
virDomainLoadConfigNotify notify,
void *opaque);
return NULL;
}
- def = virDomainDefParseString(priv->caps, domainXml, 0);
+ def = virDomainDefParseString(priv->caps, domainXml,
+ 1 << VIR_DOMAIN_VIRT_VMWARE, 0);
if (def == NULL) {
return NULL;
}
/* Parse domain XML */
- def = virDomainDefParseString(priv->caps, xml,
+ def = virDomainDefParseString(priv->caps, xml, 1 << VIR_DOMAIN_VIRT_VMWARE,
VIR_DOMAIN_XML_INACTIVE);
if (def == NULL) {
}
if (!(def = virDomainDefParseString(driver->caps, xml,
+ 1 << VIR_DOMAIN_VIRT_XEN,
VIR_DOMAIN_XML_INACTIVE)))
goto error;
&libxl_driver->domains,
libxl_driver->stateDir,
libxl_driver->autostartDir,
- 1, NULL, NULL) < 0)
+ 1, 1 << VIR_DOMAIN_VIRT_XEN,
+ NULL, NULL) < 0)
goto error;
libxlReconnectDomains(libxl_driver);
&libxl_driver->domains,
libxl_driver->configDir,
libxl_driver->autostartDir,
- 0, NULL, NULL) < 0)
+ 0, 1 << VIR_DOMAIN_VIRT_XEN,
+ NULL, NULL) < 0)
goto error;
virHashForEach(libxl_driver->domains.objs, libxlAutostartDomain,
&libxl_driver->domains,
libxl_driver->configDir,
libxl_driver->autostartDir,
- 1, NULL, libxl_driver);
+ 1, 1 << VIR_DOMAIN_VIRT_XEN,
+ NULL, libxl_driver);
virHashForEach(libxl_driver->domains.objs, libxlAutostartDomain,
libxl_driver);
libxlDriverLock(driver);
if (!(def = virDomainDefParseString(driver->caps, xml,
+ 1 << VIR_DOMAIN_VIRT_XEN,
VIR_DOMAIN_XML_INACTIVE)))
goto cleanup;
goto cleanup;
}
- if (!(def = virDomainDefParseString(driver->caps, domainXml, 0)))
+ if (!(def = virDomainDefParseString(driver->caps, domainXml,
+ 1 << VIR_DOMAIN_VIRT_XEN, 0)))
goto cleanup;
if (!(conf = xenFormatXM(conn, def, ver_info->xen_version_major)))
libxlDriverLock(driver);
if (!(def = virDomainDefParseString(driver->caps, xml,
+ 1 << VIR_DOMAIN_VIRT_XEN,
VIR_DOMAIN_XML_INACTIVE)))
goto cleanup;
goto cleanup;
if ((def = virDomainDefParseFile(caps, configFile,
+ 1 << VIR_DOMAIN_VIRT_LXC,
VIR_DOMAIN_XML_INACTIVE)) == NULL)
goto cleanup;
lxcDriverLock(driver);
if (!(def = virDomainDefParseString(driver->caps, xml,
+ 1 << VIR_DOMAIN_VIRT_LXC,
VIR_DOMAIN_XML_INACTIVE)))
goto cleanup;
- if ((dupVM = virDomainObjIsDuplicate(&driver->domains, def, 0)) < 0)
+ if ((dupVM = virDomainObjIsDuplicate(&driver->domains, def, 0)) < 0)
goto cleanup;
if ((def->nets != NULL) && !(driver->have_netns)) {
lxcDriverLock(driver);
if (!(def = virDomainDefParseString(driver->caps, xml,
+ 1 << VIR_DOMAIN_VIRT_LXC,
VIR_DOMAIN_XML_INACTIVE)))
goto cleanup;
&lxc_driver->domains,
lxc_driver->stateDir,
NULL,
- 1, NULL, NULL) < 0)
+ 1, 1 << VIR_DOMAIN_VIRT_LXC,
+ NULL, NULL) < 0)
goto cleanup;
virHashForEach(lxc_driver->domains.objs, lxcReconnectVM, lxc_driver);
&lxc_driver->domains,
lxc_driver->configDir,
lxc_driver->autostartDir,
- 0, NULL, NULL) < 0)
+ 0, 1 << VIR_DOMAIN_VIRT_LXC,
+ NULL, NULL) < 0)
goto cleanup;
lxcDriverUnlock(lxc_driver);
&lxc_driver->domains,
lxc_driver->configDir,
lxc_driver->autostartDir,
- 0, lxcNotifyLoadDomain, lxc_driver);
+ 0, 1 << VIR_DOMAIN_VIRT_LXC,
+ lxcNotifyLoadDomain, lxc_driver);
lxcDriverUnlock(lxc_driver);
lxcAutostartConfigs(lxc_driver);
openvzDriverLock(driver);
if ((vmdef = virDomainDefParseString(driver->caps, xml,
+ 1 << VIR_DOMAIN_VIRT_OPENVZ,
VIR_DOMAIN_XML_INACTIVE)) == NULL)
goto cleanup;
openvzDriverLock(driver);
if ((vmdef = virDomainDefParseString(driver->caps, xml,
+ 1 << VIR_DOMAIN_VIRT_OPENVZ,
VIR_DOMAIN_XML_INACTIVE)) == NULL)
goto cleanup;
virCheckFlags(0, NULL);
if (!(def = virDomainDefParseString(phyp_driver->caps, xml,
+ 1 << VIR_DOMAIN_VIRT_PHYP,
VIR_DOMAIN_XML_SECURE)))
goto err;
# include "qemu_conf.h"
# include "bitmap.h"
+# define QEMU_EXPECTED_VIRT_TYPES \
+ ((1 << VIR_DOMAIN_VIRT_QEMU) | \
+ (1 << VIR_DOMAIN_VIRT_KQEMU) | \
+ (1 << VIR_DOMAIN_VIRT_KVM) | \
+ (1 << VIR_DOMAIN_VIRT_XEN))
+
/* Only 1 job is allowed at any time
* A job includes *all* monitor commands, even those just querying
* information, not merely actions */
&qemu_driver->domains,
qemu_driver->stateDir,
NULL,
- 1, NULL, NULL) < 0)
+ 1, QEMU_EXPECTED_VIRT_TYPES,
+ NULL, NULL) < 0)
goto error;
conn = virConnectOpen(qemu_driver->privileged ?
&qemu_driver->domains,
qemu_driver->configDir,
qemu_driver->autostartDir,
- 0, NULL, NULL) < 0)
+ 0, QEMU_EXPECTED_VIRT_TYPES,
+ NULL, NULL) < 0)
goto error;
&qemu_driver->domains,
qemu_driver->configDir,
qemu_driver->autostartDir,
- 0, qemudNotifyLoadDomain, qemu_driver);
+ 0, QEMU_EXPECTED_VIRT_TYPES,
+ qemudNotifyLoadDomain, qemu_driver);
qemuDriverUnlock(qemu_driver);
qemuAutostartDomains(qemu_driver);
qemuDriverLock(driver);
if (!(def = virDomainDefParseString(driver->caps, xml,
+ QEMU_EXPECTED_VIRT_TYPES,
VIR_DOMAIN_XML_INACTIVE)))
goto cleanup;
/* Create a domain from this XML */
if (!(def = virDomainDefParseString(driver->caps, xml,
+ QEMU_EXPECTED_VIRT_TYPES,
VIR_DOMAIN_XML_INACTIVE)))
goto error;
goto cleanup;
}
- def = virDomainDefParseString(driver->caps, xmlData, 0);
+ def = virDomainDefParseString(driver->caps, xmlData,
+ QEMU_EXPECTED_VIRT_TYPES, 0);
if (!def)
goto cleanup;
qemuDriverLock(driver);
if (!(def = virDomainDefParseString(driver->caps, xml,
+ QEMU_EXPECTED_VIRT_TYPES,
VIR_DOMAIN_XML_INACTIVE)))
goto cleanup;
if (xmlin) {
if (!(def = virDomainDefParseString(driver->caps, xmlin,
+ QEMU_EXPECTED_VIRT_TYPES,
VIR_DOMAIN_XML_INACTIVE)))
goto cleanup;
/* Parse the domain XML. */
if (!(def = virDomainDefParseString(driver->caps, dom_xml,
+ QEMU_EXPECTED_VIRT_TYPES,
VIR_DOMAIN_XML_INACTIVE)))
goto cleanup;
/* Parse the domain XML. */
if (!(def = virDomainDefParseString(driver->caps, dom_xml,
+ QEMU_EXPECTED_VIRT_TYPES,
VIR_DOMAIN_XML_INACTIVE)))
goto cleanup;
goto exit;
}
- ctl->def = virDomainDefParseString(ctl->caps, xmlStr,
+ ctl->def = virDomainDefParseString(ctl->caps, xmlStr, -1,
VIR_DOMAIN_XML_INACTIVE);
if (ctl->def == NULL) {
vah_error(ctl, 0, _("could not parse XML"));
privconn->nextDomID = 1;
- if (!(domdef = virDomainDefParseString(privconn->caps,
- defaultDomainXML,
+ if (!(domdef = virDomainDefParseString(privconn->caps, defaultDomainXML,
+ 1 << VIR_DOMAIN_VIRT_TEST,
VIR_DOMAIN_XML_INACTIVE)))
goto error;
+
if (testDomainGenerateIfnames(domdef) < 0)
goto error;
if (!(domobj = virDomainAssignDef(privconn->caps,
goto error;
}
def = virDomainDefParseFile(privconn->caps, absFile,
+ 1 << VIR_DOMAIN_VIRT_TEST,
VIR_DOMAIN_XML_INACTIVE);
VIR_FREE(absFile);
if (!def)
goto error;
} else {
if ((def = virDomainDefParseNode(privconn->caps, xml, domains[i],
+ 1 << VIR_DOMAIN_VIRT_TEST,
VIR_DOMAIN_XML_INACTIVE)) == NULL)
goto error;
}
testDriverLock(privconn);
if ((def = virDomainDefParseString(privconn->caps, xml,
+ 1 << VIR_DOMAIN_VIRT_TEST,
VIR_DOMAIN_XML_INACTIVE)) == NULL)
goto cleanup;
testDriverLock(privconn);
def = virDomainDefParseString(privconn->caps, xml,
+ 1 << VIR_DOMAIN_VIRT_TEST,
VIR_DOMAIN_XML_INACTIVE);
if (!def)
goto cleanup;
testDriverLock(privconn);
if ((def = virDomainDefParseString(privconn->caps, xml,
+ 1 << VIR_DOMAIN_VIRT_TEST,
VIR_DOMAIN_XML_INACTIVE)) == NULL)
goto cleanup;
¨_driver->domains,
uml_driver->configDir,
uml_driver->autostartDir,
- 0, NULL, NULL) < 0)
+ 0, 1 << VIR_DOMAIN_VIRT_UML,
+ NULL, NULL) < 0)
goto error;
umlAutostartConfigs(uml_driver);
¨_driver->domains,
uml_driver->configDir,
uml_driver->autostartDir,
- 0, NULL, NULL);
+ 0, 1 << VIR_DOMAIN_VIRT_UML,
+ NULL, NULL);
umlAutostartConfigs(uml_driver);
umlDriverUnlock(uml_driver);
umlDriverLock(driver);
if (!(def = virDomainDefParseString(driver->caps, xml,
+ 1 << VIR_DOMAIN_VIRT_UML,
VIR_DOMAIN_XML_INACTIVE)))
goto cleanup;
umlDriverLock(driver);
if (!(def = virDomainDefParseString(driver->caps, xml,
+ 1 << VIR_DOMAIN_VIRT_UML,
VIR_DOMAIN_XML_INACTIVE)))
goto cleanup;
nsresult rc;
if (!(def = virDomainDefParseString(data->caps, xml,
+ 1 << VIR_DOMAIN_VIRT_VBOX,
VIR_DOMAIN_XML_INACTIVE))) {
goto cleanup;
}
vmwareDriverLock(driver);
if ((vmdef = virDomainDefParseString(driver->caps, xml,
+ 1 << VIR_DOMAIN_VIRT_VMWARE,
VIR_DOMAIN_XML_INACTIVE)) == NULL)
goto cleanup;
vmwareDriverLock(driver);
if ((vmdef = virDomainDefParseString(driver->caps, xml,
+ 1 << VIR_DOMAIN_VIRT_VMWARE,
VIR_DOMAIN_XML_INACTIVE)) == NULL)
goto cleanup;
goto cleanup;
}
- if (!(def = virDomainDefParseString(priv->caps,
- xmlData,
- 0)))
+ if (!(def = virDomainDefParseString(priv->caps, xmlData,
+ 1 << VIR_DOMAIN_VIRT_XEN, 0)))
goto cleanup;
if (STREQ(format, XEN_CONFIG_FORMAT_XM)) {
priv = (xenUnifiedPrivatePtr) conn->privateData;
- if (!(def = virDomainDefParseString(priv->caps,
- xmlDesc,
+ if (!(def = virDomainDefParseString(priv->caps, xmlDesc,
+ 1 << VIR_DOMAIN_VIRT_XEN,
VIR_DOMAIN_XML_INACTIVE)))
return (NULL);
return(NULL);
if (!(def = virDomainDefParseString(priv->caps, xmlDesc,
+ 1 << VIR_DOMAIN_VIRT_XEN,
VIR_DOMAIN_XML_INACTIVE))) {
virXendError(VIR_ERR_XML_ERROR,
"%s", _("failed to parse domain description"));
}
if (!(def = virDomainDefParseString(priv->caps, xml,
+ 1 << VIR_DOMAIN_VIRT_XEN,
VIR_DOMAIN_XML_INACTIVE))) {
xenUnifiedUnlock(priv);
return (NULL);
virCheckFlags(0, NULL);
- virDomainDefPtr defPtr = virDomainDefParseString(caps, xmlDesc, flags);
+ virDomainDefPtr defPtr = virDomainDefParseString(caps, xmlDesc,
+ 1 << VIR_DOMAIN_VIRT_XEN,
+ flags);
createVMRecordFromXml(conn, defPtr, &record, &vm);
virDomainDefFree(defPtr);
if (record) {
virCapsPtr caps = ((struct _xenapiPrivate *)(conn->privateData))->caps;
if (!caps)
return NULL;
- virDomainDefPtr defPtr = virDomainDefParseString(caps, xml, 0);
+ virDomainDefPtr defPtr = virDomainDefParseString(caps, xml,
+ 1 << VIR_DOMAIN_VIRT_XEN, 0);
if (!defPtr)
return NULL;
+
if (createVMRecordFromXml(conn, defPtr, &record, &vm) != 0) {
if (!session->ok)
xenapiSessionErrorHandler(conn, VIR_ERR_INTERNAL_ERROR, NULL);
# Domain definition from Cole Robinson.
cat <<\EOF > D.xml || fail=1
-<domain type='kvm'>
+<domain type='test'>
<name>D</name>
<uuid>aaa3ae22-fed2-bfbd-ac02-3bea3bcfad82</uuid>
<memory>262144</memory>
# include "testutils.h"
# include "qemu/qemu_capabilities.h"
# include "qemu/qemu_command.h"
+# include "qemu/qemu_domain.h"
# include "datatypes.h"
# include "cpu/cpu_map.h"
expectargv[len - 1] = '\0';
if (!(vmdef = virDomainDefParseFile(driver.caps, xml,
+ QEMU_EXPECTED_VIRT_TYPES,
VIR_DOMAIN_XML_INACTIVE)))
goto fail;
# include "internal.h"
# include "testutils.h"
# include "qemu/qemu_conf.h"
+# include "qemu/qemu_domain.h"
# include "testutilsqemu.h"
static struct qemud_driver driver;
goto fail;
if (!(def = virDomainDefParseString(driver.caps, inXmlData,
- VIR_DOMAIN_XML_INACTIVE)))
+ QEMU_EXPECTED_VIRT_TYPES,
+ VIR_DOMAIN_XML_INACTIVE)))
goto fail;
if (!(actual = virDomainDefFormat(def, VIR_DOMAIN_XML_SECURE)))
priv.caps = caps;
conn->privateData = &priv;
- if (!(def = virDomainDefParseString(caps, xmlData,
+ if (!(def = virDomainDefParseString(caps, xmlData, 1 << VIR_DOMAIN_VIRT_XEN,
VIR_DOMAIN_XML_INACTIVE)))
goto fail;
if (virtTestLoadFile(sexpr, &sexprData) < 0)
goto fail;
- if (!(def = virDomainDefParseString(caps, xmlData,
+ if (!(def = virDomainDefParseString(caps, xmlData, 1 << VIR_DOMAIN_VIRT_XEN,
VIR_DOMAIN_XML_INACTIVE)))
goto fail;
goto failure;
}
- def = virDomainDefParseString(caps, xmlData, VIR_DOMAIN_XML_INACTIVE);
+ def = virDomainDefParseString(caps, xmlData, 1 << VIR_DOMAIN_VIRT_VMWARE,
+ VIR_DOMAIN_XML_INACTIVE);
if (def == NULL) {
goto failure;