]> xenbits.xensource.com Git - libvirt.git/commitdiff
Introduce virTristateBool enum type
authorJán Tomko <jtomko@redhat.com>
Fri, 27 Jun 2014 15:16:54 +0000 (17:16 +0200)
committerJán Tomko <jtomko@redhat.com>
Wed, 23 Jul 2014 10:37:39 +0000 (12:37 +0200)
Replace all three-state (default/yes/no) enums with it:
virDomainBIOSUseserial
virDomainBootMenu
virDomainPMState
virDomainGraphicsSpiceClipboardCopypaste
virDomainGraphicsSpiceAgentFileTransfer
virNetworkDNSForwardPlainNames

src/conf/domain_conf.c
src/conf/domain_conf.h
src/conf/network_conf.c
src/conf/network_conf.h
src/libvirt_private.syms
src/network/bridge_driver.c
src/qemu/qemu_command.c
src/qemu/qemu_driver.c
src/util/virutil.c
src/util/virutil.h

index 6257053e45419c2bbe50bdd2349275e45a0297f3..55f97db99aee2fdafe812de1946ce2991962c161 100644 (file)
@@ -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, "<clipboard copypaste='%s'/>\n",
-                              virDomainGraphicsSpiceClipboardCopypasteTypeToString(def->data.spice.copypaste));
+                              virTristateBoolTypeToString(def->data.spice.copypaste));
         if (def->data.spice.filetransfer)
             virBufferAsprintf(buf, "<filetransfer enable='%s'/>\n",
-                              virDomainGraphicsSpiceAgentFileTransferTypeToString(def->data.spice.filetransfer));
+                              virTristateBoolTypeToString(def->data.spice.filetransfer));
     }
 
     if (children) {
@@ -17609,20 +17587,15 @@ virDomainDefFormatInternal(virDomainDefPtr def,
             virBufferAsprintf(buf, "<boot dev='%s'/>\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, "<bootmenu enable='%s'/>\n", enabled);
-        }
+        if (def->os.bootmenu)
+            virBufferAsprintf(buf, "<bootmenu enable='%s'/>\n",
+                              virTristateBoolTypeToString(def->os.bootmenu));
 
         if (def->os.bios.useserial || def->os.bios.rt_set) {
             virBufferAddLit(buf, "<bios");
             if (def->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, "<suspend-to-mem enabled='%s'/>\n",
-                              virDomainPMStateTypeToString(def->pm.s3));
+                              virTristateBoolTypeToString(def->pm.s3));
         }
         if (def->pm.s4) {
             virBufferAsprintf(buf, "<suspend-to-disk enabled='%s'/>\n",
-                              virDomainPMStateTypeToString(def->pm.s4));
+                              virTristateBoolTypeToString(def->pm.s4));
         }
         virBufferAdjustIndent(buf, -2);
         virBufferAddLit(buf, "</pm>\n");
index dec8b327be62a2e93aa00bd28bb10b9a7e087713..8606a202ee5405ac8db64ddbcdabb9e6c7b622cd 100644 (file)
@@ -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)
index ce4d4d89df55fa02fdb36473cd899103e9d81f19..756b9dece68878231eec64c9a3671998d95d6765 100644 (file)
@@ -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, "<dns");
+    /* default to "yes", but don't format it in the XML */
     if (def->forwardPlainNames) {
-        const char *fwd = virNetworkDNSForwardPlainNamesTypeToString(def->forwardPlainNames);
+        const char *fwd = virTristateBoolTypeToString(def->forwardPlainNames);
 
         if (!fwd) {
             virReportError(VIR_ERR_INTERNAL_ERROR,
index c4e9d920f3fbd2a9144209311b88bc28e10e8fa5..7ed58cd89bcf4a12852b464a387b5d9306d6e001 100644 (file)
@@ -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;
index 7bce3e268212c869ce5e1702556b5108b666e62a..52b0cd5b504369d20bc3ca6a98d80b2abb045d72 100644 (file)
@@ -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;
 
index 6a2e7606d771e2329c09f3be7f788326726a7025..6ccc6e2c8e901c7d387a2285927d13f4babc048b 100644 (file)
@@ -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"
index 806251071e10c175cd96cdbb085cc4cf9e05c736..1504b80bef6e46d6ab1bd4893d76cf4e253ebe0b 100644 (file)
@@ -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: "
index 512fe1d3523a295f888e666d8535ee9ae8ba2455..b85d9098e9b56a6d4a4488b67554d328b1fb301a 100644 (file)
@@ -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"));
index 20e9f0ebe9c5607ef293cddbf1c86a31e9e7462d..a66bb6ed5bc0d7a1ab69e27774effae78a05f334 100644 (file)
@@ -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)
index e8c1d7c7d02cd06239b8395eb8397fcebadacdae..66007434f88ba54de72ac5c05338b8e04384e1a9 100644 (file)
@@ -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__ */