--- src/conf/capabilities.c | 55 ++++--------------- src/conf/capabilities.h | 10 ++-- src/conf/domain_audit.c | 2 +- src/conf/domain_conf.c | 115 +++++++++++++++++++-------------------- src/conf/domain_conf.h | 2 +- src/hyperv/hyperv_driver.c | 4 +- src/libvirt_private.syms | 2 + src/libxl/libxl_conf.c | 10 ++-- src/libxl/libxl_domain.c | 6 +- src/libxl/libxl_driver.c | 2 +- src/lxc/lxc_driver.c | 2 +- src/lxc/lxc_native.c | 4 +- src/openvz/openvz_conf.c | 3 +- src/openvz/openvz_driver.c | 4 +- src/parallels/parallels_driver.c | 8 +-- src/parallels/parallels_sdk.c | 6 +- src/parallels/parallels_utils.h | 2 +- src/phyp/phyp_driver.c | 3 +- src/qemu/qemu_capabilities.c | 2 +- src/qemu/qemu_command.c | 10 ++-- src/qemu/qemu_driver.c | 2 +- src/uml/uml_driver.c | 2 +- src/vbox/vbox_common.c | 15 ++--- src/vmware/vmware_driver.c | 2 +- src/vmx/vmx.c | 3 +- src/xen/xen_driver.c | 2 +- src/xen/xend_internal.c | 6 +- src/xenapi/xenapi_driver.c | 12 +--- src/xenapi/xenapi_utils.c | 4 +- src/xenconfig/xen_common.c | 29 +++++----- src/xenconfig/xen_sxpr.c | 5 +- src/xenconfig/xen_xl.c | 15 ++--- src/xenconfig/xen_xm.c | 12 ++-- tests/openvzutilstest.c | 2 +- 34 files changed, 152 insertions(+), 211 deletions(-) diff --git a/src/conf/capabilities.c b/src/conf/capabilities.c index a8b098a..deae472 100644 --- a/src/conf/capabilities.c +++ b/src/conf/capabilities.c @@ -593,23 +593,16 @@ virCapabilitiesSupportsGuestArch(virCapsPtr caps, /** * virCapabilitiesSupportsGuestOSType: * @caps: capabilities to query - * @ostype: OS type to search for (eg 'hvm', 'xen') + * @ostype: guest operating system type, of enum VIR_DOMAIN_OSTYPE * * Returns non-zero if the capabilities support the * requested operating system type */ extern int virCapabilitiesSupportsGuestOSType(virCapsPtr caps, - const char *ostypestr) + int ostype) { size_t i; - int ostype; - - if ((ostype = virDomainOSTypeFromString(ostypestr)) < 0) { - virReportError(VIR_ERR_CONFIG_UNSUPPORTED, - _("unknown OS type '%s'"), ostypestr); - return 0; - } for (i = 0; i < caps->nguests; i++) { if (caps->guests[i]->ostype == ostype) @@ -622,7 +615,7 @@ virCapabilitiesSupportsGuestOSType(virCapsPtr caps, /** * virCapabilitiesSupportsGuestOSTypeArch: * @caps: capabilities to query - * @ostype: OS type to search for (eg 'hvm', 'xen') + * @ostype: guest operating system type, of enum VIR_DOMAIN_OSTYPE * @arch: Architecture to search for * * Returns non-zero if the capabilities support the @@ -630,17 +623,10 @@ virCapabilitiesSupportsGuestOSType(virCapsPtr caps, */ extern int virCapabilitiesSupportsGuestOSTypeArch(virCapsPtr caps, - const char *ostypestr, + int ostype, virArch arch) { size_t i; - int ostype; - - if ((ostype = virDomainOSTypeFromString(ostypestr)) < 0) { - virReportError(VIR_ERR_CONFIG_UNSUPPORTED, - _("unknown OS type '%s'"), ostypestr); - return 0; - } for (i = 0; i < caps->nguests; i++) { if (caps->guests[i]->ostype == ostype && @@ -654,24 +640,17 @@ virCapabilitiesSupportsGuestOSTypeArch(virCapsPtr caps, /** * virCapabilitiesDefaultGuestArch: * @caps: capabilities to query - * @ostype: OS type to search for + * @ostype: guest operating system type, of enum VIR_DOMAIN_OSTYPE * * Returns the first architecture able to run the * requested operating system type */ extern virArch virCapabilitiesDefaultGuestArch(virCapsPtr caps, - const char *ostypestr, + int ostype, const char *domain) { size_t i, j; - int ostype; - - if ((ostype = virDomainOSTypeFromString(ostypestr)) < 0) { - virReportError(VIR_ERR_CONFIG_UNSUPPORTED, - _("unknown OS type '%s'"), ostypestr); - return VIR_ARCH_NONE; - } /* First try to find one matching host arch */ for (i = 0; i < caps->nguests; i++) { @@ -700,7 +679,7 @@ virCapabilitiesDefaultGuestArch(virCapsPtr caps, /** * virCapabilitiesDefaultGuestMachine: * @caps: capabilities to query - * @ostype: OS type to search for + * @ostype: guest operating system type, of enum VIR_DOMAIN_OSTYPE * @arch: architecture to search for * @domain: domain type to search for * @@ -710,18 +689,11 @@ virCapabilitiesDefaultGuestArch(virCapsPtr caps, */ extern const char * virCapabilitiesDefaultGuestMachine(virCapsPtr caps, - const char *ostypestr, + int ostype, virArch arch, const char *domain) { size_t i; - int ostype; - - if ((ostype = virDomainOSTypeFromString(ostypestr)) < 0) { - virReportError(VIR_ERR_CONFIG_UNSUPPORTED, - _("unknown OS type '%s'"), ostypestr); - return NULL; - } for (i = 0; i < caps->nguests; i++) { virCapsGuestPtr guest = caps->guests[i]; @@ -753,7 +725,7 @@ virCapabilitiesDefaultGuestMachine(virCapsPtr caps, /** * virCapabilitiesDefaultGuestEmulator: * @caps: capabilities to query - * @ostype: OS type to search for ('xen', 'hvm') + * @ostype: guest operating system type, of enum VIR_DOMAIN_OSTYPE * @arch: architecture to search for * @domain: domain type ('xen', 'qemu', 'kvm') * @@ -763,18 +735,11 @@ virCapabilitiesDefaultGuestMachine(virCapsPtr caps, */ extern const char * virCapabilitiesDefaultGuestEmulator(virCapsPtr caps, - const char *ostypestr, + int ostype, virArch arch, const char *domain) { size_t i, j; - int ostype; - - if ((ostype = virDomainOSTypeFromString(ostypestr)) < 0) { - virReportError(VIR_ERR_CONFIG_UNSUPPORTED, - _("unknown OS type '%s'"), ostypestr); - return NULL; - } for (i = 0; i < caps->nguests; i++) { char *emulator; diff --git a/src/conf/capabilities.h b/src/conf/capabilities.h index 9312cc2..8969a97 100644 --- a/src/conf/capabilities.h +++ b/src/conf/capabilities.h @@ -267,10 +267,10 @@ virCapabilitiesSupportsGuestArch(virCapsPtr caps, virArch arch); extern int virCapabilitiesSupportsGuestOSType(virCapsPtr caps, - const char *ostype); + int ostype); extern int virCapabilitiesSupportsGuestOSTypeArch(virCapsPtr caps, - const char *ostype, + int ostype, virArch arch); void @@ -279,16 +279,16 @@ virCapabilitiesClearHostNUMACellCPUTopology(virCapsHostNUMACellCPUPtr cpu, extern virArch virCapabilitiesDefaultGuestArch(virCapsPtr caps, - const char *ostype, + int ostype, const char *domain); extern const char * virCapabilitiesDefaultGuestMachine(virCapsPtr caps, - const char *ostype, + int ostype, virArch arch, const char *domain); extern const char * virCapabilitiesDefaultGuestEmulator(virCapsPtr caps, - const char *ostype, + int ostype, virArch arch, const char *domain); diff --git a/src/conf/domain_audit.c b/src/conf/domain_audit.c index 159ebf5..3e93d97 100644 --- a/src/conf/domain_audit.c +++ b/src/conf/domain_audit.c @@ -859,7 +859,7 @@ virDomainAuditStart(virDomainObjPtr vm, const char *reason, bool success) if (i == 0 && (vm->def->consoles[i]->targetType == VIR_DOMAIN_CHR_CONSOLE_TARGET_TYPE_SERIAL || vm->def->consoles[i]->targetType == VIR_DOMAIN_CHR_CONSOLE_TARGET_TYPE_NONE) && - STREQ_NULLABLE(vm->def->os.type, "hvm")) + vm->def->os.type == VIR_DOMAIN_OSTYPE_HVM) continue; virDomainAuditChardev(vm, NULL, vm->def->consoles[i], "start", true); diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c index 8731fc1..727d060 100644 --- a/src/conf/domain_conf.c +++ b/src/conf/domain_conf.c @@ -2276,7 +2276,6 @@ void virDomainDefFree(virDomainDefPtr def) VIR_FREE(def->idmap.uidmap); VIR_FREE(def->idmap.gidmap); - VIR_FREE(def->os.type); VIR_FREE(def->os.machine); VIR_FREE(def->os.init); for (i = 0; def->os.initargv && def->os.initargv[i]; i++) @@ -3065,7 +3064,7 @@ virDomainDeviceInfoIterateInternal(virDomainDefPtr def, i == 0 && (def->consoles[i]->targetType == VIR_DOMAIN_CHR_CONSOLE_TARGET_TYPE_SERIAL || def->consoles[i]->targetType == VIR_DOMAIN_CHR_CONSOLE_TARGET_TYPE_NONE) && - STREQ_NULLABLE(def->os.type, "hvm")) + def->os.type == VIR_DOMAIN_OSTYPE_HVM) continue; device.data.chr = def->consoles[i]; if (cb(def, &device, &def->consoles[i]->info, opaque) < 0) @@ -3299,14 +3298,8 @@ virDomainDefPostParseInternal(virDomainDefPtr def, { size_t i; - if (!def->os.type) { - virReportError(VIR_ERR_INTERNAL_ERROR, "%s", - _("hypervisor type must be specified")); - return -1; - } - /* verify init path for container based domains */ - if (STREQ(def->os.type, "exe") && !def->os.init) { + if (def->os.type == VIR_DOMAIN_OSTYPE_EXE && !def->os.init) { virReportError(VIR_ERR_XML_ERROR, "%s", _("init binary must be specified")); return -1; @@ -3384,7 +3377,7 @@ virDomainDefPostParseInternal(virDomainDefPtr def, return -1; } } - if (def->nconsoles > 0 && STREQ(def->os.type, "hvm") && + if (def->nconsoles > 0 && def->os.type == VIR_DOMAIN_OSTYPE_HVM && (def->consoles[0]->targetType == VIR_DOMAIN_CHR_CONSOLE_TARGET_TYPE_SERIAL || def->consoles[0]->targetType == VIR_DOMAIN_CHR_CONSOLE_TARGET_TYPE_NONE)) { @@ -9451,7 +9444,7 @@ virDomainInputDefParseXML(const virDomainDef *dom, goto error; } - if (STREQ(dom->os.type, "hvm")) { + if (dom->os.type == VIR_DOMAIN_OSTYPE_HVM) { if (def->bus == VIR_DOMAIN_INPUT_BUS_PS2 && def->type != VIR_DOMAIN_INPUT_TYPE_MOUSE && def->type != VIR_DOMAIN_INPUT_TYPE_KBD) { @@ -9466,7 +9459,7 @@ virDomainInputDefParseXML(const virDomainDef *dom, bus); goto error; } - } else if (STREQ(dom->os.type, "xen")) { + } else if (dom->os.type == VIR_DOMAIN_OSTYPE_XEN) { if (def->bus != VIR_DOMAIN_INPUT_BUS_XEN) { virReportError(VIR_ERR_INTERNAL_ERROR, _("unsupported input bus %s"), @@ -9506,7 +9499,7 @@ virDomainInputDefParseXML(const virDomainDef *dom, } } } else { - if (STREQ(dom->os.type, "hvm")) { + if (dom->os.type == VIR_DOMAIN_OSTYPE_HVM) { if ((def->type == VIR_DOMAIN_INPUT_TYPE_MOUSE || def->type == VIR_DOMAIN_INPUT_TYPE_KBD) && (ARCH_IS_X86(dom->os.arch) || dom->os.arch == VIR_ARCH_NONE)) { @@ -9514,7 +9507,7 @@ virDomainInputDefParseXML(const virDomainDef *dom, } else { def->bus = VIR_DOMAIN_INPUT_BUS_USB; } - } else if (STREQ(dom->os.type, "xen")) { + } else if (dom->os.type == VIR_DOMAIN_OSTYPE_XEN) { def->bus = VIR_DOMAIN_INPUT_BUS_XEN; } else { if ((dom->virtType == VIR_DOMAIN_VIRT_PARALLELS)) @@ -10989,9 +10982,8 @@ virDomainVideoDefaultType(const virDomainDef *def) case VIR_DOMAIN_VIRT_KQEMU: case VIR_DOMAIN_VIRT_KVM: case VIR_DOMAIN_VIRT_XEN: - if (def->os.type && - (STREQ(def->os.type, "xen") || - STREQ(def->os.type, "linux"))) + if (def->os.type == VIR_DOMAIN_OSTYPE_XEN || + def->os.type == VIR_DOMAIN_OSTYPE_LINUX) return VIR_DOMAIN_VIDEO_TYPE_XEN; else if ARCH_IS_PPC64(def->os.arch) return VIR_DOMAIN_VIDEO_TYPE_VGA; @@ -11005,15 +10997,10 @@ virDomainVideoDefaultType(const virDomainDef *def) return VIR_DOMAIN_VIDEO_TYPE_VMVGA; case VIR_DOMAIN_VIRT_PARALLELS: - if (def->os.type) { - if (STREQ(def->os.type, "hvm")) - return VIR_DOMAIN_VIDEO_TYPE_VGA; - else - return VIR_DOMAIN_VIDEO_TYPE_PARALLELS; - } else { + if (def->os.type == VIR_DOMAIN_OSTYPE_HVM) return VIR_DOMAIN_VIDEO_TYPE_VGA; - } - + else + return VIR_DOMAIN_VIDEO_TYPE_PARALLELS; default: return -1; } @@ -12992,7 +12979,8 @@ virDomainDefGetDefaultEmulator(virDomainDefPtr def, virReportError(VIR_ERR_INTERNAL_ERROR, _("no emulator for domain %s os type %s " "on architecture %s"), - type, def->os.type, virArchToString(def->os.arch)); + type, virDomainOSTypeToString(def->os.type), + virArchToString(def->os.arch)); return NULL; } @@ -14640,27 +14628,32 @@ virDomainDefParseXML(xmlDocPtr xml, def->os.bootloader = virXPathString("string(./bootloader)", ctxt); def->os.bootloaderArgs = virXPathString("string(./bootloader_args)", ctxt); - def->os.type = virXPathString("string(./os/type[1])", ctxt); - if (!def->os.type) { + tmp = virXPathString("string(./os/type[1])", ctxt); + if (!tmp) { if (def->os.bootloader) { - if (VIR_STRDUP(def->os.type, "xen") < 0) - goto error; + def->os.type = VIR_DOMAIN_OSTYPE_XEN; } else { virReportError(VIR_ERR_XML_ERROR, "%s", _("an os <type> must be specified")); goto error; } + } else { + if ((def->os.type = virDomainOSTypeFromString(tmp)) < 0) { + virReportError(VIR_ERR_CONFIG_UNSUPPORTED, + _("unknown OS type '%s'"), tmp); + goto error; + } + VIR_FREE(tmp); } + /* * HACK: For xen driver we previously used bogus 'linux' as the * os type for paravirt, whereas capabilities declare it to * be 'xen'. So we accept the former and convert */ - if (STREQ(def->os.type, "linux") && + if (def->os.type == VIR_DOMAIN_OSTYPE_LINUX && def->virtType == VIR_DOMAIN_VIRT_XEN) { - VIR_FREE(def->os.type); - if (VIR_STRDUP(def->os.type, "xen") < 0) - goto error; + def->os.type = VIR_DOMAIN_OSTYPE_XEN; } tmp = virXPathString("string(./os/type[1]/@arch)", ctxt); @@ -14678,7 +14671,7 @@ virDomainDefParseXML(xmlDocPtr xml, if (!virCapabilitiesSupportsGuestOSType(caps, def->os.type)) { virReportError(VIR_ERR_CONFIG_UNSUPPORTED, _("no support found for os <type> '%s'"), - def->os.type); + virDomainOSTypeToString(def->os.type)); goto error; } @@ -14695,7 +14688,8 @@ virDomainDefParseXML(xmlDocPtr xml, def->os.arch)) { virReportError(VIR_ERR_INTERNAL_ERROR, _("No os type '%s' available for arch '%s'"), - def->os.type, virArchToString(def->os.arch)); + virDomainOSTypeToString(def->os.type), + virArchToString(def->os.arch)); goto error; } } else { @@ -14706,7 +14700,7 @@ virDomainDefParseXML(xmlDocPtr xml, if (!def->os.arch) { virReportError(VIR_ERR_INTERNAL_ERROR, _("no supported architecture for os type '%s'"), - def->os.type); + virDomainOSTypeToString(def->os.type)); goto error; } } @@ -14731,7 +14725,7 @@ virDomainDefParseXML(xmlDocPtr xml, * - An init script (exe) */ - if (STREQ(def->os.type, "exe")) { + if (def->os.type == VIR_DOMAIN_OSTYPE_EXE) { def->os.init = virXPathString("string(./os/init[1])", ctxt); def->os.cmdline = virXPathString("string(./os/cmdline[1])", ctxt); @@ -14755,9 +14749,9 @@ virDomainDefParseXML(xmlDocPtr xml, VIR_FREE(nodes); } - if (STREQ(def->os.type, "xen") || - STREQ(def->os.type, "hvm") || - STREQ(def->os.type, "uml")) { + if (def->os.type == VIR_DOMAIN_OSTYPE_XEN || + def->os.type == VIR_DOMAIN_OSTYPE_HVM || + def->os.type == VIR_DOMAIN_OSTYPE_UML) { xmlNodePtr loader_node; def->os.kernel = virXPathString("string(./os/kernel[1])", ctxt); @@ -14777,7 +14771,7 @@ virDomainDefParseXML(xmlDocPtr xml, } } - if (STREQ(def->os.type, "hvm")) { + if (def->os.type == VIR_DOMAIN_OSTYPE_HVM) { if (virDomainDefParseBootXML(ctxt, def) < 0) goto error; if (!(bootHash = virHashCreate(5, NULL))) @@ -15055,15 +15049,15 @@ virDomainDefParseXML(xmlDocPtr xml, /* With QEMU / KVM / Xen graphics, mouse + PS/2 is implicit * with graphics, so don't store it. * XXX will this be true for other virt types ? */ - if ((STREQ(def->os.type, "hvm") && + if ((def->os.type == VIR_DOMAIN_OSTYPE_HVM && input->bus == VIR_DOMAIN_INPUT_BUS_PS2 && (input->type == VIR_DOMAIN_INPUT_TYPE_MOUSE || input->type == VIR_DOMAIN_INPUT_TYPE_KBD)) || - (STREQ(def->os.type, "xen") && + (def->os.type == VIR_DOMAIN_OSTYPE_XEN && input->bus == VIR_DOMAIN_INPUT_BUS_XEN && (input->type == VIR_DOMAIN_INPUT_TYPE_MOUSE || input->type == VIR_DOMAIN_INPUT_TYPE_KBD)) || - (STREQ(def->os.type, "exe") && + (def->os.type == VIR_DOMAIN_OSTYPE_EXE && def->virtType == VIR_DOMAIN_VIRT_PARALLELS && input->bus == VIR_DOMAIN_INPUT_BUS_PARALLELS && (input->type == VIR_DOMAIN_INPUT_TYPE_MOUSE || @@ -15097,9 +15091,9 @@ virDomainDefParseXML(xmlDocPtr xml, (ARCH_IS_X86(def->os.arch) || def->os.arch == VIR_ARCH_NONE)) { int input_bus = VIR_DOMAIN_INPUT_BUS_XEN; - if (STREQ(def->os.type, "hvm")) + if (def->os.type == VIR_DOMAIN_OSTYPE_HVM) input_bus = VIR_DOMAIN_INPUT_BUS_PS2; - if (STREQ(def->os.type, "exe") && + if (def->os.type == VIR_DOMAIN_OSTYPE_EXE && def->virtType == VIR_DOMAIN_VIRT_PARALLELS) input_bus = VIR_DOMAIN_INPUT_BUS_PARALLELS; @@ -16795,10 +16789,11 @@ virDomainDefCheckABIStability(virDomainDefPtr src, goto error; } - if (STRNEQ(src->os.type, dst->os.type)) { + if (src->os.type != dst->os.type) { virReportError(VIR_ERR_CONFIG_UNSUPPORTED, _("Target domain OS type %s does not match source %s"), - dst->os.type, src->os.type); + virDomainOSTypeToString(dst->os.type), + virDomainOSTypeToString(src->os.type)); goto error; } if (src->os.arch != dst->os.arch) { @@ -16810,8 +16805,8 @@ virDomainDefCheckABIStability(virDomainDefPtr src, } if (STRNEQ_NULLABLE(src->os.machine, dst->os.machine)) { virReportError(VIR_ERR_CONFIG_UNSUPPORTED, - _("Target domain OS type %s does not match source %s"), - dst->os.machine, src->os.machine); + _("Target domain machine type %s does not match source %s"), + dst->os.machine, src->os.machine); goto error; } @@ -20819,10 +20814,12 @@ virDomainDefFormatInternal(virDomainDefPtr def, * be 'xen'. So we convert to the former for backcompat */ if (def->virtType == VIR_DOMAIN_VIRT_XEN && - STREQ(def->os.type, "xen")) - virBufferAsprintf(buf, ">%s</type>\n", "linux"); + def->os.type == VIR_DOMAIN_OSTYPE_XEN) + virBufferAsprintf(buf, ">%s</type>\n", + virDomainOSTypeToString(VIR_DOMAIN_OSTYPE_LINUX)); else - virBufferAsprintf(buf, ">%s</type>\n", def->os.type); + virBufferAsprintf(buf, ">%s</type>\n", + virDomainOSTypeToString(def->os.type)); virBufferEscapeString(buf, "<init>%s</init>\n", def->os.init); @@ -21194,7 +21191,7 @@ virDomainDefFormatInternal(virDomainDefPtr def, /* Back compat, ignore the console element for hvm guests * if it is type == serial */ - if (STREQ(def->os.type, "hvm") && + if (def->os.type == VIR_DOMAIN_OSTYPE_HVM && (def->consoles[n]->targetType == VIR_DOMAIN_CHR_CONSOLE_TARGET_TYPE_SERIAL || def->consoles[n]->targetType == VIR_DOMAIN_CHR_CONSOLE_TARGET_TYPE_NONE) && (n < def->nserials)) { @@ -21207,7 +21204,7 @@ virDomainDefFormatInternal(virDomainDefPtr def, if (virDomainChrDefFormat(buf, &console, flags) < 0) goto error; } - if (STREQ(def->os.type, "hvm") && + if (def->os.type == VIR_DOMAIN_OSTYPE_HVM && def->nconsoles == 0 && def->nserials > 0) { virDomainChrDef console; @@ -21240,9 +21237,9 @@ virDomainDefFormatInternal(virDomainDefPtr def, .info = { .alias = NULL }, }; - if (STREQ(def->os.type, "hvm")) + if (def->os.type == VIR_DOMAIN_OSTYPE_HVM) autoInput.bus = VIR_DOMAIN_INPUT_BUS_PS2; - else if (STREQ(def->os.type, "exe") && + else if (def->os.type == VIR_DOMAIN_OSTYPE_EXE && def->virtType == VIR_DOMAIN_VIRT_PARALLELS) autoInput.bus = VIR_DOMAIN_INPUT_BUS_PARALLELS; else @@ -21479,7 +21476,7 @@ virDomainDefCompatibleDevice(virDomainDefPtr def, return 0; if (!virDomainDefHasUSB(def) && - STRNEQ(def->os.type, "exe") && + def->os.type != VIR_DOMAIN_OSTYPE_EXE && virDomainDeviceIsUSB(dev)) { virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s", _("Device configuration is not compatible: " diff --git a/src/conf/domain_conf.h b/src/conf/domain_conf.h index 6dc9918..3c99019 100644 --- a/src/conf/domain_conf.h +++ b/src/conf/domain_conf.h @@ -1783,7 +1783,7 @@ void virDomainLoaderDefFree(virDomainLoaderDefPtr loader); typedef struct _virDomainOSDef virDomainOSDef; typedef virDomainOSDef *virDomainOSDefPtr; struct _virDomainOSDef { - char *type; + int type; virArch arch; char *machine; size_t nBootDevs; diff --git a/src/hyperv/hyperv_driver.c b/src/hyperv/hyperv_driver.c index 00169c7..b539541 100644 --- a/src/hyperv/hyperv_driver.c +++ b/src/hyperv/hyperv_driver.c @@ -875,9 +875,7 @@ hypervDomainGetXMLDesc(virDomainPtr domain, unsigned int flags) def->vcpus = processorSettingData->data->VirtualQuantity; def->maxvcpus = processorSettingData->data->VirtualQuantity; - - if (VIR_STRDUP(def->os.type, "hvm") < 0) - goto cleanup; + def->os.type = VIR_DOMAIN_OSTYPE_HVM; /* FIXME: devices section is totally missing */ diff --git a/src/libvirt_private.syms b/src/libvirt_private.syms index 8c37303..a587597 100644 --- a/src/libvirt_private.syms +++ b/src/libvirt_private.syms @@ -400,6 +400,8 @@ virDomainObjSetDefTransient; virDomainObjSetMetadata; virDomainObjSetState; virDomainObjTaint; +virDomainOSTypeFromString; +virDomainOSTypeToString; virDomainParseMemory; virDomainPausedReasonTypeFromString; virDomainPausedReasonTypeToString; diff --git a/src/libxl/libxl_conf.c b/src/libxl/libxl_conf.c index 0609fdd..322dd56 100644 --- a/src/libxl/libxl_conf.c +++ b/src/libxl/libxl_conf.c @@ -499,7 +499,7 @@ libxlMakeDomCreateInfo(libxl_ctx *ctx, libxl_domain_create_info_init(c_info); - if (STREQ(def->os.type, "hvm")) + if (def->os.type == VIR_DOMAIN_OSTYPE_HVM) c_info->type = LIBXL_DOMAIN_TYPE_HVM; else c_info->type = LIBXL_DOMAIN_TYPE_PV; @@ -625,7 +625,7 @@ libxlMakeDomBuildInfo(virDomainDefPtr def, libxl_domain_config *d_config) { libxl_domain_build_info *b_info = &d_config->b_info; - int hvm = STREQ(def->os.type, "hvm"); + int hvm = def->os.type == VIR_DOMAIN_OSTYPE_HVM; size_t i; libxl_domain_build_info_init(b_info); @@ -875,7 +875,7 @@ libxlDomainGetEmulatorType(const virDomainDef *def) virCommandPtr cmd = NULL; char *output = NULL; - if (STREQ(def->os.type, "hvm")) { + if (def->os.type == VIR_DOMAIN_OSTYPE_HVM) { if (def->emulator) { cmd = virCommandNew(def->emulator); @@ -1070,7 +1070,7 @@ libxlMakeNic(virDomainDefPtr def, virDomainNetDefPtr l_nic, libxl_device_nic *x_nic) { - bool ioemu_nic = STREQ(def->os.type, "hvm"); + bool ioemu_nic = def->os.type == VIR_DOMAIN_OSTYPE_HVM; virDomainNetType actual_type = virDomainNetGetActualType(l_nic); /* TODO: Where is mtu stored? @@ -1309,7 +1309,7 @@ libxlMakeVfbList(virPortAllocatorPtr graphicsports, * VNC or SDL info must also be set in libxl_domain_build_info * for HVM domains. Use the first vfb device. */ - if (STREQ(def->os.type, "hvm")) { + if (def->os.type == VIR_DOMAIN_OSTYPE_HVM) { libxl_domain_build_info *b_info = &d_config->b_info; libxl_device_vfb vfb = d_config->vfbs[0]; diff --git a/src/libxl/libxl_domain.c b/src/libxl/libxl_domain.c index 77d46d0..f33df42 100644 --- a/src/libxl/libxl_domain.c +++ b/src/libxl/libxl_domain.c @@ -235,7 +235,7 @@ libxlDomainDeviceDefPostParse(virDomainDeviceDefPtr dev, if (dev->type == VIR_DOMAIN_DEVICE_CHR && dev->data.chr->deviceType == VIR_DOMAIN_CHR_DEVICE_TYPE_CONSOLE && dev->data.chr->targetType == VIR_DOMAIN_CHR_CONSOLE_TARGET_TYPE_NONE && - STRNEQ(def->os.type, "hvm")) + def->os.type != VIR_DOMAIN_OSTYPE_HVM) dev->data.chr->targetType = VIR_DOMAIN_CHR_CONSOLE_TARGET_TYPE_XEN; if (dev->type == VIR_DOMAIN_DEVICE_NET && @@ -278,7 +278,7 @@ libxlDomainDeviceDefPostParse(virDomainDeviceDefPtr dev, pcisrc->backend = VIR_DOMAIN_HOSTDEV_PCI_BACKEND_XEN; } - if (dev->type == VIR_DOMAIN_DEVICE_VIDEO && STREQ(def->os.type, "hvm")) { + if (dev->type == VIR_DOMAIN_DEVICE_VIDEO && def->os.type == VIR_DOMAIN_OSTYPE_HVM) { int dm_type = libxlDomainGetEmulatorType(def); switch (dev->data.video->type) { @@ -315,7 +315,7 @@ libxlDomainDefPostParse(virDomainDefPtr def, { /* Xen PV domains always have a PV console, so add one to the domain config * via post-parse callback if not explicitly specified in the XML. */ - if (STRNEQ(def->os.type, "hvm") && def->nconsoles == 0) { + if (def->os.type != VIR_DOMAIN_OSTYPE_HVM && def->nconsoles == 0) { virDomainChrDefPtr chrdef; if (!(chrdef = virDomainChrDefNew())) diff --git a/src/libxl/libxl_driver.c b/src/libxl/libxl_driver.c index 9eb071e..1271149 100644 --- a/src/libxl/libxl_driver.c +++ b/src/libxl/libxl_driver.c @@ -1295,7 +1295,7 @@ libxlDomainGetOSType(virDomainPtr dom) if (virDomainGetOSTypeEnsureACL(dom->conn, vm->def) < 0) goto cleanup; - if (VIR_STRDUP(type, vm->def->os.type) < 0) + if (VIR_STRDUP(type, virDomainOSTypeToString(vm->def->os.type)) < 0) goto cleanup; cleanup: diff --git a/src/lxc/lxc_driver.c b/src/lxc/lxc_driver.c index 8dfa686..b491f34 100644 --- a/src/lxc/lxc_driver.c +++ b/src/lxc/lxc_driver.c @@ -665,7 +665,7 @@ static char *lxcDomainGetOSType(virDomainPtr dom) if (virDomainGetOSTypeEnsureACL(dom->conn, vm->def) < 0) goto cleanup; - if (VIR_STRDUP(ret, vm->def->os.type) < 0) + if (VIR_STRDUP(ret, virDomainOSTypeToString(vm->def->os.type)) < 0) goto cleanup; cleanup: diff --git a/src/lxc/lxc_native.c b/src/lxc/lxc_native.c index c15eb19..25d5383 100644 --- a/src/lxc/lxc_native.c +++ b/src/lxc/lxc_native.c @@ -1025,9 +1025,7 @@ lxcParseConfigString(const char *config) vmdef->vcpus = 1; vmdef->nfss = 0; - - if (VIR_STRDUP(vmdef->os.type, "exe") < 0) - goto error; + vmdef->os.type = VIR_DOMAIN_OSTYPE_EXE; if ((value = virConfGetValue(properties, "lxc.arch")) && value->str) { virArch arch = virArchFromString(value->str); diff --git a/src/openvz/openvz_conf.c b/src/openvz/openvz_conf.c index 80df15a..a2d2da7 100644 --- a/src/openvz/openvz_conf.c +++ b/src/openvz/openvz_conf.c @@ -564,8 +564,7 @@ int openvzLoadDomains(struct openvz_driver *driver) goto cleanup; } - if (VIR_STRDUP(def->os.type, "exe") < 0) - goto cleanup; + def->os.type = VIR_DOMAIN_OSTYPE_EXE; if (VIR_STRDUP(def->os.init, "/sbin/init") < 0) goto cleanup; diff --git a/src/openvz/openvz_driver.c b/src/openvz/openvz_driver.c index f9f924f..f07337a 100644 --- a/src/openvz/openvz_driver.c +++ b/src/openvz/openvz_driver.c @@ -92,7 +92,7 @@ openvzDomainDefPostParse(virDomainDefPtr def, void *opaque ATTRIBUTE_UNUSED) { /* fill the init path */ - if (STREQ(def->os.type, "exe") && !def->os.init) { + if (def->os.type == VIR_DOMAIN_OSTYPE_EXE && !def->os.init) { if (VIR_STRDUP(def->os.init, "/sbin/init") < 0) return -1; } @@ -371,7 +371,7 @@ static char *openvzDomainGetOSType(virDomainPtr dom) goto cleanup; } - ignore_value(VIR_STRDUP(ret, vm->def->os.type)); + ignore_value(VIR_STRDUP(ret, virDomainOSTypeToString(vm->def->os.type))); cleanup: if (vm) diff --git a/src/parallels/parallels_driver.c b/src/parallels/parallels_driver.c index d80fe24..f7a75e0 100644 --- a/src/parallels/parallels_driver.c +++ b/src/parallels/parallels_driver.c @@ -184,7 +184,7 @@ parallelsDomainDeviceDefPostParse(virDomainDeviceDefPtr dev, (dev->data.net->type == VIR_DOMAIN_NET_TYPE_NETWORK || dev->data.net->type == VIR_DOMAIN_NET_TYPE_BRIDGE) && !dev->data.net->model && - STREQ(def->os.type, "hvm") && + def->os.type == VIR_DOMAIN_OSTYPE_HVM && VIR_STRDUP(dev->data.net->model, "e1000") < 0) goto cleanup; @@ -575,7 +575,7 @@ parallelsDomainGetOSType(virDomainPtr domain) goto cleanup; } - ignore_value(VIR_STRDUP(ret, privdom->def->os.type)); + ignore_value(VIR_STRDUP(ret, virDomainOSTypeToString(privdom->def->os.type))); cleanup: if (privdom) @@ -712,10 +712,10 @@ parallelsDomainDefineXMLFlags(virConnectPtr conn, const char *xml, unsigned int olddom = virDomainObjListFindByUUID(privconn->domains, def->uuid); if (olddom == NULL) { virResetLastError(); - if (STREQ(def->os.type, "hvm")) { + if (def->os.type == VIR_DOMAIN_OSTYPE_HVM) { if (prlsdkCreateVm(conn, def)) goto cleanup; - } else if (STREQ(def->os.type, "exe")) { + } else if (def->os.type == VIR_DOMAIN_OSTYPE_EXE) { if (prlsdkCreateCt(conn, def)) goto cleanup; } else { diff --git a/src/parallels/parallels_sdk.c b/src/parallels/parallels_sdk.c index dcc0bec..2915d80 100644 --- a/src/parallels/parallels_sdk.c +++ b/src/parallels/parallels_sdk.c @@ -1164,12 +1164,10 @@ prlsdkConvertDomainType(PRL_HANDLE sdkdom, virDomainDefPtr def) switch (domainType) { case PVT_VM: - if (VIR_STRDUP(def->os.type, "hvm") < 0) - return -1; + def->os.type = VIR_DOMAIN_OSTYPE_HVM; break; case PVT_CT: - if (VIR_STRDUP(def->os.type, "exe") < 0) - return -1; + def->os.type = VIR_DOMAIN_OSTYPE_EXE; if (VIR_STRDUP(def->os.init, "/sbin/init") < 0) return -1; break; diff --git a/src/parallels/parallels_utils.h b/src/parallels/parallels_utils.h index 0f29374..5731381 100644 --- a/src/parallels/parallels_utils.h +++ b/src/parallels/parallels_utils.h @@ -37,7 +37,7 @@ virReportErrorHelper(VIR_FROM_TEST, VIR_ERR_OPERATION_FAILED, __FILE__, \ __FUNCTION__, __LINE__, _("Can't parse prlctl output")) -# define IS_CT(def) (STREQ_NULLABLE(def->os.type, "exe")) +# define IS_CT(def) (def->os.type == VIR_DOMAIN_OSTYPE_HVM) # define parallelsDomNotFoundError(domain) \ do { \ diff --git a/src/phyp/phyp_driver.c b/src/phyp/phyp_driver.c index a6b96de..6e177b0 100644 --- a/src/phyp/phyp_driver.c +++ b/src/phyp/phyp_driver.c @@ -1720,8 +1720,7 @@ phypDomainAttachDevice(virDomainPtr domain, const char *xml) if (domain_name == NULL) goto cleanup; - if (VIR_STRDUP(def->os.type, "aix") < 0) - goto cleanup; + def->os.type = VIR_DOMAIN_OSTYPE_AIX; dev = virDomainDeviceDefParse(xml, def, phyp_driver->caps, NULL, VIR_DOMAIN_DEF_PARSE_INACTIVE); diff --git a/src/qemu/qemu_capabilities.c b/src/qemu/qemu_capabilities.c index 9606459..afeeddf 100644 --- a/src/qemu/qemu_capabilities.c +++ b/src/qemu/qemu_capabilities.c @@ -1897,7 +1897,7 @@ int virQEMUCapsGetDefaultVersion(virCapsPtr caps, hostarch = virArchFromHost(); if ((binary = virCapabilitiesDefaultGuestEmulator(caps, - "hvm", + VIR_DOMAIN_OSTYPE_HVM, hostarch, "qemu")) == NULL) { virReportError(VIR_ERR_INTERNAL_ERROR, diff --git a/src/qemu/qemu_command.c b/src/qemu/qemu_command.c index e7e0937..886bba4 100644 --- a/src/qemu/qemu_command.c +++ b/src/qemu/qemu_command.c @@ -8834,8 +8834,8 @@ qemuBuildCommandLine(virConnectPtr conn, if (virQEMUCapsGet(qemuCaps, QEMU_CAPS_UUID)) virCommandAddArgList(cmd, "-uuid", uuid, NULL); if (def->virtType == VIR_DOMAIN_VIRT_XEN || - STREQ(def->os.type, "xen") || - STREQ(def->os.type, "linux")) { + def->os.type == VIR_DOMAIN_OSTYPE_XEN || + def->os.type == VIR_DOMAIN_OSTYPE_LINUX) { if (virQEMUCapsGet(qemuCaps, QEMU_CAPS_XEN_DOMID)) { virCommandAddArg(cmd, "-xen-attach"); virCommandAddArg(cmd, "-xen-domid"); @@ -12315,11 +12315,9 @@ qemuParseCommandLine(virCapsPtr qemuCaps, if (strstr(path, "xenner")) { def->virtType = VIR_DOMAIN_VIRT_KVM; - if (VIR_STRDUP(def->os.type, "xen") < 0) - goto error; + def->os.type = VIR_DOMAIN_OSTYPE_XEN; } else { - if (VIR_STRDUP(def->os.type, "hvm") < 0) - goto error; + def->os.type = VIR_DOMAIN_OSTYPE_HVM; if (strstr(path, "kvm")) { def->virtType = VIR_DOMAIN_VIRT_KVM; def->features[VIR_DOMAIN_FEATURE_PAE] = VIR_TRISTATE_SWITCH_ON; diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c index b3816ee..0f16678 100644 --- a/src/qemu/qemu_driver.c +++ b/src/qemu/qemu_driver.c @@ -2241,7 +2241,7 @@ static char *qemuDomainGetOSType(virDomainPtr dom) { if (virDomainGetOSTypeEnsureACL(dom->conn, vm->def) < 0) goto cleanup; - ignore_value(VIR_STRDUP(type, vm->def->os.type)); + ignore_value(VIR_STRDUP(type, virDomainOSTypeToString(vm->def->os.type))); cleanup: qemuDomObjEndAPI(&vm); diff --git a/src/uml/uml_driver.c b/src/uml/uml_driver.c index 6b4f655..6744702 100644 --- a/src/uml/uml_driver.c +++ b/src/uml/uml_driver.c @@ -1773,7 +1773,7 @@ static char *umlDomainGetOSType(virDomainPtr dom) { if (virDomainGetOSTypeEnsureACL(dom->conn, vm->def) < 0) goto cleanup; - if (VIR_STRDUP(type, vm->def->os.type) < 0) + if (VIR_STRDUP(type, virDomainOSTypeToString(vm->def->os.type)) < 0) goto cleanup; cleanup: diff --git a/src/vbox/vbox_common.c b/src/vbox/vbox_common.c index 710c50f..b419ddc 100644 --- a/src/vbox/vbox_common.c +++ b/src/vbox/vbox_common.c @@ -930,7 +930,7 @@ vboxSetBootDeviceOrder(virDomainDefPtr def, vboxGlobalData *data, PRUint32 maxBootPosition = 0; size_t i = 0; - VIR_DEBUG("def->os.type %s", def->os.type); + VIR_DEBUG("def->os.type %s", virDomainOSTypeToString(def->os.type)); VIR_DEBUG("def->os.arch %s", virArchToString(def->os.arch)); VIR_DEBUG("def->os.machine %s", def->os.machine); VIR_DEBUG("def->os.nBootDevs %zu", def->os.nBootDevs); @@ -3906,9 +3906,7 @@ static char *vboxDomainGetXMLDesc(virDomainPtr dom, unsigned int flags) /* Skip cpumasklen, cpumask, onReboot, onPoweroff, onCrash */ - if (VIR_STRDUP(def->os.type, "hvm") < 0) - goto cleanup; - + def->os.type = VIR_DOMAIN_OSTYPE_HVM; def->os.arch = virArchFromHost(); def->os.nBootDevs = 0; @@ -4122,8 +4120,7 @@ static int vboxDomainAttachDeviceImpl(virDomainPtr dom, if (!(def = virDomainDefNew())) return ret; - if (VIR_STRDUP(def->os.type, "hvm") < 0) - goto cleanup; + def->os.type = VIR_DOMAIN_OSTYPE_HVM; dev = virDomainDeviceDefParse(xml, def, data->caps, data->xmlopt, VIR_DOMAIN_DEF_PARSE_INACTIVE); @@ -4254,8 +4251,7 @@ static int vboxDomainDetachDevice(virDomainPtr dom, const char *xml) if (!(def = virDomainDefNew())) return ret; - if (VIR_STRDUP(def->os.type, "hvm") < 0) - goto cleanup; + def->os.type = VIR_DOMAIN_OSTYPE_HVM; dev = virDomainDeviceDefParse(xml, def, data->caps, data->xmlopt, VIR_DOMAIN_DEF_PARSE_INACTIVE); @@ -6061,8 +6057,7 @@ static char *vboxDomainSnapshotGetXMLDesc(virDomainSnapshotPtr snapshot, * reading and while dumping xml */ virDomainDefSetMemoryInitial(def->dom, memorySize * 1024); - if (VIR_STRDUP(def->dom->os.type, "hvm") < 0) - goto cleanup; + def->dom->os.type = VIR_DOMAIN_OSTYPE_HVM; def->dom->os.arch = virArchFromHost(); gVBoxAPI.UIMachine.GetCPUCount(machine, &CPUCount); def->dom->maxvcpus = def->dom->vcpus = CPUCount; diff --git a/src/vmware/vmware_driver.c b/src/vmware/vmware_driver.c index 3382994..6967dbc 100644 --- a/src/vmware/vmware_driver.c +++ b/src/vmware/vmware_driver.c @@ -870,7 +870,7 @@ vmwareDomainGetOSType(virDomainPtr dom) goto cleanup; } - ignore_value(VIR_STRDUP(ret, vm->def->os.type)); + ignore_value(VIR_STRDUP(ret, virDomainOSTypeToString(vm->def->os.type))); cleanup: if (vm) diff --git a/src/vmx/vmx.c b/src/vmx/vmx.c index 8b81436..cacc951 100644 --- a/src/vmx/vmx.c +++ b/src/vmx/vmx.c @@ -1522,8 +1522,7 @@ virVMXParseConfig(virVMXContext *ctx, def->onCrash = VIR_DOMAIN_LIFECYCLE_DESTROY; /* def:os */ - if (VIR_STRDUP(def->os.type, "hvm") < 0) - goto cleanup; + def->os.type = VIR_DOMAIN_OSTYPE_HVM; /* vmx:guestOS -> def:os.arch */ if (virVMXGetConfigString(conf, "guestOS", &guestOS, true) < 0) diff --git a/src/xen/xen_driver.c b/src/xen/xen_driver.c index 3b11e9a..6cd3b76 100644 --- a/src/xen/xen_driver.c +++ b/src/xen/xen_driver.c @@ -338,7 +338,7 @@ xenDomainDeviceDefPostParse(virDomainDeviceDefPtr dev, if (dev->type == VIR_DOMAIN_DEVICE_CHR && dev->data.chr->deviceType == VIR_DOMAIN_CHR_DEVICE_TYPE_CONSOLE && dev->data.chr->targetType == VIR_DOMAIN_CHR_CONSOLE_TARGET_TYPE_NONE && - STRNEQ(def->os.type, "hvm")) + def->os.type != VIR_DOMAIN_OSTYPE_HVM) dev->data.chr->targetType = VIR_DOMAIN_CHR_CONSOLE_TARGET_TYPE_XEN; /* forbid capabilities mode hostdev in this kind of hypervisor */ diff --git a/src/xen/xend_internal.c b/src/xen/xend_internal.c index 3813900..99dfdcb 100644 --- a/src/xen/xend_internal.c +++ b/src/xen/xend_internal.c @@ -2261,7 +2261,7 @@ xenDaemonAttachDeviceFlags(virConnectPtr conn, case VIR_DOMAIN_DEVICE_DISK: if (xenFormatSxprDisk(dev->data.disk, &buf, - STREQ(def->os.type, "hvm") ? 1 : 0, + def->os.type == VIR_DOMAIN_OSTYPE_HVM ? 1 : 0, priv->xendConfigVersion, 1) < 0) goto cleanup; @@ -2274,7 +2274,7 @@ xenDaemonAttachDeviceFlags(virConnectPtr conn, if (xenFormatSxprNet(conn, dev->data.net, &buf, - STREQ(def->os.type, "hvm") ? 1 : 0, + def->os.type == VIR_DOMAIN_OSTYPE_HVM ? 1 : 0, priv->xendConfigVersion, 1) < 0) goto cleanup; @@ -2409,7 +2409,7 @@ xenDaemonUpdateDeviceFlags(virConnectPtr conn, case VIR_DOMAIN_DEVICE_DISK: if (xenFormatSxprDisk(dev->data.disk, &buf, - STREQ(def->os.type, "hvm") ? 1 : 0, + def->os.type == VIR_DOMAIN_OSTYPE_HVM ? 1 : 0, priv->xendConfigVersion, 1) < 0) goto cleanup; break; diff --git a/src/xenapi/xenapi_driver.c b/src/xenapi/xenapi_driver.c index 2ec0b65..6b2e5ee 100644 --- a/src/xenapi/xenapi_driver.c +++ b/src/xenapi/xenapi_driver.c @@ -52,7 +52,7 @@ xenapiDomainDeviceDefPostParse(virDomainDeviceDefPtr dev, if (dev->type == VIR_DOMAIN_DEVICE_CHR && dev->data.chr->deviceType == VIR_DOMAIN_CHR_DEVICE_TYPE_CONSOLE && dev->data.chr->targetType == VIR_DOMAIN_CHR_CONSOLE_TARGET_TYPE_NONE && - STRNEQ(def->os.type, "hvm")) + def->os.type != VIR_DOMAIN_OSTYPE_HVM) dev->data.chr->targetType = VIR_DOMAIN_CHR_CONSOLE_TARGET_TYPE_XEN; /* forbid capabilities mode hostdev in this kind of hypervisor */ @@ -1427,10 +1427,7 @@ xenapiDomainGetXMLDesc(virDomainPtr dom, unsigned int flags) goto error; xen_vm_get_hvm_boot_policy(session, &boot_policy, vm); if (STREQ(boot_policy, "BIOS order")) { - if (VIR_STRDUP(defPtr->os.type, "hvm") < 0) { - VIR_FREE(boot_policy); - goto error; - } + defPtr->os.type = VIR_DOMAIN_OSTYPE_HVM; xen_vm_get_hvm_boot_params(session, &result, vm); if (result != NULL) { size_t i; @@ -1450,10 +1447,7 @@ xenapiDomainGetXMLDesc(virDomainPtr dom, unsigned int flags) VIR_FREE(boot_policy); } else { char *value = NULL; - if (VIR_STRDUP(defPtr->os.type, "xen") < 0) { - VIR_FREE(boot_policy); - goto error; - } + defPtr->os.type = VIR_DOMAIN_OSTYPE_XEN; if (VIR_ALLOC(defPtr->os.loader) < 0 || VIR_STRDUP(defPtr->os.loader->path, "pygrub") < 0) { VIR_FREE(boot_policy); diff --git a/src/xenapi/xenapi_utils.c b/src/xenapi/xenapi_utils.c index ce95260..a80e084 100644 --- a/src/xenapi/xenapi_utils.c +++ b/src/xenapi/xenapi_utils.c @@ -464,7 +464,7 @@ createVMRecordFromXml(virConnectPtr conn, virDomainDefPtr def, virUUIDFormat(def->uuid, uuidStr); if (VIR_STRDUP((*record)->uuid, uuidStr) < 0) goto error; - if (STREQ(def->os.type, "hvm")) { + if (def->os.type == VIR_DOMAIN_OSTYPE_HVM) { char *boot_order = NULL; if (VIR_STRDUP((*record)->hvm_boot_policy, "BIOS order") < 0) goto error; @@ -476,7 +476,7 @@ createVMRecordFromXml(virConnectPtr conn, virDomainDefPtr def, (*record)->hvm_boot_params = hvm_boot_params; VIR_FREE(boot_order); } - } else if (STREQ(def->os.type, "xen")) { + } else if (def->os.type == VIR_DOMAIN_OSTYPE_XEN) { if (VIR_STRDUP((*record)->pv_bootloader, "pygrub") < 0) goto error; if (def->os.kernel) { diff --git a/src/xenconfig/xen_common.c b/src/xenconfig/xen_common.c index 7ae2d4a..48484d6 100644 --- a/src/xenconfig/xen_common.c +++ b/src/xenconfig/xen_common.c @@ -331,7 +331,7 @@ xenParseTimeOffset(virConfPtr conf, virDomainDefPtr def, if (xenConfigGetBool(conf, "localtime", &vmlocaltime, 0) < 0) return -1; - if (STREQ(def->os.type, "hvm")) { + if (def->os.type == VIR_DOMAIN_OSTYPE_HVM) { /* only managed HVM domains since 3.1.0 have persistent rtc_timeoffset */ if (xendConfigVersion < XEND_CONFIG_VERSION_3_1_0) { if (vmlocaltime) @@ -513,7 +513,7 @@ xenParseCPUFeatures(virConfPtr conf, virDomainDefPtr def) if (str && (virBitmapParse(str, 0, &def->cpumask, 4096) < 0)) return -1; - if (STREQ(def->os.type, "hvm")) { + if (def->os.type == VIR_DOMAIN_OSTYPE_HVM) { if (xenConfigGetBool(conf, "pae", &val, 1) < 0) return -1; @@ -570,7 +570,7 @@ xenParseVfb(virConfPtr conf, virDomainDefPtr def, int xendConfigVersion) { int val; char *listenAddr = NULL; - int hvm = STREQ(def->os.type, "hvm"); + int hvm = def->os.type == VIR_DOMAIN_OSTYPE_HVM; virConfValuePtr list; virDomainGraphicsDefPtr graphics = NULL; @@ -724,7 +724,7 @@ xenParseCharDev(virConfPtr conf, virDomainDefPtr def) virConfValuePtr value = NULL; virDomainChrDefPtr chr = NULL; - if (STREQ(def->os.type, "hvm")) { + if (def->os.type == VIR_DOMAIN_OSTYPE_HVM) { if (xenConfigGetString(conf, "parallel", &str, NULL) < 0) goto cleanup; if (str && STRNEQ(str, "none") && @@ -967,7 +967,7 @@ xenParseEmulatedDevices(virConfPtr conf, virDomainDefPtr def) { const char *str; - if (STREQ(def->os.type, "hvm")) { + if (def->os.type == VIR_DOMAIN_OSTYPE_HVM) { if (xenConfigGetString(conf, "soundhw", &str, NULL) < 0) return -1; @@ -997,8 +997,7 @@ xenParseGeneralMeta(virConfPtr conf, virDomainDefPtr def, virCapsPtr caps) STREQ(str, "hvm")) hvm = 1; - if (VIR_STRDUP(def->os.type, hvm ? "hvm" : "xen") < 0) - return -1; + def->os.type = (hvm ? VIR_DOMAIN_OSTYPE_HVM : VIR_DOMAIN_OSTYPE_XEN); def->os.arch = virCapabilitiesDefaultGuestArch(caps, @@ -1007,7 +1006,7 @@ xenParseGeneralMeta(virConfPtr conf, virDomainDefPtr def, virCapsPtr caps) if (!def->os.arch) { virReportError(VIR_ERR_INTERNAL_ERROR, _("no supported architecture for os type '%s'"), - def->os.type); + virDomainOSTypeToString(def->os.type)); return -1; } @@ -1346,7 +1345,7 @@ xenFormatTimeOffset(virConfPtr conf, virDomainDefPtr def, int xendConfigVersion) } } else { - if (STREQ(def->os.type, "hvm")) { + if (def->os.type == VIR_DOMAIN_OSTYPE_HVM) { /* >=3.1 HV: VARIABLE */ int rtc_timeoffset; @@ -1447,7 +1446,7 @@ xenFormatCharDev(virConfPtr conf, virDomainDefPtr def) { size_t i; - if (STREQ(def->os.type, "hvm")) { + if (def->os.type == VIR_DOMAIN_OSTYPE_HVM) { if (def->nparallels) { virBuffer buf = VIR_BUFFER_INITIALIZER; char *str; @@ -1565,7 +1564,7 @@ xenFormatCPUFeatures(virConfPtr conf, virDomainDefPtr def, int xendConfigVersion { size_t i; - if (STREQ(def->os.type, "hvm")) { + if (def->os.type == VIR_DOMAIN_OSTYPE_HVM) { if (xenConfigSetInt(conf, "pae", (def->features[VIR_DOMAIN_FEATURE_PAE] == VIR_TRISTATE_SWITCH_ON) ? 1 : 0) < 0) @@ -1621,7 +1620,7 @@ xenFormatCDROM(virConfPtr conf, virDomainDefPtr def, int xendConfigVersion) { size_t i; - if (STREQ(def->os.type, "hvm")) { + if (def->os.type == VIR_DOMAIN_OSTYPE_HVM) { if (xendConfigVersion == XEND_CONFIG_VERSION_3_0_2) { for (i = 0; i < def->ndisks; i++) { if (def->disks[i]->device == VIR_DOMAIN_DISK_DEVICE_CDROM && @@ -1644,7 +1643,7 @@ xenFormatCDROM(virConfPtr conf, virDomainDefPtr def, int xendConfigVersion) static int xenFormatVfb(virConfPtr conf, virDomainDefPtr def, int xendConfigVersion) { - int hvm = STREQ(def->os.type, "hvm") ? 1 : 0; + int hvm = def->os.type == VIR_DOMAIN_OSTYPE_HVM ? 1 : 0; if (def->ngraphics == 1 && def->graphics[0]->type != VIR_DOMAIN_GRAPHICS_TYPE_SPICE) { @@ -1763,7 +1762,7 @@ xenFormatVfb(virConfPtr conf, virDomainDefPtr def, int xendConfigVersion) static int xenFormatSound(virConfPtr conf, virDomainDefPtr def) { - if (STREQ(def->os.type, "hvm")) { + if (def->os.type == VIR_DOMAIN_OSTYPE_HVM) { if (def->sounds) { virBuffer buf = VIR_BUFFER_INITIALIZER; char *str = NULL; @@ -1792,7 +1791,7 @@ xenFormatVif(virConfPtr conf, { virConfValuePtr netVal = NULL; size_t i; - int hvm = STREQ(def->os.type, "hvm"); + int hvm = def->os.type == VIR_DOMAIN_OSTYPE_HVM; if (VIR_ALLOC(netVal) < 0) goto cleanup; diff --git a/src/xenconfig/xen_sxpr.c b/src/xenconfig/xen_sxpr.c index d77abf3..5f58fd8 100644 --- a/src/xenconfig/xen_sxpr.c +++ b/src/xenconfig/xen_sxpr.c @@ -1145,8 +1145,7 @@ xenParseSxpr(const struct sexpr *root, goto error; } - if (VIR_STRDUP(def->os.type, hvm ? "hvm" : "linux") < 0) - goto error; + def->os.type = (hvm ? VIR_DOMAIN_OSTYPE_HVM : VIR_DOMAIN_OSTYPE_LINUX); if (def->id != 0) { if (sexpr_lookup(root, "domain/image")) { @@ -2273,7 +2272,7 @@ xenFormatSxpr(virConnectPtr conn, } virBufferAsprintf(&buf, "(on_crash '%s')", tmp); - if (STREQ(def->os.type, "hvm")) + if (def->os.type == VIR_DOMAIN_OSTYPE_HVM) hvm = 1; if (!def->os.bootloader) { diff --git a/src/xenconfig/xen_xl.c b/src/xenconfig/xen_xl.c index 62284f7..db554b2 100644 --- a/src/xenconfig/xen_xl.c +++ b/src/xenconfig/xen_xl.c @@ -64,7 +64,7 @@ xenParseXLOS(virConfPtr conf, virDomainDefPtr def, virCapsPtr caps) size_t i; const char *extra, *root; - if (STREQ(def->os.type, "hvm")) { + if (def->os.type == VIR_DOMAIN_OSTYPE_HVM) { const char *boot; for (i = 0; i < caps->nguests; i++) { @@ -159,7 +159,7 @@ xenParseXLSpice(virConfPtr conf, virDomainDefPtr def) char *listenAddr = NULL; int val; - if (STREQ(def->os.type, "hvm")) { + if (def->os.type == VIR_DOMAIN_OSTYPE_HVM) { if (xenConfigGetBool(conf, "spice", &val, 0) < 0) return -1; @@ -353,7 +353,8 @@ xenParseXLDisk(virConfPtr conf, virDomainDefPtr def) } } - if (STRPREFIX(libxldisk->vdev, "xvd") || !STREQ(def->os.type, "hvm")) + if (STRPREFIX(libxldisk->vdev, "xvd") || + def->os.type != VIR_DOMAIN_OSTYPE_HVM) disk->bus = VIR_DOMAIN_DISK_BUS_XEN; else if (STRPREFIX(libxldisk->vdev, "sd")) disk->bus = VIR_DOMAIN_DISK_BUS_SCSI; @@ -388,7 +389,7 @@ xenParseXLInputDevs(virConfPtr conf, virDomainDefPtr def) const char *str; virConfValuePtr val; - if (STREQ(def->os.type, "hvm")) { + if (def->os.type == VIR_DOMAIN_OSTYPE_HVM) { val = virConfGetValue(conf, "usbdevice"); /* usbdevice can be defined as either a single string or a list */ if (val && val->type == VIR_CONF_LIST) { @@ -475,7 +476,7 @@ xenFormatXLOS(virConfPtr conf, virDomainDefPtr def) { size_t i; - if (STREQ(def->os.type, "hvm")) { + if (def->os.type == VIR_DOMAIN_OSTYPE_HVM) { char boot[VIR_DOMAIN_BOOT_LAST+1]; if (xenConfigSetString(conf, "builder", "hvm") < 0) return -1; @@ -667,7 +668,7 @@ xenFormatXLSpice(virConfPtr conf, virDomainDefPtr def) { const char *listenAddr = NULL; - if (STREQ(def->os.type, "hvm")) { + if (def->os.type == VIR_DOMAIN_OSTYPE_HVM) { if (def->graphics[0]->type == VIR_DOMAIN_GRAPHICS_TYPE_SPICE) { /* set others to false but may not be necessary */ if (xenConfigSetInt(conf, "sdl", 0) < 0) @@ -726,7 +727,7 @@ xenFormatXLInputDevs(virConfPtr conf, virDomainDefPtr def) const char *devtype; virConfValuePtr usbdevices = NULL, lastdev; - if (STREQ(def->os.type, "hvm")) { + if (def->os.type == VIR_DOMAIN_OSTYPE_HVM) { if (VIR_ALLOC(usbdevices) < 0) goto error; diff --git a/src/xenconfig/xen_xm.c b/src/xenconfig/xen_xm.c index ba10fb9..fafe662 100644 --- a/src/xenconfig/xen_xm.c +++ b/src/xenconfig/xen_xm.c @@ -42,7 +42,7 @@ xenParseXMOS(virConfPtr conf, virDomainDefPtr def) { size_t i; - if (STREQ(def->os.type, "hvm")) { + if (def->os.type == VIR_DOMAIN_OSTYPE_HVM) { const char *boot; if (VIR_ALLOC(def->os.loader) < 0 || @@ -108,7 +108,7 @@ xenParseXMDisk(virConfPtr conf, virDomainDefPtr def, int xendConfigVersion) { const char *str = NULL; virDomainDiskDefPtr disk = NULL; - int hvm = STREQ(def->os.type, "hvm"); + int hvm = def->os.type == VIR_DOMAIN_OSTYPE_HVM; virConfValuePtr list = virConfGetValue(conf, "disk"); if (list && list->type == VIR_CONF_LIST) { @@ -391,7 +391,7 @@ xenFormatXMDisks(virConfPtr conf, virDomainDefPtr def, int xendConfigVersion) { virConfValuePtr diskVal = NULL; size_t i = 0; - int hvm = STREQ(def->os.type, "hvm"); + int hvm = def->os.type == VIR_DOMAIN_OSTYPE_HVM; if (VIR_ALLOC(diskVal) < 0) goto cleanup; @@ -436,7 +436,7 @@ xenParseXMInputDevs(virConfPtr conf, virDomainDefPtr def) { const char *str; - if (STREQ(def->os.type, "hvm")) { + if (def->os.type == VIR_DOMAIN_OSTYPE_HVM) { if (xenConfigGetString(conf, "usbdevice", &str, NULL) < 0) return -1; if (str && @@ -503,7 +503,7 @@ xenFormatXMOS(virConfPtr conf, virDomainDefPtr def) { size_t i; - if (STREQ(def->os.type, "hvm")) { + if (def->os.type == VIR_DOMAIN_OSTYPE_HVM) { char boot[VIR_DOMAIN_BOOT_LAST+1]; if (xenConfigSetString(conf, "builder", "hvm") < 0) return -1; @@ -573,7 +573,7 @@ xenFormatXMInputDevs(virConfPtr conf, virDomainDefPtr def) size_t i; const char *devtype; - if (STREQ(def->os.type, "hvm")) { + if (def->os.type == VIR_DOMAIN_OSTYPE_HVM) { for (i = 0; i < def->ninputs; i++) { if (def->inputs[i]->bus == VIR_DOMAIN_INPUT_BUS_USB) { if (xenConfigSetInt(conf, "usb", 1) < 0) diff --git a/tests/openvzutilstest.c b/tests/openvzutilstest.c index f9d1002..1414d70 100644 --- a/tests/openvzutilstest.c +++ b/tests/openvzutilstest.c @@ -103,11 +103,11 @@ testReadNetworkConf(const void *data ATTRIBUTE_UNUSED) "</domain>\n"; if (!(def = virDomainDefNew()) || - VIR_STRDUP(def->os.type, "exe") < 0 || VIR_STRDUP(def->os.init, "/sbin/init") < 0) goto cleanup; def->virtType = VIR_DOMAIN_VIRT_OPENVZ; + def->os.type = VIR_DOMAIN_OSTYPE_EXE; if (openvzReadNetworkConf(def, 1) < 0) { err = virGetLastError(); -- 2.3.5 -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list