From 0ecd6851093945dd5ddc78266c61b577c65394ae Mon Sep 17 00:00:00 2001 From: "Daniel P. Berrange" Date: Tue, 18 Nov 2014 16:44:00 +0000 Subject: [PATCH] Give virDomainDef parser & formatter their own flags The virDomainDefParse* and virDomainDefFormat* methods both accept the VIR_DOMAIN_XML_* flags defined in the public API, along with a set of other VIR_DOMAIN_XML_INTERNAL_* flags defined in domain_conf.c. This is seriously confusing & error prone for a number of reasons: - VIR_DOMAIN_XML_SECURE, VIR_DOMAIN_XML_MIGRATABLE and VIR_DOMAIN_XML_UPDATE_CPU are only relevant for the formatting operation - Some of the VIR_DOMAIN_XML_INTERNAL_* flags only apply to parse or to format, but not both. This patch cleanly separates out the flags. There are two distint VIR_DOMAIN_DEF_PARSE_* and VIR_DOMAIN_DEF_FORMAT_* flags that are used by the corresponding methods. The VIR_DOMAIN_XML_* flags received via public API calls must be converted to the VIR_DOMAIN_DEF_FORMAT_* flags where needed. The various calls to virDomainDefParse which hardcoded the use of the VIR_DOMAIN_XML_INACTIVE flag change to use the VIR_DOMAIN_DEF_PARSE_INACTIVE flag. --- src/bhyve/bhyve_driver.c | 9 +- src/conf/domain_conf.c | 292 +++++++++++++++--------------- src/conf/domain_conf.h | 33 ++++ src/conf/snapshot_conf.c | 8 +- src/esx/esx_driver.c | 13 +- src/hyperv/hyperv_driver.c | 3 +- src/libvirt_private.syms | 1 + src/libxl/libxl_domain.c | 2 +- src/libxl/libxl_driver.c | 23 +-- src/libxl/libxl_migration.c | 6 +- src/lxc/lxc_driver.c | 12 +- src/openvz/openvz_driver.c | 13 +- src/parallels/parallels_driver.c | 2 +- src/phyp/phyp_driver.c | 5 +- src/qemu/qemu_domain.c | 12 +- src/qemu/qemu_driver.c | 26 +-- src/qemu/qemu_migration.c | 8 +- src/security/security_apparmor.c | 2 +- src/security/virt-aa-helper.c | 3 +- src/test/test_driver.c | 18 +- src/uml/uml_driver.c | 10 +- src/vbox/vbox_common.c | 14 +- src/vmware/vmware_driver.c | 9 +- src/xen/xen_driver.c | 9 +- src/xen/xend_internal.c | 6 +- src/xen/xm_internal.c | 4 +- src/xenapi/xenapi_driver.c | 4 +- tests/bhyvexml2argvtest.c | 2 +- tests/bhyvexml2xmltest.c | 4 +- tests/domainsnapshotxml2xmltest.c | 2 +- tests/lxcxml2xmltest.c | 4 +- tests/openvzutilstest.c | 2 +- tests/qemuagenttest.c | 2 +- tests/qemuhotplugtest.c | 6 +- tests/qemuxml2argvtest.c | 2 +- tests/qemuxml2xmltest.c | 9 +- tests/qemuxmlnstest.c | 2 +- tests/vmx2xmltest.c | 2 +- tests/xmconfigtest.c | 4 +- tests/xml2sexprtest.c | 2 +- tests/xml2vmxtest.c | 2 +- 41 files changed, 320 insertions(+), 272 deletions(-) diff --git a/src/bhyve/bhyve_driver.c b/src/bhyve/bhyve_driver.c index 125b8aa9ed..9b825988ce 100644 --- a/src/bhyve/bhyve_driver.c +++ b/src/bhyve/bhyve_driver.c @@ -476,7 +476,8 @@ bhyveDomainGetXMLDesc(virDomainPtr domain, unsigned int flags) if (virDomainGetXMLDescEnsureACL(domain->conn, vm->def, flags) < 0) goto cleanup; - ret = virDomainDefFormat(vm->def, flags); + ret = virDomainDefFormat(vm->def, + virDomainDefFormatConvertXMLFlags(flags)); cleanup: if (vm) @@ -503,7 +504,7 @@ bhyveDomainDefineXMLFlags(virConnectPtr conn, const char *xml, unsigned int flag if ((def = virDomainDefParseString(xml, caps, privconn->xmlopt, 1 << VIR_DOMAIN_VIRT_BHYVE, - VIR_DOMAIN_XML_INACTIVE)) == NULL) + VIR_DOMAIN_DEF_PARSE_INACTIVE)) == NULL) goto cleanup; if (virDomainDefineXMLFlagsEnsureACL(conn, def) < 0) @@ -691,7 +692,7 @@ bhyveConnectDomainXMLToNative(virConnectPtr conn, if (!(def = virDomainDefParseString(xmlData, caps, privconn->xmlopt, 1 << VIR_DOMAIN_VIRT_BHYVE, - VIR_DOMAIN_XML_INACTIVE))) + VIR_DOMAIN_DEF_PARSE_INACTIVE))) goto cleanup; if (bhyveDomainAssignAddresses(def, NULL) < 0) @@ -902,7 +903,7 @@ bhyveDomainCreateXML(virConnectPtr conn, if ((def = virDomainDefParseString(xml, caps, privconn->xmlopt, 1 << VIR_DOMAIN_VIRT_BHYVE, - VIR_DOMAIN_XML_INACTIVE)) == NULL) + VIR_DOMAIN_DEF_PARSE_INACTIVE)) == NULL) goto cleanup; if (virDomainCreateXMLEnsureACL(conn, def) < 0) diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c index fc29f976ee..b316b4bef9 100644 --- a/src/conf/domain_conf.c +++ b/src/conf/domain_conf.c @@ -86,39 +86,13 @@ struct _virDomainXMLOption { /* XML namespace callbacks */ virDomainXMLNamespace ns; - }; +}; - -/* Private flags used internally by virDomainSaveStatus and - * virDomainLoadStatus, in addition to the public virDomainXMLFlags. */ -typedef enum { - /* dump internal domain status information */ - VIR_DOMAIN_XML_INTERNAL_STATUS = 1 << 16, - /* dump/parse element */ - VIR_DOMAIN_XML_INTERNAL_ACTUAL_NET = 1 << 17, - /* dump/parse original states of host PCI device */ - VIR_DOMAIN_XML_INTERNAL_PCI_ORIG_STATES = 1 << 18, - VIR_DOMAIN_XML_INTERNAL_ALLOW_ROM = 1 << 19, - VIR_DOMAIN_XML_INTERNAL_ALLOW_BOOT = 1 << 20, - VIR_DOMAIN_XML_INTERNAL_CLOCK_ADJUST = 1 << 21, - /* parse only source half of */ - VIR_DOMAIN_XML_INTERNAL_DISK_SOURCE = 1 << 22, -} virDomainXMLInternalFlags; - -#define DUMPXML_FLAGS \ - (VIR_DOMAIN_XML_SECURE | \ - VIR_DOMAIN_XML_INACTIVE | \ - VIR_DOMAIN_XML_UPDATE_CPU | \ - VIR_DOMAIN_XML_MIGRATABLE) - -verify(((VIR_DOMAIN_XML_INTERNAL_STATUS | - VIR_DOMAIN_XML_INTERNAL_ACTUAL_NET | - VIR_DOMAIN_XML_INTERNAL_PCI_ORIG_STATES | - VIR_DOMAIN_XML_INTERNAL_ALLOW_ROM | - VIR_DOMAIN_XML_INTERNAL_ALLOW_BOOT | - VIR_DOMAIN_XML_INTERNAL_CLOCK_ADJUST | - VIR_DOMAIN_XML_INTERNAL_DISK_SOURCE) - & DUMPXML_FLAGS) == 0); +#define VIR_DOMAIN_DEF_FORMAT_COMMON_FLAGS \ + (VIR_DOMAIN_DEF_FORMAT_SECURE | \ + VIR_DOMAIN_DEF_FORMAT_INACTIVE | \ + VIR_DOMAIN_DEF_FORMAT_UPDATE_CPU | \ + VIR_DOMAIN_DEF_FORMAT_MIGRATABLE) VIR_ENUM_IMPL(virDomainTaint, VIR_DOMAIN_TAINT_LAST, "custom-argv", @@ -800,9 +774,6 @@ VIR_ENUM_DECL(virDomainBlockJob) VIR_ENUM_IMPL(virDomainBlockJob, VIR_DOMAIN_BLOCK_JOB_TYPE_LAST, "", "", "copy", "", "active-commit") -#define VIR_DOMAIN_XML_WRITE_FLAGS VIR_DOMAIN_XML_SECURE -#define VIR_DOMAIN_XML_READ_FLAGS VIR_DOMAIN_XML_INACTIVE - static virClassPtr virDomainObjClass; static virClassPtr virDomainObjListClass; static virClassPtr virDomainXMLOptionClass; @@ -2724,11 +2695,11 @@ virDomainDeviceGetInfo(virDomainDeviceDefPtr device) } static bool -virDomainDeviceInfoIsSet(virDomainDeviceInfoPtr info, unsigned int flags) +virDomainDeviceInfoNeedsFormat(virDomainDeviceInfoPtr info, unsigned int flags) { if (info->type != VIR_DOMAIN_DEVICE_ADDRESS_TYPE_NONE) return true; - if (info->alias && !(flags & VIR_DOMAIN_XML_INACTIVE)) + if (info->alias && !(flags & VIR_DOMAIN_DEF_FORMAT_INACTIVE)) return true; if (info->mastertype != VIR_DOMAIN_CONTROLLER_MASTER_NONE) return true; @@ -3384,11 +3355,11 @@ virDomainDeviceInfoFormat(virBufferPtr buf, virDomainDeviceInfoPtr info, unsigned int flags) { - if ((flags & VIR_DOMAIN_XML_INTERNAL_ALLOW_BOOT) && info->bootIndex) + if ((flags & VIR_DOMAIN_DEF_FORMAT_ALLOW_BOOT) && info->bootIndex) virBufferAsprintf(buf, "\n", info->bootIndex); if (info->alias && - !(flags & VIR_DOMAIN_XML_INACTIVE)) { + !(flags & VIR_DOMAIN_DEF_FORMAT_INACTIVE)) { virBufferAsprintf(buf, "\n", info->alias); } @@ -3397,7 +3368,7 @@ virDomainDeviceInfoFormat(virBufferPtr buf, info->master.usb.startport); } - if ((flags & VIR_DOMAIN_XML_INTERNAL_ALLOW_ROM) && + if ((flags & VIR_DOMAIN_DEF_FORMAT_ALLOW_ROM) && (info->rombar || info->romfile)) { virBufferAddLit(buf, "type == XML_ELEMENT_NODE) { if (alias == NULL && - !(flags & VIR_DOMAIN_XML_INACTIVE) && + !(flags & VIR_DOMAIN_DEF_PARSE_INACTIVE) && xmlStrEqual(cur->name, BAD_CAST "alias")) { alias = cur; } else if (address == NULL && @@ -3891,11 +3862,11 @@ virDomainDeviceInfoParseXML(xmlNodePtr node, xmlStrEqual(cur->name, BAD_CAST "master")) { master = cur; } else if (boot == NULL && - (flags & VIR_DOMAIN_XML_INTERNAL_ALLOW_BOOT) && + (flags & VIR_DOMAIN_DEF_PARSE_ALLOW_BOOT) && xmlStrEqual(cur->name, BAD_CAST "boot")) { boot = cur; } else if (rom == NULL && - (flags & VIR_DOMAIN_XML_INTERNAL_ALLOW_ROM) && + (flags & VIR_DOMAIN_DEF_PARSE_ALLOW_ROM) && xmlStrEqual(cur->name, BAD_CAST "rom")) { rom = cur; } @@ -4223,7 +4194,7 @@ virDomainHostdevSubsysPCIDefParseXML(xmlNodePtr node, if (virDevicePCIAddressParseXML(cur, addr) < 0) goto out; - } else if ((flags & VIR_DOMAIN_XML_INTERNAL_STATUS) && + } else if ((flags & VIR_DOMAIN_DEF_PARSE_STATUS) && xmlStrEqual(cur->name, BAD_CAST "state")) { /* Legacy back-compat. Don't add any more attributes here */ char *devaddr = virXMLPropString(cur, "devaddr"); @@ -4237,7 +4208,7 @@ virDomainHostdevSubsysPCIDefParseXML(xmlNodePtr node, goto out; } def->info->type = VIR_DOMAIN_DEVICE_ADDRESS_TYPE_PCI; - } else if ((flags & VIR_DOMAIN_XML_INTERNAL_PCI_ORIG_STATES) && + } else if ((flags & VIR_DOMAIN_DEF_PARSE_PCI_ORIG_STATES) && xmlStrEqual(cur->name, BAD_CAST "origstates")) { virDomainHostdevOrigStatesPtr states = &def->origstates; if (virDomainHostdevSubsysPCIOrigStatesDefParseXML(cur, states) < 0) @@ -5191,7 +5162,7 @@ virSecurityLabelDefParseXML(xmlXPathContextPtr ctxt, * present. Hence, return now. */ if (STREQ_NULLABLE(seclabel->model, "none")) { - if (flags & VIR_DOMAIN_XML_INACTIVE) { + if (flags & VIR_DOMAIN_DEF_PARSE_INACTIVE) { /* Fix older configurations */ seclabel->type = VIR_DOMAIN_SECLABEL_NONE; seclabel->relabel = false; @@ -5212,7 +5183,7 @@ virSecurityLabelDefParseXML(xmlXPathContextPtr ctxt, * if the 'live' VM XML is requested */ if (seclabel->type == VIR_DOMAIN_SECLABEL_STATIC || - (!(flags & VIR_DOMAIN_XML_INACTIVE) && + (!(flags & VIR_DOMAIN_DEF_PARSE_INACTIVE) && seclabel->type != VIR_DOMAIN_SECLABEL_NONE)) { p = virXPathStringLimit("string(./label[1])", VIR_SECURITY_LABEL_BUFLEN-1, ctxt); @@ -5228,7 +5199,7 @@ virSecurityLabelDefParseXML(xmlXPathContextPtr ctxt, /* Only parse imagelabel, if requested live XML with relabeling */ if (seclabel->relabel && - (!(flags & VIR_DOMAIN_XML_INACTIVE) && + (!(flags & VIR_DOMAIN_DEF_PARSE_INACTIVE) && seclabel->type != VIR_DOMAIN_SECLABEL_NONE)) { p = virXPathStringLimit("string(./imagelabel[1])", VIR_SECURITY_LABEL_BUFLEN-1, ctxt); @@ -5319,7 +5290,7 @@ virSecurityLabelDefsParseXML(virDomainDefPtr def, if (def->seclabels[0]->type == VIR_DOMAIN_SECLABEL_NONE || (def->seclabels[0]->type == VIR_DOMAIN_SECLABEL_DYNAMIC && !def->seclabels[0]->baselabel && - (flags & VIR_DOMAIN_XML_INACTIVE))) { + (flags & VIR_DOMAIN_DEF_PARSE_INACTIVE))) { /* Copy model from host. */ VIR_DEBUG("Found seclabel without a model, using '%s'", host->secModels[0].model); @@ -5327,7 +5298,7 @@ virSecurityLabelDefsParseXML(virDomainDefPtr def, goto error; if (STREQ(def->seclabels[0]->model, "none") && - flags & VIR_DOMAIN_XML_INACTIVE) { + flags & VIR_DOMAIN_DEF_PARSE_INACTIVE) { /* Fix older configurations */ def->seclabels[0]->type = VIR_DOMAIN_SECLABEL_NONE; def->seclabels[0]->relabel = false; @@ -5435,7 +5406,7 @@ virSecurityDeviceLabelDefParseXML(virSecurityDeviceLabelDefPtr **seclabels_rtn, /* labelskip is only parsed on live images */ labelskip = virXMLPropString(list[i], "labelskip"); seclabels[i]->labelskip = false; - if (labelskip && !(flags & VIR_DOMAIN_XML_INACTIVE)) + if (labelskip && !(flags & VIR_DOMAIN_DEF_PARSE_INACTIVE)) seclabels[i]->labelskip = STREQ(labelskip, "yes"); VIR_FREE(labelskip); @@ -5941,7 +5912,7 @@ virDomainDiskDefParseXML(virDomainXMLOptionPtr xmlopt, driverIOThread = virXMLPropString(cur, "iothread"); } else if (!def->mirror && xmlStrEqual(cur->name, BAD_CAST "mirror") && - !(flags & VIR_DOMAIN_XML_INACTIVE)) { + !(flags & VIR_DOMAIN_DEF_PARSE_INACTIVE)) { char *ready; char *blockJob; @@ -6194,7 +6165,7 @@ virDomainDiskDefParseXML(virDomainXMLOptionPtr xmlopt, def->src->shared = true; } else if (xmlStrEqual(cur->name, BAD_CAST "transient")) { def->transient = true; - } else if ((flags & VIR_DOMAIN_XML_INTERNAL_STATUS) && + } else if ((flags & VIR_DOMAIN_DEF_PARSE_STATUS) && xmlStrEqual(cur->name, BAD_CAST "state")) { /* Legacy back-compat. Don't add any more attributes here */ devaddr = virXMLPropString(cur, "devaddr"); @@ -6273,7 +6244,7 @@ virDomainDiskDefParseXML(virDomainXMLOptionPtr xmlopt, * that are not attached to a physical device presently */ if (source == NULL && def->src->hosts == NULL && !def->src->srcpool && (def->device == VIR_DOMAIN_DISK_DEVICE_DISK || - (flags & VIR_DOMAIN_XML_INTERNAL_DISK_SOURCE))) { + (flags & VIR_DOMAIN_DEF_PARSE_DISK_SOURCE))) { virReportError(VIR_ERR_NO_SOURCE, target ? "%s" : NULL, target); goto error; @@ -6293,7 +6264,7 @@ virDomainDiskDefParseXML(virDomainXMLOptionPtr xmlopt, ctxt->node = saved_node; } - if (!target && !(flags & VIR_DOMAIN_XML_INTERNAL_DISK_SOURCE)) { + if (!target && !(flags & VIR_DOMAIN_DEF_PARSE_DISK_SOURCE)) { if (def->src->srcpool) { char *tmp; if (virAsprintf(&tmp, "pool = '%s', volume = '%s'", @@ -6308,7 +6279,7 @@ virDomainDiskDefParseXML(virDomainXMLOptionPtr xmlopt, goto error; } - if (!(flags & VIR_DOMAIN_XML_INTERNAL_DISK_SOURCE)) { + if (!(flags & VIR_DOMAIN_DEF_PARSE_DISK_SOURCE)) { if (def->device == VIR_DOMAIN_DISK_DEVICE_FLOPPY && !STRPREFIX(target, "fd")) { virReportError(VIR_ERR_INTERNAL_ERROR, @@ -6379,7 +6350,7 @@ virDomainDiskDefParseXML(virDomainXMLOptionPtr xmlopt, } else { if (def->device == VIR_DOMAIN_DISK_DEVICE_FLOPPY) { def->bus = VIR_DOMAIN_DISK_BUS_FDC; - } else if (!(flags & VIR_DOMAIN_XML_INTERNAL_DISK_SOURCE)) { + } else if (!(flags & VIR_DOMAIN_DEF_PARSE_DISK_SOURCE)) { if (STRPREFIX(target, "hd")) def->bus = VIR_DOMAIN_DISK_BUS_IDE; else if (STRPREFIX(target, "sd")) @@ -6553,7 +6524,7 @@ virDomainDiskDefParseXML(virDomainXMLOptionPtr xmlopt, def->info.type = VIR_DOMAIN_DEVICE_ADDRESS_TYPE_PCI; } else { if (virDomainDeviceInfoParseXML(node, bootHash, &def->info, - flags | VIR_DOMAIN_XML_INTERNAL_ALLOW_BOOT) < 0) + flags | VIR_DOMAIN_DEF_PARSE_ALLOW_BOOT) < 0) goto error; } @@ -6613,7 +6584,7 @@ virDomainDiskDefParseXML(virDomainXMLOptionPtr xmlopt, } } - if (!(flags & VIR_DOMAIN_XML_INTERNAL_DISK_SOURCE)) { + if (!(flags & VIR_DOMAIN_DEF_PARSE_DISK_SOURCE)) { if (def->info.type == VIR_DOMAIN_DEVICE_ADDRESS_TYPE_NONE && virDomainDiskDefAssignAddress(xmlopt, def) < 0) goto error; @@ -7564,7 +7535,7 @@ virDomainNetDefParseXML(virDomainXMLOptionPtr xmlopt, xmlStrEqual(cur->name, BAD_CAST "target")) { ifname = virXMLPropString(cur, "dev"); if (ifname && - (flags & VIR_DOMAIN_XML_INACTIVE) && + (flags & VIR_DOMAIN_DEF_PARSE_INACTIVE) && STRPREFIX(ifname, VIR_NET_GENERATED_PREFIX)) { /* An auto-generated target name, blank it out */ VIR_FREE(ifname); @@ -7597,14 +7568,14 @@ virDomainNetDefParseXML(virDomainXMLOptionPtr xmlopt, filter = virXMLPropString(cur, "filter"); virNWFilterHashTableFree(filterparams); filterparams = virNWFilterParseParamAttributes(cur); - } else if ((flags & VIR_DOMAIN_XML_INTERNAL_STATUS) && + } else if ((flags & VIR_DOMAIN_DEF_PARSE_STATUS) && xmlStrEqual(cur->name, BAD_CAST "state")) { /* Legacy back-compat. Don't add any more attributes here */ devaddr = virXMLPropString(cur, "devaddr"); } else if (xmlStrEqual(cur->name, BAD_CAST "boot")) { /* boot is parsed as part of virDomainDeviceInfoParseXML */ } else if (!actual && - (flags & VIR_DOMAIN_XML_INTERNAL_ACTUAL_NET) && + (flags & VIR_DOMAIN_DEF_PARSE_ACTUAL_NET) && def->type == VIR_DOMAIN_NET_TYPE_NETWORK && xmlStrEqual(cur->name, BAD_CAST "actual")) { if (virDomainActualNetDefParseXML(cur, ctxt, def, @@ -7661,8 +7632,8 @@ virDomainNetDefParseXML(virDomainXMLOptionPtr xmlopt, def->info.type = VIR_DOMAIN_DEVICE_ADDRESS_TYPE_PCI; } else { if (virDomainDeviceInfoParseXML(node, bootHash, &def->info, - flags | VIR_DOMAIN_XML_INTERNAL_ALLOW_BOOT - | VIR_DOMAIN_XML_INTERNAL_ALLOW_ROM) < 0) + flags | VIR_DOMAIN_DEF_PARSE_ALLOW_BOOT + | VIR_DOMAIN_DEF_PARSE_ALLOW_ROM) < 0) goto error; } @@ -7835,7 +7806,7 @@ virDomainNetDefParseXML(virDomainXMLOptionPtr xmlopt, def->data.direct.linkdev = dev; dev = NULL; - if (flags & VIR_DOMAIN_XML_INACTIVE) + if (flags & VIR_DOMAIN_DEF_PARSE_INACTIVE) VIR_FREE(ifname); break; @@ -8274,7 +8245,7 @@ virDomainChrDefParseTargetXML(virDomainChrDefPtr def, case VIR_DOMAIN_CHR_CHANNEL_TARGET_TYPE_VIRTIO: def->target.name = virXMLPropString(cur, "name"); - if (!(flags & VIR_DOMAIN_XML_INACTIVE) && + if (!(flags & VIR_DOMAIN_DEF_PARSE_INACTIVE) && (stateStr = virXMLPropString(cur, "state"))) { int tmp; @@ -8363,7 +8334,7 @@ virDomainChrSourceDefParseXML(virDomainChrSourceDefPtr def, /* PTY path is only parsed from live xml. */ if (!path && (def->type != VIR_DOMAIN_CHR_TYPE_PTY || - !(flags & VIR_DOMAIN_XML_INACTIVE))) + !(flags & VIR_DOMAIN_DEF_PARSE_INACTIVE))) path = virXMLPropString(cur, "path"); break; @@ -9363,7 +9334,7 @@ virDomainGraphicsListenDefParseXML(virDomainGraphicsListenDefPtr def, if (address && address[0] && (def->type == VIR_DOMAIN_GRAPHICS_LISTEN_TYPE_ADDRESS || (def->type == VIR_DOMAIN_GRAPHICS_LISTEN_TYPE_NETWORK && - !(flags & VIR_DOMAIN_XML_INACTIVE)))) { + !(flags & VIR_DOMAIN_DEF_PARSE_INACTIVE)))) { def->address = address; address = NULL; } @@ -9381,7 +9352,7 @@ virDomainGraphicsListenDefParseXML(virDomainGraphicsListenDefPtr def, } if (fromConfig && - flags & VIR_DOMAIN_XML_INTERNAL_STATUS) { + flags & VIR_DOMAIN_DEF_PARSE_STATUS) { if (virStrToLong_i(fromConfig, NULL, 10, &tmp) < 0) { virReportError(VIR_ERR_XML_ERROR, _("Invalid fromConfig value: %s"), @@ -9520,7 +9491,7 @@ virDomainGraphicsDefParseXML(xmlNodePtr node, VIR_FREE(port); /* Legacy compat syntax, used -1 for auto-port */ if (def->data.vnc.port == -1) { - if (flags & VIR_DOMAIN_XML_INACTIVE) + if (flags & VIR_DOMAIN_DEF_PARSE_INACTIVE) def->data.vnc.port = 0; def->data.vnc.autoport = true; } @@ -9531,7 +9502,7 @@ virDomainGraphicsDefParseXML(xmlNodePtr node, if ((autoport = virXMLPropString(node, "autoport")) != NULL) { if (STREQ(autoport, "yes")) { - if (flags & VIR_DOMAIN_XML_INACTIVE) + if (flags & VIR_DOMAIN_DEF_PARSE_INACTIVE) def->data.vnc.port = 0; def->data.vnc.autoport = true; } @@ -9621,7 +9592,7 @@ virDomainGraphicsDefParseXML(xmlNodePtr node, VIR_FREE(autoport); } - if (def->data.rdp.autoport && (flags & VIR_DOMAIN_XML_INACTIVE)) + if (def->data.rdp.autoport && (flags & VIR_DOMAIN_DEF_PARSE_INACTIVE)) def->data.rdp.port = 0; if ((replaceUser = virXMLPropString(node, "replaceUser")) != NULL) { @@ -9714,7 +9685,7 @@ virDomainGraphicsDefParseXML(xmlNodePtr node, def->data.spice.autoport = true; } - if (def->data.spice.autoport && (flags & VIR_DOMAIN_XML_INACTIVE)) { + if (def->data.spice.autoport && (flags & VIR_DOMAIN_DEF_PARSE_INACTIVE)) { def->data.spice.port = 0; def->data.spice.tlsPort = 0; } @@ -10759,8 +10730,8 @@ virDomainHostdevDefParseXML(virDomainXMLOptionPtr xmlopt, if (def->info->type == VIR_DOMAIN_DEVICE_ADDRESS_TYPE_NONE) { if (virDomainDeviceInfoParseXML(node, bootHash, def->info, - flags | VIR_DOMAIN_XML_INTERNAL_ALLOW_BOOT - | VIR_DOMAIN_XML_INTERNAL_ALLOW_ROM) < 0) + flags | VIR_DOMAIN_DEF_PARSE_ALLOW_BOOT + | VIR_DOMAIN_DEF_PARSE_ALLOW_ROM) < 0) goto error; } @@ -10854,7 +10825,7 @@ virDomainRedirdevDefParseXML(xmlNodePtr node, def->source.chr.data.spicevmc = VIR_DOMAIN_CHR_SPICEVMC_USBREDIR; if (virDomainDeviceInfoParseXML(node, bootHash, &def->info, - flags | VIR_DOMAIN_XML_INTERNAL_ALLOW_BOOT) < 0) + flags | VIR_DOMAIN_DEF_PARSE_ALLOW_BOOT) < 0) goto error; if (def->bus == VIR_DOMAIN_REDIRDEV_BUS_USB && @@ -11293,7 +11264,7 @@ virDomainDiskDefSourceParse(const char *xmlStr, goto cleanup; } - flags |= VIR_DOMAIN_XML_INTERNAL_DISK_SOURCE; + flags |= VIR_DOMAIN_DEF_PARSE_DISK_SOURCE; if (!(disk = virDomainDiskDefParseXML(xmlopt, node, ctxt, NULL, def->seclabels, def->nseclabels, @@ -12652,6 +12623,7 @@ virDomainLoaderDefParseXML(xmlNodePtr node, return ret; } + static virDomainDefPtr virDomainDefParseXML(xmlDocPtr xml, xmlNodePtr root, @@ -12678,7 +12650,7 @@ virDomainDefParseXML(xmlDocPtr xml, if (VIR_ALLOC(def) < 0) return NULL; - if (!(flags & VIR_DOMAIN_XML_INACTIVE)) + if (!(flags & VIR_DOMAIN_DEF_PARSE_INACTIVE)) if (virXPathLong("string(./@id)", ctxt, &id) < 0) id = -1; def->id = (int)id; @@ -16469,7 +16441,7 @@ virSecurityDeviceLabelDefFormat(virBufferPtr buf, { /* For offline output, skip elements that allow labels but have no * label specified (possible if labelskip was ignored on input). */ - if ((flags & VIR_DOMAIN_XML_INACTIVE) && !def->label && def->relabel) + if ((flags & VIR_DOMAIN_DEF_FORMAT_INACTIVE) && !def->label && def->relabel) return; virBufferAddLit(buf, "src->backingStore, def->src->backingStoreRaw, 1) < 0) return -1; @@ -16898,7 +16870,7 @@ virDomainDiskDefFormat(virBufferPtr buf, * the new style similar to backingStore, but for back-compat on * blockcopy files we also have to output old style attributes. * The parser accepts either style across libvirtd upgrades. */ - if (def->mirror && !(flags & VIR_DOMAIN_XML_INACTIVE)) { + if (def->mirror && !(flags & VIR_DOMAIN_DEF_FORMAT_INACTIVE)) { const char *formatStr = NULL; if (def->mirror->format) @@ -17041,7 +17013,7 @@ virDomainDiskDefFormat(virBufferPtr buf, virStorageEncryptionFormat(buf, def->src->encryption) < 0) return -1; if (virDomainDeviceInfoFormat(buf, &def->info, - flags | VIR_DOMAIN_XML_INTERNAL_ALLOW_BOOT) < 0) + flags | VIR_DOMAIN_DEF_FORMAT_ALLOW_BOOT) < 0) return -1; virBufferAdjustIndent(buf, -2); @@ -17117,7 +17089,7 @@ virDomainControllerDefFormat(virBufferPtr buf, } if (def->queues || def->cmd_per_lun || def->max_sectors || - virDomainDeviceInfoIsSet(&def->info, flags) || pcihole64) { + virDomainDeviceInfoNeedsFormat(&def->info, flags) || pcihole64) { virBufferAddLit(buf, ">\n"); virBufferAdjustIndent(buf, 2); @@ -17134,7 +17106,7 @@ virDomainControllerDefFormat(virBufferPtr buf, virBufferAddLit(buf, "/>\n"); } - if (virDomainDeviceInfoIsSet(&def->info, flags) && + if (virDomainDeviceInfoNeedsFormat(&def->info, flags) && virDomainDeviceInfoFormat(buf, &def->info, flags) < 0) return -1; @@ -17347,10 +17319,10 @@ virDomainHostdevDefFormatSubsys(virBufferPtr buf, policy = virDomainStartupPolicyTypeToString(def->startupPolicy); virBufferAsprintf(buf, " startupPolicy='%s'", policy); } - if (usbsrc->autoAddress && (flags & VIR_DOMAIN_XML_MIGRATABLE)) + if (usbsrc->autoAddress && (flags & VIR_DOMAIN_DEF_FORMAT_MIGRATABLE)) virBufferAddLit(buf, " autoAddress='yes'"); - if (def->missing && !(flags & VIR_DOMAIN_XML_INACTIVE)) + if (def->missing && !(flags & VIR_DOMAIN_DEF_FORMAT_INACTIVE)) virBufferAddLit(buf, " missing='yes'"); } @@ -17384,7 +17356,7 @@ virDomainHostdevDefFormatSubsys(virBufferPtr buf, virReportError(VIR_ERR_INTERNAL_ERROR, "%s", _("PCI address Formatting failed")); - if ((flags & VIR_DOMAIN_XML_INTERNAL_PCI_ORIG_STATES) && + if ((flags & VIR_DOMAIN_DEF_FORMAT_PCI_ORIG_STATES) && (def->origstates.states.pci.unbind_from_stub || def->origstates.states.pci.remove_slot || def->origstates.states.pci.reprobe)) { @@ -17722,9 +17694,9 @@ virDomainNetDefFormat(virBufferPtr buf, */ if (def->type == VIR_DOMAIN_NET_TYPE_NETWORK && def->data.network.actual && - !(flags & (VIR_DOMAIN_XML_INACTIVE | - VIR_DOMAIN_XML_INTERNAL_ACTUAL_NET | - VIR_DOMAIN_XML_MIGRATABLE))) + !(flags & (VIR_DOMAIN_DEF_FORMAT_INACTIVE | + VIR_DOMAIN_DEF_FORMAT_ACTUAL_NET | + VIR_DOMAIN_DEF_FORMAT_MIGRATABLE))) publicActual = true; if (publicActual) { @@ -17787,7 +17759,7 @@ virDomainNetDefFormat(virBufferPtr buf, * as a subelement of so that no persistent config * data is overwritten. */ - if ((flags & VIR_DOMAIN_XML_INTERNAL_ACTUAL_NET) && + if ((flags & VIR_DOMAIN_DEF_FORMAT_ACTUAL_NET) && (virDomainActualNetDefFormat(buf, def, flags) < 0)) return -1; break; @@ -17865,7 +17837,7 @@ virDomainNetDefFormat(virBufferPtr buf, virBufferEscapeString(buf, "