diff --git a/src/Makefile.am b/src/Makefile.am index b3b1e172ff..ce199d1e93 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -672,6 +672,7 @@ libvirt_setuid_rpc_client_la_SOURCES = \ util/vircommand.c \ util/virconf.c \ util/virdbus.c \ + util/virenum.c \ util/virerror.c \ util/virevent.c \ util/vireventpoll.c \ @@ -882,6 +883,8 @@ libvirt_nss_la_SOURCES = \ util/virbuffer.h \ util/vircommand.c \ util/vircommand.h \ + util/virenum.c \ + util/virenum.h \ util/virerror.c \ util/virerror.h \ util/virfile.c \ diff --git a/src/access/viraccessperm.h b/src/access/viraccessperm.h index ce3865b359..ed1f7168ca 100644 --- a/src/access/viraccessperm.h +++ b/src/access/viraccessperm.h @@ -23,6 +23,7 @@ # include "internal.h" # include "virutil.h" +# include "virenum.h" typedef enum { /** diff --git a/src/conf/capabilities.c b/src/conf/capabilities.c index 47308700bb..64c04d9774 100644 --- a/src/conf/capabilities.c +++ b/src/conf/capabilities.c @@ -41,6 +41,7 @@ #include "virstring.h" #include "virtypedparam.h" #include "viruuid.h" +#include "virenum.h" #define VIR_FROM_THIS VIR_FROM_CAPABILITIES diff --git a/src/conf/cpu_conf.h b/src/conf/cpu_conf.h index 6e810e5486..c98db65693 100644 --- a/src/conf/cpu_conf.h +++ b/src/conf/cpu_conf.h @@ -27,6 +27,7 @@ # include "virbitmap.h" # include "virarch.h" # include "numa_conf.h" +# include "virenum.h" # define VIR_CPU_VENDOR_ID_LENGTH 12 diff --git a/src/conf/device_conf.h b/src/conf/device_conf.h index 7a3455f99f..b3299ac69d 100644 --- a/src/conf/device_conf.h +++ b/src/conf/device_conf.h @@ -31,6 +31,7 @@ # include "virbuffer.h" # include "virpci.h" # include "virnetdev.h" +# include "virenum.h" typedef enum { VIR_DOMAIN_DEVICE_ADDRESS_TYPE_NONE, diff --git a/src/conf/domain_capabilities.h b/src/conf/domain_capabilities.h index a9723fddd7..d31d346a7b 100644 --- a/src/conf/domain_capabilities.h +++ b/src/conf/domain_capabilities.h @@ -24,6 +24,7 @@ # include "internal.h" # include "domain_conf.h" # include "virautoclean.h" +# include "virenum.h" typedef const char * (*virDomainCapsValToStr)(int value); diff --git a/src/conf/domain_conf.h b/src/conf/domain_conf.h index ce6e5b4748..12eb71c197 100644 --- a/src/conf/domain_conf.h +++ b/src/conf/domain_conf.h @@ -56,6 +56,7 @@ # include "virtypedparam.h" # include "virsavecookie.h" # include "virresctrl.h" +# include "virenum.h" /* Flags for the 'type' field in virDomainDeviceDef */ typedef enum { diff --git a/src/conf/interface_conf.h b/src/conf/interface_conf.h index fd3fc7cba0..e56b158b6d 100644 --- a/src/conf/interface_conf.h +++ b/src/conf/interface_conf.h @@ -29,6 +29,7 @@ # include "virutil.h" # include "virthread.h" # include "device_conf.h" +# include "virenum.h" /* There is currently 3 types of interfaces */ diff --git a/src/conf/network_conf.h b/src/conf/network_conf.h index 4fba8f025d..5410a57c67 100644 --- a/src/conf/network_conf.h +++ b/src/conf/network_conf.h @@ -40,6 +40,7 @@ # include "networkcommon_conf.h" # include "virobject.h" # include "virmacmap.h" +# include "virenum.h" typedef enum { VIR_NETWORK_FORWARD_NONE = 0, diff --git a/src/conf/node_device_conf.h b/src/conf/node_device_conf.h index e8cb315e30..510624968f 100644 --- a/src/conf/node_device_conf.h +++ b/src/conf/node_device_conf.h @@ -31,6 +31,7 @@ # include "virvhba.h" # include "device_conf.h" # include "storage_adapter_conf.h" +# include "virenum.h" # include diff --git a/src/conf/numa_conf.h b/src/conf/numa_conf.h index 1e389397a7..ae1793a950 100644 --- a/src/conf/numa_conf.h +++ b/src/conf/numa_conf.h @@ -27,6 +27,7 @@ # include "virutil.h" # include "virbitmap.h" # include "virbuffer.h" +# include "virenum.h" typedef struct _virDomainNuma virDomainNuma; diff --git a/src/conf/nwfilter_conf.h b/src/conf/nwfilter_conf.h index de4c3b1d40..4366ccc4d1 100644 --- a/src/conf/nwfilter_conf.h +++ b/src/conf/nwfilter_conf.h @@ -33,6 +33,7 @@ # include "virsocketaddr.h" # include "virmacaddr.h" # include "virdomainobjlist.h" +# include "virenum.h" /* XXX * The config parser/structs should not be using platform specific diff --git a/src/conf/snapshot_conf.h b/src/conf/snapshot_conf.h index cc8f384bf7..5a762ccd96 100644 --- a/src/conf/snapshot_conf.h +++ b/src/conf/snapshot_conf.h @@ -25,6 +25,7 @@ # include "internal.h" # include "domain_conf.h" # include "moment_conf.h" +# include "virenum.h" /* Items related to snapshot state */ diff --git a/src/conf/storage_adapter_conf.h b/src/conf/storage_adapter_conf.h index 763e4ba0e9..81d73ea889 100644 --- a/src/conf/storage_adapter_conf.h +++ b/src/conf/storage_adapter_conf.h @@ -22,6 +22,7 @@ # include "virpci.h" # include "virxml.h" +# include "virenum.h" typedef enum { diff --git a/src/conf/storage_conf.h b/src/conf/storage_conf.h index d848fa0fb7..6e4f7c689a 100644 --- a/src/conf/storage_conf.h +++ b/src/conf/storage_conf.h @@ -31,6 +31,7 @@ # include "object_event.h" # include "storage_adapter_conf.h" # include "virautoclean.h" +# include "virenum.h" # include diff --git a/src/libvirt_private.syms b/src/libvirt_private.syms index 212adf53c1..6e64e77839 100644 --- a/src/libvirt_private.syms +++ b/src/libvirt_private.syms @@ -1784,6 +1784,17 @@ ebtablesContextNew; ebtablesRemoveForwardAllowIn; +# util/virenum.h +virEnumFromString; +virEnumToString; +virTristateBoolFromBool; +virTristateBoolTypeFromString; +virTristateBoolTypeToString; +virTristateSwitchFromBool; +virTristateSwitchTypeFromString; +virTristateSwitchTypeToString; + + # util/virerror.h virDispatchError; virErrorCopyNew; @@ -3187,8 +3198,6 @@ virUSBDeviceSetUsedBy; virDoesGroupExist; virDoesUserExist; virDoubleToStr; -virEnumFromString; -virEnumToString; virFormatIntDecimal; virFormatIntPretty; virGetDeviceID; @@ -3234,12 +3243,6 @@ virSetNonBlock; virSetSockReuseAddr; virSetUIDGID; virSetUIDGIDWithCaps; -virTristateBoolFromBool; -virTristateBoolTypeFromString; -virTristateBoolTypeToString; -virTristateSwitchFromBool; -virTristateSwitchTypeFromString; -virTristateSwitchTypeToString; virUpdateSelfLastChanged; virValidateWWN; virWaitForDevices; diff --git a/src/libxl/libxl_conf.c b/src/libxl/libxl_conf.c index 0c7a5f3dd5..4faef43945 100644 --- a/src/libxl/libxl_conf.c +++ b/src/libxl/libxl_conf.c @@ -48,6 +48,7 @@ #include "xen_common.h" #include "xen_xl.h" #include "virnetdevvportprofile.h" +#include "virenum.h" #define VIR_FROM_THIS VIR_FROM_LIBXL diff --git a/src/libxl/libxl_domain.h b/src/libxl/libxl_domain.h index 8ce5e9b2a9..769ee8ec4d 100644 --- a/src/libxl/libxl_domain.h +++ b/src/libxl/libxl_domain.h @@ -26,6 +26,7 @@ # include "domain_conf.h" # include "libxl_conf.h" # include "virchrdev.h" +# include "virenum.h" # define JOB_MASK(job) (job == 0 ? 0 : 1 << (job - 1)) # define DEFAULT_JOB_MASK \ diff --git a/src/locking/lock_daemon.c b/src/locking/lock_daemon.c index d204e60ca0..7da60fa3a9 100644 --- a/src/locking/lock_daemon.c +++ b/src/locking/lock_daemon.c @@ -45,6 +45,7 @@ #include "viruuid.h" #include "virstring.h" #include "virgettext.h" +#include "virenum.h" #include "locking/lock_daemon_dispatch.h" #include "locking/lock_protocol.h" diff --git a/src/logging/log_daemon.c b/src/logging/log_daemon.c index 36da4860ff..2f7634a6a9 100644 --- a/src/logging/log_daemon.c +++ b/src/logging/log_daemon.c @@ -44,6 +44,7 @@ #include "viruuid.h" #include "virstring.h" #include "virgettext.h" +#include "virenum.h" #include "log_daemon_dispatch.h" #include "log_protocol.h" diff --git a/src/lxc/lxc_domain.h b/src/lxc/lxc_domain.h index f4e9c378a9..2048481829 100644 --- a/src/lxc/lxc_domain.h +++ b/src/lxc/lxc_domain.h @@ -25,6 +25,7 @@ # include "vircgroup.h" # include "lxc_conf.h" # include "lxc_monitor.h" +# include "virenum.h" typedef enum { diff --git a/src/lxc/lxc_native.h b/src/lxc/lxc_native.h index 0939be346d..57725d3d2b 100644 --- a/src/lxc/lxc_native.h +++ b/src/lxc/lxc_native.h @@ -22,6 +22,7 @@ # define LIBVIRT_LXC_NATIVE_H # include "domain_conf.h" +# include "virenum.h" # define LXC_CONFIG_FORMAT "lxc-tools" diff --git a/src/network/leaseshelper.c b/src/network/leaseshelper.c index 21119b3fbb..4c23a55326 100644 --- a/src/network/leaseshelper.c +++ b/src/network/leaseshelper.c @@ -32,6 +32,7 @@ #include "viralloc.h" #include "virjson.h" #include "virlease.h" +#include "virenum.h" #include "configmake.h" #include "virgettext.h" diff --git a/src/qemu/qemu_agent.c b/src/qemu/qemu_agent.c index ea62b4b4a5..361db299a5 100644 --- a/src/qemu/qemu_agent.c +++ b/src/qemu/qemu_agent.c @@ -40,6 +40,7 @@ #include "virobject.h" #include "virstring.h" #include "base64.h" +#include "virenum.h" #define VIR_FROM_THIS VIR_FROM_QEMU diff --git a/src/qemu/qemu_capabilities.h b/src/qemu/qemu_capabilities.h index c6f6980684..1f341fc0cd 100644 --- a/src/qemu/qemu_capabilities.h +++ b/src/qemu/qemu_capabilities.h @@ -29,6 +29,7 @@ # include "domain_capabilities.h" # include "virfirmware.h" # include "virfilecache.h" +# include "virenum.h" /* * Internal flags to keep track of qemu command line capabilities diff --git a/src/qemu/qemu_command.h b/src/qemu/qemu_command.h index 77578155e6..9565a7a377 100644 --- a/src/qemu/qemu_command.h +++ b/src/qemu/qemu_command.h @@ -25,6 +25,7 @@ # include "domain_addr.h" # include "domain_conf.h" # include "vircommand.h" +# include "virenum.h" # include "capabilities.h" # include "qemu_block.h" # include "qemu_conf.h" diff --git a/src/qemu/qemu_domain.h b/src/qemu/qemu_domain.h index 8857044d41..06640a9510 100644 --- a/src/qemu/qemu_domain.h +++ b/src/qemu/qemu_domain.h @@ -39,6 +39,7 @@ # include "virobject.h" # include "logging/log_manager.h" # include "virdomainmomentobjlist.h" +# include "virenum.h" # define QEMU_DOMAIN_FORMAT_LIVE_FLAGS \ (VIR_DOMAIN_XML_SECURE) diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c index 7e5bbc3cc9..1b40567dee 100644 --- a/src/qemu/qemu_driver.c +++ b/src/qemu/qemu_driver.c @@ -102,6 +102,7 @@ #include "netdev_bandwidth_conf.h" #include "virqemu.h" #include "virdomainsnapshotobjlist.h" +#include "virenum.h" #define VIR_FROM_THIS VIR_FROM_QEMU diff --git a/src/qemu/qemu_firmware.c b/src/qemu/qemu_firmware.c index affa0d6334..4f5214f3db 100644 --- a/src/qemu/qemu_firmware.c +++ b/src/qemu/qemu_firmware.c @@ -34,6 +34,7 @@ #include "virlog.h" #include "virstring.h" #include "viralloc.h" +#include "virenum.h" #define VIR_FROM_THIS VIR_FROM_QEMU diff --git a/src/qemu/qemu_migration.h b/src/qemu/qemu_migration.h index ff7c765c60..828caf268d 100644 --- a/src/qemu/qemu_migration.h +++ b/src/qemu/qemu_migration.h @@ -25,6 +25,7 @@ # include "qemu_conf.h" # include "qemu_domain.h" # include "qemu_migration_params.h" +# include "virenum.h" /* * General function naming conventions: diff --git a/src/qemu/qemu_migration_cookie.h b/src/qemu/qemu_migration_cookie.h index 56678b008a..0c80b17e5e 100644 --- a/src/qemu/qemu_migration_cookie.h +++ b/src/qemu/qemu_migration_cookie.h @@ -20,6 +20,7 @@ # define LIBVIRT_QEMU_MIGRATION_COOKIE_H # include "qemu_migration_params.h" +# include "virenum.h" typedef enum { QEMU_MIGRATION_COOKIE_FLAG_GRAPHICS, diff --git a/src/qemu/qemu_migration_params.h b/src/qemu/qemu_migration_params.h index 303c266969..b7bc71edaf 100644 --- a/src/qemu/qemu_migration_params.h +++ b/src/qemu/qemu_migration_params.h @@ -29,6 +29,7 @@ # include "qemu_monitor.h" # include "qemu_conf.h" # include "virautoclean.h" +# include "virenum.h" typedef enum { QEMU_MIGRATION_CAP_XBZRLE, diff --git a/src/qemu/qemu_monitor.h b/src/qemu/qemu_monitor.h index 086195ff98..caf62af5e2 100644 --- a/src/qemu/qemu_monitor.h +++ b/src/qemu/qemu_monitor.h @@ -32,6 +32,7 @@ # include "device_conf.h" # include "cpu/cpu.h" # include "util/virgic.h" +# include "virenum.h" typedef struct _qemuMonitor qemuMonitor; typedef qemuMonitor *qemuMonitorPtr; diff --git a/src/qemu/qemu_monitor_json.c b/src/qemu/qemu_monitor_json.c index 8e6c3ccd63..c0564fdc2b 100644 --- a/src/qemu/qemu_monitor_json.c +++ b/src/qemu/qemu_monitor_json.c @@ -43,6 +43,7 @@ #include "virstring.h" #include "cpu/cpu_x86.h" #include "c-strcasestr.h" +#include "virenum.h" #ifdef WITH_DTRACE_PROBES # include "libvirt_qemu_probes.h" diff --git a/src/util/Makefile.inc.am b/src/util/Makefile.inc.am index 6b24245aa1..58874cca3c 100644 --- a/src/util/Makefile.inc.am +++ b/src/util/Makefile.inc.am @@ -49,6 +49,8 @@ UTIL_SOURCES = \ util/virebtables.c \ util/virebtables.h \ util/virendian.h \ + util/virenum.h \ + util/virenum.c \ util/virerror.c \ util/virerror.h \ util/virerrorpriv.h \ diff --git a/src/util/vircgroup.h b/src/util/vircgroup.h index 372009de4a..377e0fd870 100644 --- a/src/util/vircgroup.h +++ b/src/util/vircgroup.h @@ -24,6 +24,7 @@ # include "virutil.h" # include "virbitmap.h" +# include "virenum.h" struct _virCgroup; typedef struct _virCgroup virCgroup; diff --git a/src/util/virconf.h b/src/util/virconf.h index ff4c2b6615..d692e4a805 100644 --- a/src/util/virconf.h +++ b/src/util/virconf.h @@ -22,6 +22,7 @@ # define LIBVIRT_VIRCONF_H # include "virutil.h" +# include "virenum.h" /** * virConfType: diff --git a/src/util/virenum.c b/src/util/virenum.c new file mode 100644 index 0000000000..abbc74d28e --- /dev/null +++ b/src/util/virenum.c @@ -0,0 +1,84 @@ +/* + * virenum.c: enum value conversion helpers + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library. If not, see + * . + */ +#include + +#include "virenum.h" +#include "virstring.h" + +#define VIR_FROM_THIS VIR_FROM_NONE + +VIR_ENUM_IMPL(virTristateBool, VIR_TRISTATE_BOOL_LAST, + "default", + "yes", + "no", +); + +VIR_ENUM_IMPL(virTristateSwitch, VIR_TRISTATE_SWITCH_LAST, + "default", + "on", + "off", +); + + +virTristateBool +virTristateBoolFromBool(bool val) +{ + if (val) + return VIR_TRISTATE_BOOL_YES; + else + return VIR_TRISTATE_BOOL_NO; +} + + +virTristateSwitch +virTristateSwitchFromBool(bool val) +{ + if (val) + return VIR_TRISTATE_SWITCH_ON; + else + return VIR_TRISTATE_SWITCH_OFF; +} + + +int +virEnumFromString(const char * const *types, + unsigned int ntypes, + const char *type) +{ + size_t i; + if (!type) + return -1; + + for (i = 0; i < ntypes; i++) + if (STREQ(types[i], type)) + return i; + + return -1; +} + + +const char * +virEnumToString(const char * const *types, + unsigned int ntypes, + int type) +{ + if (type < 0 || type >= ntypes) + return NULL; + + return types[type]; +} diff --git a/src/util/virenum.h b/src/util/virenum.h new file mode 100644 index 0000000000..3ae1a70b72 --- /dev/null +++ b/src/util/virenum.h @@ -0,0 +1,80 @@ +/* + * virenum.h: enum value conversion helpers + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library. If not, see + * . + */ + +#ifndef LIBVIRT_VIRENUM_H +# define LIBVIRT_VIRENUM_H + +# include "internal.h" + +int +virEnumFromString(const char * const *types, + unsigned int ntypes, + const char *type); + +const char * +virEnumToString(const char * const *types, + unsigned int ntypes, + int type); + +# define VIR_ENUM_IMPL(name, lastVal, ...) \ + static const char *const name ## TypeList[] = { __VA_ARGS__ }; \ + const char *name ## TypeToString(int type) { \ + return virEnumToString(name ## TypeList, \ + ARRAY_CARDINALITY(name ## TypeList), \ + type); \ + } \ + int name ## TypeFromString(const char *type) { \ + return virEnumFromString(name ## TypeList, \ + ARRAY_CARDINALITY(name ## TypeList), \ + type); \ + } \ + verify(ARRAY_CARDINALITY(name ## TypeList) == lastVal) + +# define VIR_ENUM_DECL(name) \ + const char *name ## TypeToString(int type); \ + int name ## TypeFromString(const char*type) + +typedef enum { + VIR_TRISTATE_BOOL_ABSENT = 0, + VIR_TRISTATE_BOOL_YES, + VIR_TRISTATE_BOOL_NO, + + VIR_TRISTATE_BOOL_LAST +} virTristateBool; + +typedef enum { + VIR_TRISTATE_SWITCH_ABSENT = 0, + VIR_TRISTATE_SWITCH_ON, + VIR_TRISTATE_SWITCH_OFF, + + VIR_TRISTATE_SWITCH_LAST +} virTristateSwitch; + +VIR_ENUM_DECL(virTristateBool); +VIR_ENUM_DECL(virTristateSwitch); + +virTristateBool virTristateBoolFromBool(bool val); +virTristateSwitch virTristateSwitchFromBool(bool val); + +/* the two enums must be in sync to be able to use helpers interchangeably in + * some special cases */ +verify((int)VIR_TRISTATE_BOOL_YES == (int)VIR_TRISTATE_SWITCH_ON); +verify((int)VIR_TRISTATE_BOOL_NO == (int)VIR_TRISTATE_SWITCH_OFF); +verify((int)VIR_TRISTATE_BOOL_ABSENT == (int)VIR_TRISTATE_SWITCH_ABSENT); + +#endif /* LIBVIRT_VIRENUM_H */ diff --git a/src/util/virfirewalld.c b/src/util/virfirewalld.c index 7a730f2bea..1e30dadff3 100644 --- a/src/util/virfirewalld.c +++ b/src/util/virfirewalld.c @@ -31,6 +31,7 @@ #include "virutil.h" #include "virlog.h" #include "virdbus.h" +#include "virenum.h" #define VIR_FROM_THIS VIR_FROM_FIREWALLD diff --git a/src/util/virgic.h b/src/util/virgic.h index 371d04f708..e54d7ec9d2 100644 --- a/src/util/virgic.h +++ b/src/util/virgic.h @@ -22,6 +22,7 @@ # define LIBVIRT_VIRGIC_H # include "virutil.h" +# include "virenum.h" typedef enum { VIR_GIC_VERSION_NONE = 0, diff --git a/src/util/virjson.c b/src/util/virjson.c index 03547a9a28..bd50847418 100644 --- a/src/util/virjson.c +++ b/src/util/virjson.c @@ -30,6 +30,7 @@ #include "virstring.h" #include "virutil.h" #include "virbuffer.h" +#include "virenum.h" #if WITH_YAJL # include diff --git a/src/util/virkeycode.h b/src/util/virkeycode.h index 7120fb96e6..9e94d6f61e 100644 --- a/src/util/virkeycode.h +++ b/src/util/virkeycode.h @@ -23,6 +23,7 @@ # define LIBVIRT_VIRKEYCODE_H # include "virutil.h" +# include "virenum.h" VIR_ENUM_DECL(virKeycodeSet); int virKeycodeValueFromString(virKeycodeSet codeset, const char *keyname); diff --git a/src/util/virmdev.h b/src/util/virmdev.h index a0e64f67ae..784cee5bce 100644 --- a/src/util/virmdev.h +++ b/src/util/virmdev.h @@ -23,6 +23,7 @@ # include "virobject.h" # include "virutil.h" # include "virautoclean.h" +# include "virenum.h" typedef enum { VIR_MDEV_MODEL_TYPE_VFIO_PCI = 0, diff --git a/src/util/virnetdev.h b/src/util/virnetdev.h index e58c385dbe..7ca22de9a5 100644 --- a/src/util/virnetdev.h +++ b/src/util/virnetdev.h @@ -27,6 +27,7 @@ # include "virpci.h" # include "virnetdevvlan.h" # include "virautoclean.h" +# include "virenum.h" # ifdef HAVE_STRUCT_IFREQ typedef struct ifreq virIfreq; diff --git a/src/util/virnetdevmacvlan.h b/src/util/virnetdevmacvlan.h index 504a8c89ae..a33ea8f29e 100644 --- a/src/util/virnetdevmacvlan.h +++ b/src/util/virnetdevmacvlan.h @@ -26,6 +26,7 @@ # include "virnetdevbandwidth.h" # include "virnetdevvportprofile.h" # include "virnetdevvlan.h" +# include "virenum.h" /* the mode type for macvtap devices */ typedef enum { diff --git a/src/util/virnetdevvlan.h b/src/util/virnetdevvlan.h index c250181f69..d986300d2a 100644 --- a/src/util/virnetdevvlan.h +++ b/src/util/virnetdevvlan.h @@ -22,6 +22,7 @@ # include # include "virautoclean.h" +# include "virenum.h" typedef enum { VIR_NATIVE_VLAN_MODE_DEFAULT = 0, diff --git a/src/util/virnetdevvportprofile.h b/src/util/virnetdevvportprofile.h index 65b4779861..5506194001 100644 --- a/src/util/virnetdevvportprofile.h +++ b/src/util/virnetdevvportprofile.h @@ -23,6 +23,7 @@ # include "viruuid.h" # include "virutil.h" # include "virmacaddr.h" +# include "virenum.h" # define LIBVIRT_IFLA_VF_PORT_PROFILE_MAX 40 diff --git a/src/util/virpci.h b/src/util/virpci.h index 0a03927df8..664e141039 100644 --- a/src/util/virpci.h +++ b/src/util/virpci.h @@ -26,6 +26,7 @@ # include "virobject.h" # include "virutil.h" # include "virautoclean.h" +# include "virenum.h" typedef struct _virPCIDevice virPCIDevice; typedef virPCIDevice *virPCIDevicePtr; diff --git a/src/util/virperf.h b/src/util/virperf.h index f43b856723..e68baa527d 100644 --- a/src/util/virperf.h +++ b/src/util/virperf.h @@ -21,6 +21,7 @@ # include "virutil.h" # include "virautoclean.h" +# include "virenum.h" /* Some Intel processor families introduced some RDT (Resource Director * Technology) features to monitor or control shared resource based on diff --git a/src/util/virprocess.h b/src/util/virprocess.h index e3944d3f1b..8e5b0c2127 100644 --- a/src/util/virprocess.h +++ b/src/util/virprocess.h @@ -27,6 +27,7 @@ # include "internal.h" # include "virbitmap.h" # include "virutil.h" +# include "virenum.h" typedef enum { VIR_PROC_POLICY_NONE = 0, diff --git a/src/util/virresctrl.h b/src/util/virresctrl.h index 0aa8bf7ea3..abdeb594ee 100644 --- a/src/util/virresctrl.h +++ b/src/util/virresctrl.h @@ -23,7 +23,7 @@ # include "virbitmap.h" # include "virutil.h" - +# include "virenum.h" typedef enum { VIR_CACHE_TYPE_BOTH, diff --git a/src/util/virsecret.h b/src/util/virsecret.h index a44d1bcdb6..aaeb204f7c 100644 --- a/src/util/virsecret.h +++ b/src/util/virsecret.h @@ -26,6 +26,7 @@ # include "virutil.h" # include "virxml.h" +# include "virenum.h" VIR_ENUM_DECL(virSecretUsage); diff --git a/src/util/virstorageencryption.h b/src/util/virstorageencryption.h index 3fc4d970a1..68d879a63e 100644 --- a/src/util/virstorageencryption.h +++ b/src/util/virstorageencryption.h @@ -25,6 +25,7 @@ # include "virbuffer.h" # include "virsecret.h" # include "virutil.h" +# include "virenum.h" # include diff --git a/src/util/virstoragefile.h b/src/util/virstoragefile.h index 79cfb9cb40..763030eefa 100644 --- a/src/util/virstoragefile.h +++ b/src/util/virstoragefile.h @@ -31,6 +31,7 @@ # include "virutil.h" # include "virsecret.h" # include "virautoclean.h" +# include "virenum.h" /* Minimum header size required to probe all known formats with * virStorageFileProbeFormat, or obtain metadata from a known format. diff --git a/src/util/virsysinfo.h b/src/util/virsysinfo.h index 835ee4c62e..c0015834bc 100644 --- a/src/util/virsysinfo.h +++ b/src/util/virsysinfo.h @@ -25,6 +25,7 @@ # include "internal.h" # include "virutil.h" # include "virbuffer.h" +# include "virenum.h" typedef enum { VIR_SYSINFO_SMBIOS, diff --git a/src/util/virtypedparam.h b/src/util/virtypedparam.h index 911ae52f6c..112f2a2af9 100644 --- a/src/util/virtypedparam.h +++ b/src/util/virtypedparam.h @@ -24,6 +24,7 @@ # include "internal.h" # include "virutil.h" +# include "virenum.h" /** * VIR_TYPED_PARAM_MULTIPLE: diff --git a/src/util/virutil.c b/src/util/virutil.c index 3f214629ac..f0c30063f2 100644 --- a/src/util/virutil.c +++ b/src/util/virutil.c @@ -84,38 +84,6 @@ verify(sizeof(gid_t) <= sizeof(unsigned int) && VIR_LOG_INIT("util.util"); -VIR_ENUM_IMPL(virTristateBool, VIR_TRISTATE_BOOL_LAST, - "default", - "yes", - "no", -); - -VIR_ENUM_IMPL(virTristateSwitch, VIR_TRISTATE_SWITCH_LAST, - "default", - "on", - "off", -); - - -virTristateBool -virTristateBoolFromBool(bool val) -{ - if (val) - return VIR_TRISTATE_BOOL_YES; - else - return VIR_TRISTATE_BOOL_NO; -} - - -virTristateSwitch -virTristateSwitchFromBool(bool val) -{ - if (val) - return VIR_TRISTATE_SWITCH_ON; - else - return VIR_TRISTATE_SWITCH_OFF; -} - #ifndef WIN32 @@ -324,22 +292,6 @@ virParseVersionString(const char *str, unsigned long *version, return 0; } -int virEnumFromString(const char *const*types, - unsigned int ntypes, - const char *type) -{ - size_t i; - if (!type) - return -1; - - for (i = 0; i < ntypes; i++) - if (STREQ(types[i], type)) - return i; - - return -1; -} - - /** * Format @val as a base-10 decimal number, in the * buffer @buf of size @buflen. To allocate a suitable @@ -419,16 +371,6 @@ virFormatIntPretty(unsigned long long val, } -const char *virEnumToString(const char *const*types, - unsigned int ntypes, - int type) -{ - if (type < 0 || type >= ntypes) - return NULL; - - return types[type]; -} - /* Translates a device name of the form (regex) /^[fhv]d[a-z]+[0-9]*$/ * into the corresponding index and partition number * (e.g. sda0 => (0,0), hdz2 => (25,2), vdaa12 => (26,12)) diff --git a/src/util/virutil.h b/src/util/virutil.h index e537cc36cb..ded9b039e5 100644 --- a/src/util/virutil.h +++ b/src/util/virutil.h @@ -68,32 +68,6 @@ int virDiskNameParse(const char *name, int *disk, int *partition); int virDiskNameToIndex(const char* str); char *virIndexToDiskName(int idx, const char *prefix); -int virEnumFromString(const char *const*types, - unsigned int ntypes, - const char *type); - -const char *virEnumToString(const char *const*types, - unsigned int ntypes, - int type); - -# define VIR_ENUM_IMPL(name, lastVal, ...) \ - static const char *const name ## TypeList[] = { __VA_ARGS__ }; \ - const char *name ## TypeToString(int type) { \ - return virEnumToString(name ## TypeList, \ - ARRAY_CARDINALITY(name ## TypeList), \ - type); \ - } \ - int name ## TypeFromString(const char *type) { \ - return virEnumFromString(name ## TypeList, \ - ARRAY_CARDINALITY(name ## TypeList), \ - type); \ - } \ - verify(ARRAY_CARDINALITY(name ## TypeList) == lastVal) - -# define VIR_ENUM_DECL(name) \ - const char *name ## TypeToString(int type); \ - int name ## TypeFromString(const char*type) - /* No-op workarounds for functionality missing in mingw. */ # ifndef HAVE_GETUID static inline int getuid(void) @@ -176,34 +150,6 @@ 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; - -typedef enum { - VIR_TRISTATE_SWITCH_ABSENT = 0, - VIR_TRISTATE_SWITCH_ON, - VIR_TRISTATE_SWITCH_OFF, - - VIR_TRISTATE_SWITCH_LAST -} virTristateSwitch; - -VIR_ENUM_DECL(virTristateBool); -VIR_ENUM_DECL(virTristateSwitch); - -virTristateBool virTristateBoolFromBool(bool val); -virTristateSwitch virTristateSwitchFromBool(bool val); - -/* the two enums must be in sync to be able to use helpers interchangeably in - * some special cases */ -verify((int)VIR_TRISTATE_BOOL_YES == (int)VIR_TRISTATE_SWITCH_ON); -verify((int)VIR_TRISTATE_BOOL_NO == (int)VIR_TRISTATE_SWITCH_OFF); -verify((int)VIR_TRISTATE_BOOL_ABSENT == (int)VIR_TRISTATE_SWITCH_ABSENT); - unsigned int virGetListenFDs(void); char *virGetUNIXSocketPath(int fd); diff --git a/src/vmware/vmware_conf.h b/src/vmware/vmware_conf.h index 3c11d59fc0..93b424ef2f 100644 --- a/src/vmware/vmware_conf.h +++ b/src/vmware/vmware_conf.h @@ -26,6 +26,7 @@ # include "internal.h" # include "virdomainobjlist.h" # include "virthread.h" +# include "virenum.h" # define VIR_FROM_THIS VIR_FROM_VMWARE # define PROGRAM_SENTINEL ((char *)0x1) diff --git a/tools/virsh-domain-monitor.c b/tools/virsh-domain-monitor.c index ad739a9df5..d87475f6f6 100644 --- a/tools/virsh-domain-monitor.c +++ b/tools/virsh-domain-monitor.c @@ -35,6 +35,7 @@ #include "virxml.h" #include "virstring.h" #include "vsh-table.h" +#include "virenum.h" VIR_ENUM_DECL(virshDomainIOError); VIR_ENUM_IMPL(virshDomainIOError, diff --git a/tools/virsh-domain.c b/tools/virsh-domain.c index e8d5404acf..da087b74ae 100644 --- a/tools/virsh-domain.c +++ b/tools/virsh-domain.c @@ -55,6 +55,7 @@ #include "virsh-nodedev.h" #include "viruri.h" #include "vsh-table.h" +#include "virenum.h" /* Gnulib doesn't guarantee SA_SIGINFO support. */ #ifndef SA_SIGINFO diff --git a/tools/virsh-host.c b/tools/virsh-host.c index be3c2cf1cb..dfd22bc0fe 100644 --- a/tools/virsh-host.c +++ b/tools/virsh-host.c @@ -34,6 +34,7 @@ #include "virtypedparam.h" #include "virstring.h" #include "virfile.h" +#include "virenum.h" /* * "capabilities" command diff --git a/tools/virsh-network.c b/tools/virsh-network.c index 9adc63a8fa..bd5239ae66 100644 --- a/tools/virsh-network.c +++ b/tools/virsh-network.c @@ -29,6 +29,7 @@ #include "virtime.h" #include "conf/network_conf.h" #include "vsh-table.h" +#include "virenum.h" #define VIRSH_COMMON_OPT_NETWORK(_helpstr, cflags) \ {.name = "network", \ diff --git a/tools/virsh-nodedev.c b/tools/virsh-nodedev.c index 1f787dadf3..0dfefe3a2f 100644 --- a/tools/virsh-nodedev.c +++ b/tools/virsh-nodedev.c @@ -28,6 +28,7 @@ #include "virstring.h" #include "virtime.h" #include "conf/node_device_conf.h" +#include "virenum.h" /* * "nodedev-create" command diff --git a/tools/virsh-pool.c b/tools/virsh-pool.c index f8688fa1f2..c56ab2d90a 100644 --- a/tools/virsh-pool.c +++ b/tools/virsh-pool.c @@ -29,6 +29,7 @@ #include "virstring.h" #include "virtime.h" #include "vsh-table.h" +#include "virenum.h" #define VIRSH_COMMON_OPT_POOL_FULL(cflags) \ VIRSH_COMMON_OPT_POOL(N_("pool name or uuid"), cflags) diff --git a/tools/virsh-secret.c b/tools/virsh-secret.c index b9fc5ededf..b34ae12bbe 100644 --- a/tools/virsh-secret.c +++ b/tools/virsh-secret.c @@ -31,6 +31,7 @@ #include "virstring.h" #include "virtime.h" #include "vsh-table.h" +#include "virenum.h" static virSecretPtr virshCommandOptSecret(vshControl *ctl, const vshCmd *cmd, const char **name) diff --git a/tools/virsh-volume.c b/tools/virsh-volume.c index 59a75f3d8c..d800836fef 100644 --- a/tools/virsh-volume.c +++ b/tools/virsh-volume.c @@ -38,6 +38,7 @@ #include "virxml.h" #include "virstring.h" #include "vsh-table.h" +#include "virenum.h" #define VIRSH_COMMON_OPT_POOL_FULL \ VIRSH_COMMON_OPT_POOL(N_("pool name or uuid"), \ diff --git a/tools/virt-admin.c b/tools/virt-admin.c index 048c805f0a..4ff006ffcb 100644 --- a/tools/virt-admin.c +++ b/tools/virt-admin.c @@ -38,6 +38,7 @@ #include "virtime.h" #include "virt-admin-completer.h" #include "vsh-table.h" +#include "virenum.h" /* Gnulib doesn't guarantee SA_SIGINFO support. */ #ifndef SA_SIGINFO diff --git a/tools/virt-host-validate-common.h b/tools/virt-host-validate-common.h index c2e11dae01..94a5005d5d 100644 --- a/tools/virt-host-validate-common.h +++ b/tools/virt-host-validate-common.h @@ -25,6 +25,7 @@ # include "internal.h" # include "virutil.h" # include "virbitmap.h" +# include "virenum.h" typedef enum { VIR_HOST_VALIDATE_FAIL,