From bb018ce6c85ee17711a0d8c122c6861bb189ce56 Mon Sep 17 00:00:00 2001 From: =?utf8?q?J=C3=A1n=20Tomko?= Date: Fri, 27 Jun 2014 17:16:54 +0200 Subject: [PATCH] Introduce virTristateBool enum type Replace all three-state (default/yes/no) enums with it: virDomainBIOSUseserial virDomainBootMenu virDomainPMState virDomainGraphicsSpiceClipboardCopypaste virDomainGraphicsSpiceAgentFileTransfer virNetworkDNSForwardPlainNames --- src/conf/domain_conf.c | 57 ++++++++++--------------------------- src/conf/domain_conf.h | 54 ++++------------------------------- src/conf/network_conf.c | 12 ++------ src/conf/network_conf.h | 15 +--------- src/libvirt_private.syms | 10 ++----- src/network/bridge_driver.c | 3 +- src/qemu/qemu_command.c | 22 +++++++------- src/qemu/qemu_driver.c | 4 +-- src/util/virutil.c | 5 ++++ src/util/virutil.h | 11 +++++++ 10 files changed, 56 insertions(+), 137 deletions(-) diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c index 6257053e45..55f97db99a 100644 --- a/src/conf/domain_conf.c +++ b/src/conf/domain_conf.c @@ -134,11 +134,6 @@ VIR_ENUM_IMPL(virDomainBoot, VIR_DOMAIN_BOOT_LAST, "hd", "network") -VIR_ENUM_IMPL(virDomainBootMenu, VIR_DOMAIN_BOOT_MENU_LAST, - "default", - "yes", - "no") - VIR_ENUM_IMPL(virDomainFeature, VIR_DOMAIN_FEATURE_LAST, "acpi", "apic", @@ -225,11 +220,6 @@ VIR_ENUM_IMPL(virDomainLockFailure, VIR_DOMAIN_LOCK_FAILURE_LAST, "pause", "ignore") -VIR_ENUM_IMPL(virDomainPMState, VIR_DOMAIN_PM_STATE_LAST, - "default", - "yes", - "no") - VIR_ENUM_IMPL(virDomainDevice, VIR_DOMAIN_DEVICE_LAST, "none", "disk", @@ -622,18 +612,6 @@ VIR_ENUM_IMPL(virDomainGraphicsSpiceStreamingMode, "all", "off"); -VIR_ENUM_IMPL(virDomainGraphicsSpiceClipboardCopypaste, - VIR_DOMAIN_GRAPHICS_SPICE_CLIPBOARD_COPYPASTE_LAST, - "default", - "yes", - "no"); - -VIR_ENUM_IMPL(virDomainGraphicsSpiceAgentFileTransfer, - VIR_DOMAIN_GRAPHICS_SPICE_AGENT_FILE_TRANSFER_LAST, - "default", - "yes", - "no"); - VIR_ENUM_IMPL(virDomainHostdevMode, VIR_DOMAIN_HOSTDEV_MODE_LAST, "subsystem", "capabilities") @@ -8926,7 +8904,7 @@ virDomainGraphicsDefParseXML(xmlNodePtr node, } if ((copypasteVal = - virDomainGraphicsSpiceClipboardCopypasteTypeFromString(copypaste)) <= 0) { + virTristateBoolTypeFromString(copypaste)) <= 0) { virReportError(VIR_ERR_CONFIG_UNSUPPORTED, _("unknown copypaste value '%s'"), copypaste); VIR_FREE(copypaste); @@ -8946,7 +8924,7 @@ virDomainGraphicsDefParseXML(xmlNodePtr node, } if ((enableVal = - virDomainGraphicsSpiceAgentFileTransferTypeFromString(enable)) <= 0) { + virTristateBoolTypeFromString(enable)) <= 0) { virReportError(VIR_ERR_CONFIG_UNSUPPORTED, _("unknown enable value '%s'"), enable); VIR_FREE(enable); @@ -10053,7 +10031,7 @@ virDomainPMStateParseXML(xmlXPathContextPtr ctxt, int ret = -1; char *tmp = virXPathString(xpath, ctxt); if (tmp) { - *val = virDomainPMStateTypeFromString(tmp); + *val = virTristateBoolTypeFromString(tmp); if (*val < 0) { virReportError(VIR_ERR_CONFIG_UNSUPPORTED, _("unknown PM state value %s"), tmp); @@ -11016,14 +10994,14 @@ virDomainDefParseBootXML(xmlXPathContextPtr ctxt, tmp = virXPathString("string(./os/bootmenu[1]/@enable)", ctxt); if (tmp) { - def->os.bootmenu = virDomainBootMenuTypeFromString(tmp); + def->os.bootmenu = virTristateBoolTypeFromString(tmp); if (def->os.bootmenu <= 0) { /* In order not to break misconfigured machines, this * should not emit an error, but rather set the bootmenu * to disabled */ VIR_WARN("disabling bootmenu due to unknown option '%s'", tmp); - def->os.bootmenu = VIR_DOMAIN_BOOT_MENU_DISABLED; + def->os.bootmenu = VIR_TRISTATE_BOOL_NO; } VIR_FREE(tmp); } @@ -11038,9 +11016,9 @@ virDomainDefParseBootXML(xmlXPathContextPtr ctxt, "for useserial")); goto cleanup; } - def->os.bios.useserial = VIR_DOMAIN_BIOS_USESERIAL_YES; + def->os.bios.useserial = VIR_TRISTATE_BOOL_YES; } else { - def->os.bios.useserial = VIR_DOMAIN_BIOS_USESERIAL_NO; + def->os.bios.useserial = VIR_TRISTATE_BOOL_NO; } VIR_FREE(tmp); } @@ -17033,10 +17011,10 @@ virDomainGraphicsDefFormat(virBufferPtr buf, virDomainGraphicsSpiceMouseModeTypeToString(def->data.spice.mousemode)); if (def->data.spice.copypaste) virBufferAsprintf(buf, "\n", - virDomainGraphicsSpiceClipboardCopypasteTypeToString(def->data.spice.copypaste)); + virTristateBoolTypeToString(def->data.spice.copypaste)); if (def->data.spice.filetransfer) virBufferAsprintf(buf, "\n", - virDomainGraphicsSpiceAgentFileTransferTypeToString(def->data.spice.filetransfer)); + virTristateBoolTypeToString(def->data.spice.filetransfer)); } if (children) { @@ -17609,20 +17587,15 @@ virDomainDefFormatInternal(virDomainDefPtr def, virBufferAsprintf(buf, "\n", boottype); } - if (def->os.bootmenu != VIR_DOMAIN_BOOT_MENU_DEFAULT) { - const char *enabled = (def->os.bootmenu == - VIR_DOMAIN_BOOT_MENU_ENABLED ? "yes" - : "no"); - virBufferAsprintf(buf, "\n", enabled); - } + if (def->os.bootmenu) + virBufferAsprintf(buf, "\n", + virTristateBoolTypeToString(def->os.bootmenu)); if (def->os.bios.useserial || def->os.bios.rt_set) { virBufferAddLit(buf, "os.bios.useserial) virBufferAsprintf(buf, " useserial='%s'", - (def->os.bios.useserial == - VIR_DOMAIN_BIOS_USESERIAL_YES ? "yes" - : "no")); + virTristateBoolTypeToString(def->os.bios.useserial)); if (def->os.bios.rt_set) virBufferAsprintf(buf, " rebootTimeout='%d'", def->os.bios.rt_delay); @@ -17866,11 +17839,11 @@ virDomainDefFormatInternal(virDomainDefPtr def, virBufferAdjustIndent(buf, 2); if (def->pm.s3) { virBufferAsprintf(buf, "\n", - virDomainPMStateTypeToString(def->pm.s3)); + virTristateBoolTypeToString(def->pm.s3)); } if (def->pm.s4) { virBufferAsprintf(buf, "\n", - virDomainPMStateTypeToString(def->pm.s4)); + virTristateBoolTypeToString(def->pm.s4)); } virBufferAdjustIndent(buf, -2); virBufferAddLit(buf, "\n"); diff --git a/src/conf/domain_conf.h b/src/conf/domain_conf.h index dec8b327be..8606a202ee 100644 --- a/src/conf/domain_conf.h +++ b/src/conf/domain_conf.h @@ -1344,22 +1344,6 @@ typedef enum { VIR_DOMAIN_GRAPHICS_SPICE_STREAMING_MODE_LAST } virDomainGraphicsSpiceStreamingMode; -typedef enum { - VIR_DOMAIN_GRAPHICS_SPICE_CLIPBOARD_COPYPASTE_DEFAULT = 0, - VIR_DOMAIN_GRAPHICS_SPICE_CLIPBOARD_COPYPASTE_YES, - VIR_DOMAIN_GRAPHICS_SPICE_CLIPBOARD_COPYPASTE_NO, - - VIR_DOMAIN_GRAPHICS_SPICE_CLIPBOARD_COPYPASTE_LAST -} virDomainGraphicsSpiceClipboardCopypaste; - -typedef enum { - VIR_DOMAIN_GRAPHICS_SPICE_AGENT_FILE_TRANSFER_DEFAULT = 0, - VIR_DOMAIN_GRAPHICS_SPICE_AGENT_FILE_TRANSFER_YES, - VIR_DOMAIN_GRAPHICS_SPICE_AGENT_FILE_TRANSFER_NO, - - VIR_DOMAIN_GRAPHICS_SPICE_AGENT_FILE_TRANSFER_LAST -} virDomainGraphicsSpiceAgentFileTransfer; - typedef enum { VIR_DOMAIN_GRAPHICS_LISTEN_TYPE_NONE = 0, VIR_DOMAIN_GRAPHICS_LISTEN_TYPE_ADDRESS, @@ -1432,8 +1416,8 @@ struct _virDomainGraphicsDef { int zlib; int playback; int streaming; - int copypaste; - int filetransfer; + int copypaste; /* enum virTristateBool */ + int filetransfer; /* enum virTristateBool */ } spice; } data; /* nListens, listens, and *port are only useful if type is vnc, @@ -1519,14 +1503,6 @@ typedef enum { VIR_DOMAIN_BOOT_LAST } virDomainBootOrder; -typedef enum { - VIR_DOMAIN_BOOT_MENU_DEFAULT = 0, - VIR_DOMAIN_BOOT_MENU_ENABLED, - VIR_DOMAIN_BOOT_MENU_DISABLED, - - VIR_DOMAIN_BOOT_MENU_LAST -} virDomainBootMenu; - typedef enum { VIR_DOMAIN_FEATURE_ACPI, VIR_DOMAIN_FEATURE_APIC, @@ -1639,24 +1615,10 @@ typedef enum { VIR_ENUM_DECL(virDomainLockFailure) -typedef enum { - VIR_DOMAIN_PM_STATE_DEFAULT = 0, - VIR_DOMAIN_PM_STATE_ENABLED, - VIR_DOMAIN_PM_STATE_DISABLED, - - VIR_DOMAIN_PM_STATE_LAST -} virDomainPMState; - -typedef enum { - VIR_DOMAIN_BIOS_USESERIAL_DEFAULT = 0, - VIR_DOMAIN_BIOS_USESERIAL_YES, - VIR_DOMAIN_BIOS_USESERIAL_NO -} virDomainBIOSUseserial; - typedef struct _virDomainBIOSDef virDomainBIOSDef; typedef virDomainBIOSDef *virDomainBIOSDefPtr; struct _virDomainBIOSDef { - int useserial; + int useserial; /* enum virTristateBool */ /* reboot-timeout parameters */ bool rt_set; int rt_delay; @@ -1671,8 +1633,7 @@ struct _virDomainOSDef { char *machine; size_t nBootDevs; int bootDevs[VIR_DOMAIN_BOOT_LAST]; - /* enum virDomainBootMenu */ - int bootmenu; + int bootmenu; /* enum virTristateBool */ char *init; char **initargv; char *kernel; @@ -1960,7 +1921,7 @@ struct _virDomainDef { int onLockFailure; /* enum virDomainLockFailureAction */ struct { - /* These options are actually type of enum virDomainPMState */ + /* These options are of type enum virTristateBool */ int s3; int s4; } pm; @@ -2588,17 +2549,14 @@ typedef const char* (*virEventActionToStringFunc)(int type); typedef int (*virEventActionFromStringFunc)(const char *type); VIR_ENUM_DECL(virDomainTaint) - VIR_ENUM_DECL(virDomainVirt) VIR_ENUM_DECL(virDomainBoot) -VIR_ENUM_DECL(virDomainBootMenu) VIR_ENUM_DECL(virDomainFeature) VIR_ENUM_DECL(virDomainFeatureState) VIR_ENUM_DECL(virDomainCapabilitiesPolicy) VIR_ENUM_DECL(virDomainCapsFeature) VIR_ENUM_DECL(virDomainLifecycle) VIR_ENUM_DECL(virDomainLifecycleCrash) -VIR_ENUM_DECL(virDomainPMState) VIR_ENUM_DECL(virDomainDevice) VIR_ENUM_DECL(virDomainDeviceAddress) VIR_ENUM_DECL(virDomainDiskDevice) @@ -2652,7 +2610,6 @@ VIR_ENUM_DECL(virDomainInputBus) VIR_ENUM_DECL(virDomainGraphics) VIR_ENUM_DECL(virDomainGraphicsListen) VIR_ENUM_DECL(virDomainGraphicsAuthConnected) -VIR_ENUM_DECL(virDomainGraphicsSpiceAgentFileTransfer) VIR_ENUM_DECL(virDomainGraphicsSpiceChannelName) VIR_ENUM_DECL(virDomainGraphicsSpiceChannelMode) VIR_ENUM_DECL(virDomainGraphicsSpiceImageCompression) @@ -2660,7 +2617,6 @@ VIR_ENUM_DECL(virDomainGraphicsSpiceJpegCompression) VIR_ENUM_DECL(virDomainGraphicsSpiceZlibCompression) VIR_ENUM_DECL(virDomainGraphicsSpicePlaybackCompression) VIR_ENUM_DECL(virDomainGraphicsSpiceStreamingMode) -VIR_ENUM_DECL(virDomainGraphicsSpiceClipboardCopypaste) VIR_ENUM_DECL(virDomainGraphicsSpiceMouseMode) VIR_ENUM_DECL(virDomainGraphicsVNCSharePolicy) VIR_ENUM_DECL(virDomainHyperv) diff --git a/src/conf/network_conf.c b/src/conf/network_conf.c index ce4d4d89df..756b9dece6 100644 --- a/src/conf/network_conf.c +++ b/src/conf/network_conf.c @@ -66,12 +66,6 @@ VIR_ENUM_IMPL(virNetworkForwardDriverName, "kvm", "vfio") -VIR_ENUM_IMPL(virNetworkDNSForwardPlainNames, - VIR_NETWORK_DNS_FORWARD_PLAIN_NAMES_LAST, - "default", - "yes", - "no") - VIR_ENUM_IMPL(virNetworkTaint, VIR_NETWORK_TAINT_LAST, "hook-script"); @@ -1123,8 +1117,7 @@ virNetworkDNSDefParseXML(const char *networkName, forwardPlainNames = virXPathString("string(./@forwardPlainNames)", ctxt); if (forwardPlainNames) { - def->forwardPlainNames - = virNetworkDNSForwardPlainNamesTypeFromString(forwardPlainNames); + def->forwardPlainNames = virTristateBoolTypeFromString(forwardPlainNames); if (def->forwardPlainNames <= 0) { virReportError(VIR_ERR_XML_ERROR, _("Invalid dns forwardPlainNames setting '%s' " @@ -2372,8 +2365,9 @@ virNetworkDNSDefFormat(virBufferPtr buf, return 0; virBufferAddLit(buf, "forwardPlainNames) { - const char *fwd = virNetworkDNSForwardPlainNamesTypeToString(def->forwardPlainNames); + const char *fwd = virTristateBoolTypeToString(def->forwardPlainNames); if (!fwd) { virReportError(VIR_ERR_INTERNAL_ERROR, diff --git a/src/conf/network_conf.h b/src/conf/network_conf.h index c4e9d920f3..7ed58cd89b 100644 --- a/src/conf/network_conf.h +++ b/src/conf/network_conf.h @@ -112,23 +112,10 @@ struct _virNetworkDNSHostDef { char **names; }; -/* If forwardPlainNames is 0 (default), that is equivalent to "yes", - * but won't be encoded in newly formatted XML. - */ -typedef enum { - VIR_NETWORK_DNS_FORWARD_PLAIN_NAMES_DEFAULT = 0, /* silent "yes" */ - VIR_NETWORK_DNS_FORWARD_PLAIN_NAMES_YES, - VIR_NETWORK_DNS_FORWARD_PLAIN_NAMES_NO, - - VIR_NETWORK_DNS_FORWARD_PLAIN_NAMES_LAST, -} virNetworkDNSForwardPlainNamesType; - -VIR_ENUM_DECL(virNetworkDNSForwardPlainNames) - typedef struct _virNetworkDNSDef virNetworkDNSDef; typedef virNetworkDNSDef *virNetworkDNSDefPtr; struct _virNetworkDNSDef { - int forwardPlainNames; /* enum virNetworkDNSForwardPlainNamesType */ + int forwardPlainNames; /* enum virTristateBool */ size_t ntxts; virNetworkDNSTxtDefPtr txts; size_t nhosts; diff --git a/src/libvirt_private.syms b/src/libvirt_private.syms index 7bce3e2682..52b0cd5b50 100644 --- a/src/libvirt_private.syms +++ b/src/libvirt_private.syms @@ -145,8 +145,6 @@ virDiskNameToIndex; virDomainActualNetDefFree; virDomainBlockedReasonTypeFromString; virDomainBlockedReasonTypeToString; -virDomainBootMenuTypeFromString; -virDomainBootMenuTypeToString; virDomainCapabilitiesPolicyTypeToString; virDomainCapsFeatureTypeToString; virDomainChrConsoleTargetTypeFromString; @@ -274,14 +272,10 @@ virDomainGraphicsListenGetType; virDomainGraphicsListenSetAddress; virDomainGraphicsListenSetNetwork; virDomainGraphicsListenSetType; -virDomainGraphicsSpiceAgentFileTransferTypeFromString; -virDomainGraphicsSpiceAgentFileTransferTypeToString; virDomainGraphicsSpiceChannelModeTypeFromString; virDomainGraphicsSpiceChannelModeTypeToString; virDomainGraphicsSpiceChannelNameTypeFromString; virDomainGraphicsSpiceChannelNameTypeToString; -virDomainGraphicsSpiceClipboardCopypasteTypeFromString; -virDomainGraphicsSpiceClipboardCopypasteTypeToString; virDomainGraphicsSpiceImageCompressionTypeFromString; virDomainGraphicsSpiceImageCompressionTypeToString; virDomainGraphicsSpiceJpegCompressionTypeFromString; @@ -380,8 +374,6 @@ virDomainPausedReasonTypeFromString; virDomainPausedReasonTypeToString; virDomainPCIRombarModeTypeFromString; virDomainPCIRombarModeTypeToString; -virDomainPMStateTypeFromString; -virDomainPMStateTypeToString; virDomainPMSuspendedReasonTypeFromString; virDomainPMSuspendedReasonTypeToString; virDomainRedirdevBusTypeFromString; @@ -2159,6 +2151,8 @@ virSetSockReuseAddr; virSetUIDGID; virSetUIDGIDWithCaps; virStrIsPrint; +virTristateBoolTypeFromString; +virTristateBoolTypeToString; virUpdateSelfLastChanged; virValidateWWN; diff --git a/src/network/bridge_driver.c b/src/network/bridge_driver.c index 6a2e7606d7..6ccc6e2c8e 100644 --- a/src/network/bridge_driver.c +++ b/src/network/bridge_driver.c @@ -927,8 +927,7 @@ networkDnsmasqConfContents(virNetworkObjPtr network, network->def->domain); } - if (network->def->dns.forwardPlainNames - == VIR_NETWORK_DNS_FORWARD_PLAIN_NAMES_NO) { + if (network->def->dns.forwardPlainNames == VIR_TRISTATE_BOOL_NO) { virBufferAddLit(&configbuf, "domain-needed\n"); /* need to specify local=// whether or not a domain is * specified, unless the config says we should forward "plain" diff --git a/src/qemu/qemu_command.c b/src/qemu/qemu_command.c index 806251071e..1504b80bef 100644 --- a/src/qemu/qemu_command.c +++ b/src/qemu/qemu_command.c @@ -6814,9 +6814,9 @@ qemuBuildGraphicsSPICECommandLine(virQEMUDriverConfigPtr cfg, if (graphics->data.spice.streaming) virBufferAsprintf(&opt, ",streaming-video=%s", virDomainGraphicsSpiceStreamingModeTypeToString(graphics->data.spice.streaming)); - if (graphics->data.spice.copypaste == VIR_DOMAIN_GRAPHICS_SPICE_CLIPBOARD_COPYPASTE_NO) + if (graphics->data.spice.copypaste == VIR_TRISTATE_BOOL_NO) virBufferAddLit(&opt, ",disable-copy-paste"); - if (graphics->data.spice.filetransfer == VIR_DOMAIN_GRAPHICS_SPICE_AGENT_FILE_TRANSFER_NO) { + if (graphics->data.spice.filetransfer == VIR_TRISTATE_BOOL_NO) { if (!virQEMUCapsGet(qemuCaps, QEMU_CAPS_SPICE_FILE_XFER_DISABLE)) { virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s", _("This QEMU can't disable file transfers through spice")); @@ -7469,7 +7469,7 @@ qemuBuildCommandLine(virConnectPtr conn, } /* Serial graphics adapter */ - if (def->os.bios.useserial == VIR_DOMAIN_BIOS_USESERIAL_YES) { + if (def->os.bios.useserial == VIR_TRISTATE_BOOL_YES) { if (!virQEMUCapsGet(qemuCaps, QEMU_CAPS_DEVICE)) { virReportError(VIR_ERR_INTERNAL_ERROR, "%s", _("qemu does not support -device")); @@ -7688,7 +7688,7 @@ qemuBuildCommandLine(virConnectPtr conn, } virCommandAddArg(cmd, "-global"); virCommandAddArgFormat(cmd, "PIIX4_PM.disable_s3=%d", - def->pm.s3 == VIR_DOMAIN_PM_STATE_DISABLED); + def->pm.s3 == VIR_TRISTATE_BOOL_NO); } if (def->pm.s4) { @@ -7699,7 +7699,7 @@ qemuBuildCommandLine(virConnectPtr conn, } virCommandAddArg(cmd, "-global"); virCommandAddArgFormat(cmd, "PIIX4_PM.disable_s4=%d", - def->pm.s4 == VIR_DOMAIN_PM_STATE_DISABLED); + def->pm.s4 == VIR_TRISTATE_BOOL_NO); } if (!def->os.bootloader) { @@ -7721,7 +7721,7 @@ qemuBuildCommandLine(virConnectPtr conn, } emitBootindex = true; } else if (virQEMUCapsGet(qemuCaps, QEMU_CAPS_BOOTINDEX) && - (def->os.bootmenu != VIR_DOMAIN_BOOT_MENU_ENABLED || + (def->os.bootmenu != VIR_TRISTATE_BOOL_YES || !virQEMUCapsGet(qemuCaps, QEMU_CAPS_BOOT_MENU))) { emitBootindex = true; } @@ -7759,7 +7759,7 @@ qemuBuildCommandLine(virConnectPtr conn, if (boot_nparams++) virBufferAddChar(&boot_buf, ','); - if (def->os.bootmenu == VIR_DOMAIN_BOOT_MENU_ENABLED) + if (def->os.bootmenu == VIR_TRISTATE_BOOL_YES) virBufferAddLit(&boot_buf, "menu=on"); else virBufferAddLit(&boot_buf, "menu=off"); @@ -11440,9 +11440,9 @@ qemuParseCommandLine(virCapsPtr qemuCaps, val += strlen("PIIX4_PM.disable_s3="); if (STREQ(val, "0")) - def->pm.s3 = VIR_DOMAIN_PM_STATE_ENABLED; + def->pm.s3 = VIR_TRISTATE_BOOL_YES; else if (STREQ(val, "1")) - def->pm.s3 = VIR_DOMAIN_PM_STATE_DISABLED; + def->pm.s3 = VIR_TRISTATE_BOOL_NO; else { virReportError(VIR_ERR_CONFIG_UNSUPPORTED, _("invalid value for disable_s3 parameter: " @@ -11457,9 +11457,9 @@ qemuParseCommandLine(virCapsPtr qemuCaps, val += strlen("PIIX4_PM.disable_s4="); if (STREQ(val, "0")) - def->pm.s4 = VIR_DOMAIN_PM_STATE_ENABLED; + def->pm.s4 = VIR_TRISTATE_BOOL_YES; else if (STREQ(val, "1")) - def->pm.s4 = VIR_DOMAIN_PM_STATE_DISABLED; + def->pm.s4 = VIR_TRISTATE_BOOL_NO; else { virReportError(VIR_ERR_CONFIG_UNSUPPORTED, _("invalid value for disable_s4 parameter: " diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c index 512fe1d352..b85d9098e9 100644 --- a/src/qemu/qemu_driver.c +++ b/src/qemu/qemu_driver.c @@ -16256,7 +16256,7 @@ qemuDomainPMSuspendForDuration(virDomainPtr dom, } if (vm->def->pm.s3 || vm->def->pm.s4) { - if (vm->def->pm.s3 == VIR_DOMAIN_PM_STATE_DISABLED && + if (vm->def->pm.s3 == VIR_TRISTATE_BOOL_NO && (target == VIR_NODE_SUSPEND_TARGET_MEM || target == VIR_NODE_SUSPEND_TARGET_HYBRID)) { virReportError(VIR_ERR_INTERNAL_ERROR, "%s", @@ -16264,7 +16264,7 @@ qemuDomainPMSuspendForDuration(virDomainPtr dom, goto cleanup; } - if (vm->def->pm.s4 == VIR_DOMAIN_PM_STATE_DISABLED && + if (vm->def->pm.s4 == VIR_TRISTATE_BOOL_NO && target == VIR_NODE_SUSPEND_TARGET_DISK) { virReportError(VIR_ERR_INTERNAL_ERROR, "%s", _("S4 state is disabled for this domain")); diff --git a/src/util/virutil.c b/src/util/virutil.c index 20e9f0ebe9..a66bb6ed5b 100644 --- a/src/util/virutil.c +++ b/src/util/virutil.c @@ -92,6 +92,11 @@ verify(sizeof(gid_t) <= sizeof(unsigned int) && VIR_LOG_INIT("util.util"); +VIR_ENUM_IMPL(virTristateBool, VIR_TRISTATE_BOOL_LAST, + "default", + "yes", + "no") + #ifndef WIN32 int virSetInherit(int fd, bool inherit) diff --git a/src/util/virutil.h b/src/util/virutil.h index e8c1d7c7d0..66007434f8 100644 --- a/src/util/virutil.h +++ b/src/util/virutil.h @@ -38,6 +38,7 @@ # define MAX(a, b) ((a) > (b) ? (a) : (b)) # endif + int virSetBlocking(int fd, bool blocking) ATTRIBUTE_RETURN_CHECK; int virSetNonBlock(int fd) ATTRIBUTE_RETURN_CHECK; int virSetInherit(int fd, bool inherit) ATTRIBUTE_RETURN_CHECK; @@ -211,4 +212,14 @@ bool virIsSUID(void); time_t virGetSelfLastChanged(void); void virUpdateSelfLastChanged(const char *path); +typedef enum { + VIR_TRISTATE_BOOL_ABSENT = 0, + VIR_TRISTATE_BOOL_YES, + VIR_TRISTATE_BOOL_NO, + + VIR_TRISTATE_BOOL_LAST +} virTristateBool; + +VIR_ENUM_DECL(virTristateBool) + #endif /* __VIR_UTIL_H__ */ -- 2.39.5