mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2025-02-22 11:22:23 +00:00
Introduce virTristateBool enum type
Replace all three-state (default/yes/no) enums with it: virDomainBIOSUseserial virDomainBootMenu virDomainPMState virDomainGraphicsSpiceClipboardCopypaste virDomainGraphicsSpiceAgentFileTransfer virNetworkDNSForwardPlainNames
This commit is contained in:
parent
0e6cacc4b1
commit
bb018ce6c8
@ -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");
|
||||
|
@ -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)
|
||||
|
@ -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,
|
||||
|
@ -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;
|
||||
|
@ -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;
|
||||
|
||||
|
@ -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"
|
||||
|
@ -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: "
|
||||
|
@ -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"));
|
||||
|
@ -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)
|
||||
|
@ -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__ */
|
||||
|
Loading…
x
Reference in New Issue
Block a user