"hd",
"network")
-VIR_ENUM_IMPL(virDomainBootMenu, VIR_DOMAIN_BOOT_MENU_LAST,
- "default",
- "yes",
- "no")
-
VIR_ENUM_IMPL(virDomainFeature, VIR_DOMAIN_FEATURE_LAST,
"acpi",
"apic",
"pause",
"ignore")
-VIR_ENUM_IMPL(virDomainPMState, VIR_DOMAIN_PM_STATE_LAST,
- "default",
- "yes",
- "no")
-
VIR_ENUM_IMPL(virDomainDevice, VIR_DOMAIN_DEVICE_LAST,
"none",
"disk",
"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")
}
if ((copypasteVal =
- virDomainGraphicsSpiceClipboardCopypasteTypeFromString(copypaste)) <= 0) {
+ virTristateBoolTypeFromString(copypaste)) <= 0) {
virReportError(VIR_ERR_CONFIG_UNSUPPORTED,
_("unknown copypaste value '%s'"), copypaste);
VIR_FREE(copypaste);
}
if ((enableVal =
- virDomainGraphicsSpiceAgentFileTransferTypeFromString(enable)) <= 0) {
+ virTristateBoolTypeFromString(enable)) <= 0) {
virReportError(VIR_ERR_CONFIG_UNSUPPORTED,
_("unknown enable value '%s'"), enable);
VIR_FREE(enable);
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);
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);
}
"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);
}
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) {
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);
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");
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,
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,
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,
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;
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;
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;
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)
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)
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)
"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");
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' "
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,
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;
virDomainActualNetDefFree;
virDomainBlockedReasonTypeFromString;
virDomainBlockedReasonTypeToString;
-virDomainBootMenuTypeFromString;
-virDomainBootMenuTypeToString;
virDomainCapabilitiesPolicyTypeToString;
virDomainCapsFeatureTypeToString;
virDomainChrConsoleTargetTypeFromString;
virDomainGraphicsListenSetAddress;
virDomainGraphicsListenSetNetwork;
virDomainGraphicsListenSetType;
-virDomainGraphicsSpiceAgentFileTransferTypeFromString;
-virDomainGraphicsSpiceAgentFileTransferTypeToString;
virDomainGraphicsSpiceChannelModeTypeFromString;
virDomainGraphicsSpiceChannelModeTypeToString;
virDomainGraphicsSpiceChannelNameTypeFromString;
virDomainGraphicsSpiceChannelNameTypeToString;
-virDomainGraphicsSpiceClipboardCopypasteTypeFromString;
-virDomainGraphicsSpiceClipboardCopypasteTypeToString;
virDomainGraphicsSpiceImageCompressionTypeFromString;
virDomainGraphicsSpiceImageCompressionTypeToString;
virDomainGraphicsSpiceJpegCompressionTypeFromString;
virDomainPausedReasonTypeToString;
virDomainPCIRombarModeTypeFromString;
virDomainPCIRombarModeTypeToString;
-virDomainPMStateTypeFromString;
-virDomainPMStateTypeToString;
virDomainPMSuspendedReasonTypeFromString;
virDomainPMSuspendedReasonTypeToString;
virDomainRedirdevBusTypeFromString;
virSetUIDGID;
virSetUIDGIDWithCaps;
virStrIsPrint;
+virTristateBoolTypeFromString;
+virTristateBoolTypeToString;
virUpdateSelfLastChanged;
virValidateWWN;
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"
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"));
}
/* 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"));
}
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) {
}
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) {
}
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;
}
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");
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: "
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: "
}
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",
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"));
VIR_LOG_INIT("util.util");
+VIR_ENUM_IMPL(virTristateBool, VIR_TRISTATE_BOOL_LAST,
+ "default",
+ "yes",
+ "no")
+
#ifndef WIN32
int virSetInherit(int fd, bool inherit)
# 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;
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__ */