virDomainFeaturesHyperVDefParse(virDomainDef *def,
xmlNodePtr node)
{
- def->features[VIR_DOMAIN_FEATURE_HYPERV] = VIR_TRISTATE_SWITCH_ON;
+ virDomainHyperVMode mode;
+
+ if (virXMLPropEnumDefault(node, "mode", virDomainHyperVModeTypeFromString,
+ VIR_XML_PROP_NONZERO, &mode,
+ VIR_DOMAIN_HYPERV_MODE_CUSTOM) < 0)
+ return -1;
+
+ def->features[VIR_DOMAIN_FEATURE_HYPERV] = mode;
node = xmlFirstElementChild(node);
while (node != NULL) {
}
/* hyperv */
- if (src->features[VIR_DOMAIN_FEATURE_HYPERV] == VIR_TRISTATE_SWITCH_ON) {
+ if (src->features[VIR_DOMAIN_FEATURE_HYPERV] != VIR_DOMAIN_HYPERV_MODE_NONE) {
for (i = 0; i < VIR_DOMAIN_HYPERV_LAST; i++) {
switch ((virDomainHyperv) i) {
case VIR_DOMAIN_HYPERV_RELAXED:
VIR_TRISTATE_SWITCH_ON ? "on" : "off");
}
- if (def->features[VIR_DOMAIN_FEATURE_HYPERV] == VIR_TRISTATE_SWITCH_ON) {
+ if (def->features[VIR_DOMAIN_FEATURE_HYPERV] != VIR_DOMAIN_HYPERV_MODE_NONE) {
for (i = 0; i < VIR_DOMAIN_HYPERV_LAST; i++) {
switch ((virDomainHyperv) i) {
case VIR_DOMAIN_HYPERV_RELAXED:
break;
case VIR_DOMAIN_FEATURE_HYPERV:
- if (def->features[i] != VIR_TRISTATE_SWITCH_ABSENT &&
+ if (def->features[i] != VIR_DOMAIN_HYPERV_MODE_NONE &&
!ARCH_IS_X86(def->os.arch) && !qemuDomainIsARMVirt(def)) {
virReportError(VIR_ERR_CONFIG_UNSUPPORTED,
_("Hyperv features are not supported for "