[libvirt] [PATCH] util: changing all the "enum" structures into typedef's in "src/util/" directory.
by Julio Faracco
In "src/util/" there are many enumeration (enum) structures. Sometimes, it's better using a typedef for variable types, function types and other usages. Other enumeration will be changed to typedef's in the future.
Signed-off-by: Julio Faracco <jcfaracco(a)gmail.com>
---
src/conf/domain_conf.c | 4 ++--
src/qemu/qemu_command.c | 12 ++++++------
src/qemu/qemu_command.h | 4 ++--
src/qemu/qemu_domain.c | 2 +-
src/qemu/qemu_driver.c | 16 ++++++++--------
src/qemu/qemu_process.c | 2 +-
src/qemu/qemu_process.h | 2 +-
src/storage/storage_backend.c | 2 +-
src/util/viraudit.c | 2 +-
src/util/viraudit.h | 6 +++---
src/util/virfile.c | 4 ++--
src/util/virfile.h | 8 ++++----
src/util/virhook.h | 24 ++++++++++++------------
src/util/virinitctl.h | 5 ++---
src/util/virnetdevmacvlan.c | 10 +++++-----
src/util/virnetdevmacvlan.h | 12 ++++++------
src/util/virnetdevvportprofile.c | 4 ++--
src/util/virnetdevvportprofile.h | 8 ++++----
src/util/virnuma.h | 4 ++--
src/util/virseclabel.h | 4 ++--
src/util/virstorageencryption.h | 4 ++--
src/util/virstoragefile.h | 28 ++++++++++++++--------------
src/util/virsysinfo.h | 4 ++--
tests/virstoragetest.c | 2 +-
24 files changed, 86 insertions(+), 87 deletions(-)
diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c
index c655bcf..402c234 100644
--- a/src/conf/domain_conf.c
+++ b/src/conf/domain_conf.c
@@ -4972,7 +4972,7 @@ virDomainDiskSourceParse(xmlNodePtr node,
memset(&host, 0, sizeof(host));
- switch ((enum virStorageType)src->type) {
+ switch ((virStorageType)src->type) {
case VIR_STORAGE_TYPE_FILE:
src->path = virXMLPropString(node, "file");
break;
@@ -14847,7 +14847,7 @@ virDomainDiskSourceFormat(virBufferPtr buf,
startupPolicy = virDomainStartupPolicyTypeToString(policy);
if (src->path || src->nhosts > 0 || src->srcpool || startupPolicy) {
- switch ((enum virStorageType)src->type) {
+ switch ((virStorageType)src->type) {
case VIR_STORAGE_TYPE_FILE:
virBufferAddLit(buf, "<source");
virBufferEscapeString(buf, " file='%s'", src->path);
diff --git a/src/qemu/qemu_command.c b/src/qemu/qemu_command.c
index 6d80042..474b8db 100644
--- a/src/qemu/qemu_command.c
+++ b/src/qemu/qemu_command.c
@@ -163,7 +163,7 @@ qemuPhysIfaceConnect(virDomainDefPtr def,
virQEMUDriverPtr driver,
virDomainNetDefPtr net,
virQEMUCapsPtr qemuCaps,
- enum virNetDevVPortProfileOp vmop)
+ virNetDevVPortProfileOp vmop)
{
int rc;
char *res_ifname = NULL;
@@ -3567,7 +3567,7 @@ qemuNetworkDriveGetPort(int protocol,
return ret;
}
- switch ((enum virStorageNetProtocol) protocol) {
+ switch ((virStorageNetProtocol) protocol) {
case VIR_STORAGE_NET_PROTOCOL_HTTP:
return 80;
@@ -3618,7 +3618,7 @@ qemuBuildNetworkDriveURI(int protocol,
virURIPtr uri = NULL;
size_t i;
- switch ((enum virStorageNetProtocol) protocol) {
+ switch ((virStorageNetProtocol) protocol) {
case VIR_STORAGE_NET_PROTOCOL_NBD:
if (nhosts != 1) {
virReportError(VIR_ERR_INTERNAL_ERROR,
@@ -3856,7 +3856,7 @@ qemuGetDriveSourceString(virStorageSourcePtr src,
}
}
- switch ((enum virStorageType) actualType) {
+ switch ((virStorageType) actualType) {
case VIR_STORAGE_TYPE_BLOCK:
case VIR_STORAGE_TYPE_FILE:
case VIR_STORAGE_TYPE_DIR:
@@ -7509,7 +7509,7 @@ qemuBuildInterfaceCommandLine(virCommandPtr cmd,
virQEMUCapsPtr qemuCaps,
int vlan,
int bootindex,
- enum virNetDevVPortProfileOp vmop,
+ virNetDevVPortProfileOp vmop,
bool standalone)
{
int ret = -1;
@@ -7704,7 +7704,7 @@ qemuBuildCommandLine(virConnectPtr conn,
const char *migrateFrom,
int migrateFd,
virDomainSnapshotObjPtr snapshot,
- enum virNetDevVPortProfileOp vmop,
+ virNetDevVPortProfileOp vmop,
qemuBuildCommandLineCallbacksPtr callbacks,
bool standalone)
{
diff --git a/src/qemu/qemu_command.h b/src/qemu/qemu_command.h
index 0866c6b..ecd1d45 100644
--- a/src/qemu/qemu_command.h
+++ b/src/qemu/qemu_command.h
@@ -75,7 +75,7 @@ virCommandPtr qemuBuildCommandLine(virConnectPtr conn,
const char *migrateFrom,
int migrateFd,
virDomainSnapshotObjPtr current_snapshot,
- enum virNetDevVPortProfileOp vmop,
+ virNetDevVPortProfileOp vmop,
qemuBuildCommandLineCallbacksPtr callbacks,
bool forXMLToArgv)
ATTRIBUTE_NONNULL(1) ATTRIBUTE_NONNULL(11);
@@ -195,7 +195,7 @@ int qemuPhysIfaceConnect(virDomainDefPtr def,
virQEMUDriverPtr driver,
virDomainNetDefPtr net,
virQEMUCapsPtr qemuCaps,
- enum virNetDevVPortProfileOp vmop);
+ virNetDevVPortProfileOp vmop);
int qemuOpenVhostNet(virDomainDefPtr def,
virDomainNetDefPtr net,
diff --git a/src/qemu/qemu_domain.c b/src/qemu/qemu_domain.c
index ab19738..3345474 100644
--- a/src/qemu/qemu_domain.c
+++ b/src/qemu/qemu_domain.c
@@ -2269,7 +2269,7 @@ qemuDomainCheckDiskPresence(virQEMUDriverPtr driver,
for (i = vm->def->ndisks; i > 0; i--) {
disk = vm->def->disks[i - 1];
const char *path = virDomainDiskGetSource(disk);
- enum virStorageFileFormat format = virDomainDiskGetFormat(disk);
+ virStorageFileFormat format = virDomainDiskGetFormat(disk);
if (!path)
continue;
diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c
index 69a7053..c87ae45 100644
--- a/src/qemu/qemu_driver.c
+++ b/src/qemu/qemu_driver.c
@@ -12307,13 +12307,13 @@ qemuDomainSnapshotPrepareDiskExternalBackingInactive(virDomainDiskDefPtr disk)
{
int actualType = virStorageSourceGetActualType(&disk->src);
- switch ((enum virStorageType) actualType) {
+ switch ((virStorageType) actualType) {
case VIR_STORAGE_TYPE_BLOCK:
case VIR_STORAGE_TYPE_FILE:
return 0;
case VIR_STORAGE_TYPE_NETWORK:
- switch ((enum virStorageNetProtocol) disk->src.protocol) {
+ switch ((virStorageNetProtocol) disk->src.protocol) {
case VIR_STORAGE_NET_PROTOCOL_NBD:
case VIR_STORAGE_NET_PROTOCOL_RBD:
case VIR_STORAGE_NET_PROTOCOL_SHEEPDOG:
@@ -12369,13 +12369,13 @@ qemuDomainSnapshotPrepareDiskExternalOverlayActive(virDomainSnapshotDiskDefPtr d
{
int actualType = virStorageSourceGetActualType(&disk->src);
- switch ((enum virStorageType) actualType) {
+ switch ((virStorageType) actualType) {
case VIR_STORAGE_TYPE_BLOCK:
case VIR_STORAGE_TYPE_FILE:
return 0;
case VIR_STORAGE_TYPE_NETWORK:
- switch ((enum virStorageNetProtocol) disk->src.protocol) {
+ switch ((virStorageNetProtocol) disk->src.protocol) {
case VIR_STORAGE_NET_PROTOCOL_GLUSTER:
return 0;
@@ -12417,7 +12417,7 @@ qemuDomainSnapshotPrepareDiskExternalOverlayInactive(virDomainSnapshotDiskDefPtr
{
int actualType = virStorageSourceGetActualType(&disk->src);
- switch ((enum virStorageType) actualType) {
+ switch ((virStorageType) actualType) {
case VIR_STORAGE_TYPE_BLOCK:
case VIR_STORAGE_TYPE_FILE:
return 0;
@@ -12514,13 +12514,13 @@ qemuDomainSnapshotPrepareDiskInternal(virConnectPtr conn,
actualType = virStorageSourceGetActualType(&disk->src);
- switch ((enum virStorageType) actualType) {
+ switch ((virStorageType) actualType) {
case VIR_STORAGE_TYPE_BLOCK:
case VIR_STORAGE_TYPE_FILE:
return 0;
case VIR_STORAGE_TYPE_NETWORK:
- switch ((enum virStorageNetProtocol) disk->src.protocol) {
+ switch ((virStorageNetProtocol) disk->src.protocol) {
case VIR_STORAGE_NET_PROTOCOL_NBD:
case VIR_STORAGE_NET_PROTOCOL_RBD:
case VIR_STORAGE_NET_PROTOCOL_SHEEPDOG:
@@ -12747,7 +12747,7 @@ qemuDomainSnapshotCreateSingleDiskActive(virQEMUDriverPtr driver,
VIR_STRDUP(persistSource, snap->src.path) < 0)
goto cleanup;
- switch ((enum virStorageType)snap->src.type) {
+ switch ((virStorageType)snap->src.type) {
case VIR_STORAGE_TYPE_BLOCK:
reuse = true;
/* fallthrough */
diff --git a/src/qemu/qemu_process.c b/src/qemu/qemu_process.c
index 0afad9d..bfabbc5 100644
--- a/src/qemu/qemu_process.c
+++ b/src/qemu/qemu_process.c
@@ -3606,7 +3606,7 @@ int qemuProcessStart(virConnectPtr conn,
int stdin_fd,
const char *stdin_path,
virDomainSnapshotObjPtr snapshot,
- enum virNetDevVPortProfileOp vmop,
+ virNetDevVPortProfileOp vmop,
unsigned int flags)
{
int ret;
diff --git a/src/qemu/qemu_process.h b/src/qemu/qemu_process.h
index 4176815..d99978f 100644
--- a/src/qemu/qemu_process.h
+++ b/src/qemu/qemu_process.h
@@ -57,7 +57,7 @@ int qemuProcessStart(virConnectPtr conn,
int stdin_fd,
const char *stdin_path,
virDomainSnapshotObjPtr snapshot,
- enum virNetDevVPortProfileOp vmop,
+ virNetDevVPortProfileOp vmop,
unsigned int flags);
typedef enum {
diff --git a/src/storage/storage_backend.c b/src/storage/storage_backend.c
index 946196b..5eec90d 100644
--- a/src/storage/storage_backend.c
+++ b/src/storage/storage_backend.c
@@ -736,7 +736,7 @@ virStorageBackendCreateQemuImgOpts(char **opts,
for (i = 0; i < VIR_STORAGE_FILE_FEATURE_LAST; i++) {
ignore_value(virBitmapGetBit(features, i, &b));
if (b) {
- switch ((enum virStorageFileFeature) i) {
+ switch ((virStorageFileFeature) i) {
case VIR_STORAGE_FILE_FEATURE_LAZY_REFCOUNTS:
if (STREQ_NULLABLE(compat, "0.10")) {
virReportError(VIR_ERR_CONFIG_UNSUPPORTED,
diff --git a/src/util/viraudit.c b/src/util/viraudit.c
index 33ed2f6..8023c60 100644
--- a/src/util/viraudit.c
+++ b/src/util/viraudit.c
@@ -82,7 +82,7 @@ void virAuditSend(virLogSourcePtr source,
const char *funcname,
const char *clienttty ATTRIBUTE_UNUSED,
const char *clientaddr ATTRIBUTE_UNUSED,
- enum virAuditRecordType type ATTRIBUTE_UNUSED, bool success,
+ virAuditRecordType type ATTRIBUTE_UNUSED, bool success,
const char *fmt, ...)
{
char *str = NULL;
diff --git a/src/util/viraudit.h b/src/util/viraudit.h
index cf3da6c..8101e50 100644
--- a/src/util/viraudit.h
+++ b/src/util/viraudit.h
@@ -26,11 +26,11 @@
# include "internal.h"
# include "virlog.h"
-enum virAuditRecordType {
+typedef enum {
VIR_AUDIT_RECORD_MACHINE_CONTROL,
VIR_AUDIT_RECORD_MACHINE_ID,
VIR_AUDIT_RECORD_RESOURCE,
-};
+} virAuditRecordType;
int virAuditOpen(void);
@@ -39,7 +39,7 @@ void virAuditLog(int enabled);
void virAuditSend(virLogSourcePtr source,
const char *filename, size_t linenr, const char *funcname,
const char *clienttty, const char *clientaddr,
- enum virAuditRecordType type, bool success,
+ virAuditRecordType type, bool success,
const char *fmt, ...)
ATTRIBUTE_FMT_PRINTF(9, 10);
diff --git a/src/util/virfile.c b/src/util/virfile.c
index da4e0a0..dc2f2b2 100644
--- a/src/util/virfile.c
+++ b/src/util/virfile.c
@@ -818,7 +818,7 @@ virFileNBDDeviceFindUnused(void)
int virFileNBDDeviceAssociate(const char *file,
- enum virStorageFileFormat fmt,
+ virStorageFileFormat fmt,
bool readonly,
char **dev)
{
@@ -887,7 +887,7 @@ int virFileLoopDeviceAssociate(const char *file,
}
int virFileNBDDeviceAssociate(const char *file,
- enum virStorageFileFormat fmt ATTRIBUTE_UNUSED,
+ virStorageFileFormat fmt ATTRIBUTE_UNUSED,
bool readonly ATTRIBUTE_UNUSED,
char **dev ATTRIBUTE_UNUSED)
{
diff --git a/src/util/virfile.h b/src/util/virfile.h
index 5d0d699..25678df 100644
--- a/src/util/virfile.h
+++ b/src/util/virfile.h
@@ -31,7 +31,7 @@
# include "internal.h"
# include "virstoragefile.h"
-typedef enum virFileCloseFlags {
+typedef enum {
VIR_FILE_CLOSE_PRESERVE_ERRNO = 1 << 0,
VIR_FILE_CLOSE_IGNORE_EBADF = 1 << 1,
VIR_FILE_CLOSE_DONT_LOG = 1 << 2,
@@ -83,10 +83,10 @@ typedef virFileWrapperFd *virFileWrapperFdPtr;
int virFileDirectFdFlag(void);
-enum virFileWrapperFdFlags {
+typedef enum {
VIR_FILE_WRAPPER_BYPASS_CACHE = (1 << 0),
VIR_FILE_WRAPPER_NON_BLOCKING = (1 << 1),
-};
+} virFileWrapperFdFlags;
virFileWrapperFdPtr virFileWrapperFdNew(int *fd,
const char *name,
@@ -116,7 +116,7 @@ int virFileLoopDeviceAssociate(const char *file,
char **dev);
int virFileNBDDeviceAssociate(const char *file,
- enum virStorageFileFormat fmt,
+ virStorageFileFormat fmt,
bool readonly,
char **dev);
diff --git a/src/util/virhook.h b/src/util/virhook.h
index 7b09ac5..5bc0a5f 100644
--- a/src/util/virhook.h
+++ b/src/util/virhook.h
@@ -26,32 +26,32 @@
# include "internal.h"
-enum virHookDriverType {
+typedef enum {
VIR_HOOK_DRIVER_DAEMON = 0, /* Daemon related events */
VIR_HOOK_DRIVER_QEMU, /* QEmu domains related events */
VIR_HOOK_DRIVER_LXC, /* LXC domains related events */
VIR_HOOK_DRIVER_NETWORK, /* network related events */
VIR_HOOK_DRIVER_LAST,
-};
+} virHookDriverType;
-enum virHookDaemonOpType {
+typedef enum {
VIR_HOOK_DAEMON_OP_START, /* daemon is about to start */
VIR_HOOK_DAEMON_OP_SHUTDOWN, /* daemon is about to shutdown */
VIR_HOOK_DAEMON_OP_RELOAD, /* driver reload with SIGHUP */
VIR_HOOK_DAEMON_OP_LAST,
-};
+} virHookDaemonOpType;
-enum virHookSubopType {
+typedef enum {
VIR_HOOK_SUBOP_NONE, /* no sub-operation */
VIR_HOOK_SUBOP_BEGIN, /* beginning of the operation */
VIR_HOOK_SUBOP_END, /* end of the operation */
VIR_HOOK_SUBOP_LAST,
-};
+} virHookSubopType;
-enum virHookQemuOpType {
+typedef enum {
VIR_HOOK_QEMU_OP_START, /* domain is about to start */
VIR_HOOK_QEMU_OP_STOPPED, /* domain has stopped */
VIR_HOOK_QEMU_OP_PREPARE, /* domain startup initiated */
@@ -62,9 +62,9 @@ enum virHookQemuOpType {
VIR_HOOK_QEMU_OP_ATTACH, /* domain is being attached to be libvirt */
VIR_HOOK_QEMU_OP_LAST,
-};
+} virHookQemuOpType;
-enum virHookLxcOpType {
+typedef enum {
VIR_HOOK_LXC_OP_START, /* domain is about to start */
VIR_HOOK_LXC_OP_STOPPED, /* domain has stopped */
VIR_HOOK_LXC_OP_PREPARE, /* domain startup initiated */
@@ -73,9 +73,9 @@ enum virHookLxcOpType {
VIR_HOOK_LXC_OP_RECONNECT, /* domain is being reconnected by libvirt */
VIR_HOOK_LXC_OP_LAST,
-};
+} virHookLxcOpType;
-enum virHookNetworkOpType {
+typedef enum {
VIR_HOOK_NETWORK_OP_START, /* network is about to start */
VIR_HOOK_NETWORK_OP_STARTED, /* network has start */
VIR_HOOK_NETWORK_OP_STOPPED, /* network has stopped */
@@ -83,7 +83,7 @@ enum virHookNetworkOpType {
VIR_HOOK_NETWORK_OP_IFACE_UNPLUGGED, /* an interface was unplugged from the network */
VIR_HOOK_NETWORK_OP_LAST,
-};
+} virHookNetworkOpType;
int virHookInitialize(void);
diff --git a/src/util/virinitctl.h b/src/util/virinitctl.h
index 6aeb1a6..75a9a50 100644
--- a/src/util/virinitctl.h
+++ b/src/util/virinitctl.h
@@ -24,8 +24,7 @@
#ifndef __VIR_INITCTL_H__
# define __VIR_INITCTL_H__
-typedef enum virInitctlRunLevel virInitctlRunLevel;
-enum virInitctlRunLevel {
+typedef enum {
VIR_INITCTL_RUNLEVEL_POWEROFF = 0,
VIR_INITCTL_RUNLEVEL_1 = 1,
VIR_INITCTL_RUNLEVEL_2 = 2,
@@ -35,7 +34,7 @@ enum virInitctlRunLevel {
VIR_INITCTL_RUNLEVEL_REBOOT = 6,
VIR_INITCTL_RUNLEVEL_LAST
-};
+} virInitctlRunLevel;
int virInitctlSetRunLevel(virInitctlRunLevel level);
diff --git a/src/util/virnetdevmacvlan.c b/src/util/virnetdevmacvlan.c
index 7bbf540..56a5f6b 100644
--- a/src/util/virnetdevmacvlan.c
+++ b/src/util/virnetdevmacvlan.c
@@ -434,7 +434,7 @@ struct virNetlinkCallbackData {
char *linkdev;
int vf;
unsigned char vmuuid[VIR_UUID_BUFLEN];
- enum virNetDevVPortProfileOp vmOp;
+ virNetDevVPortProfileOp vmOp;
unsigned int linkState;
};
@@ -748,7 +748,7 @@ virNetDevMacVLanVPortProfileRegisterCallback(const char *ifname,
const char *linkdev,
const unsigned char *vmuuid,
virNetDevVPortProfilePtr virtPortProfile,
- enum virNetDevVPortProfileOp vmOp)
+ virNetDevVPortProfileOp vmOp)
{
virNetlinkCallbackDataPtr calld = NULL;
@@ -803,13 +803,13 @@ virNetDevMacVLanVPortProfileRegisterCallback(const char *ifname,
int virNetDevMacVLanCreateWithVPortProfile(const char *tgifname,
const virMacAddr *macaddress,
const char *linkdev,
- enum virNetDevMacVLanMode mode,
+ virNetDevMacVLanMode mode,
bool withTap,
int vnet_hdr,
const unsigned char *vmuuid,
virNetDevVPortProfilePtr virtPortProfile,
char **res_ifname,
- enum virNetDevVPortProfileOp vmOp,
+ virNetDevVPortProfileOp vmOp,
char *stateDir,
virNetDevBandwidthPtr bandwidth)
{
@@ -1022,7 +1022,7 @@ int virNetDevMacVLanRestartWithVPortProfile(const char *cr_ifname,
const char *linkdev,
const unsigned char *vmuuid,
virNetDevVPortProfilePtr virtPortProfile,
- enum virNetDevVPortProfileOp vmOp)
+ virNetDevVPortProfileOp vmOp)
{
int rc = 0;
diff --git a/src/util/virnetdevmacvlan.h b/src/util/virnetdevmacvlan.h
index 225ddba..9b15a31 100644
--- a/src/util/virnetdevmacvlan.h
+++ b/src/util/virnetdevmacvlan.h
@@ -30,14 +30,14 @@
# include "virnetdevvportprofile.h"
/* the mode type for macvtap devices */
-enum virNetDevMacVLanMode {
+typedef enum {
VIR_NETDEV_MACVLAN_MODE_VEPA,
VIR_NETDEV_MACVLAN_MODE_PRIVATE,
VIR_NETDEV_MACVLAN_MODE_BRIDGE,
VIR_NETDEV_MACVLAN_MODE_PASSTHRU,
VIR_NETDEV_MACVLAN_MODE_LAST,
-};
+} virNetDevMacVLanMode;
VIR_ENUM_DECL(virNetDevMacVLanMode)
int virNetDevMacVLanCreate(const char *ifname,
@@ -55,13 +55,13 @@ int virNetDevMacVLanDelete(const char *ifname)
int virNetDevMacVLanCreateWithVPortProfile(const char *ifname,
const virMacAddr *macaddress,
const char *linkdev,
- enum virNetDevMacVLanMode mode,
+ virNetDevMacVLanMode mode,
bool withTap,
int vnet_hdr,
const unsigned char *vmuuid,
virNetDevVPortProfilePtr virtPortProfile,
char **res_ifname,
- enum virNetDevVPortProfileOp vmop,
+ virNetDevVPortProfileOp vmop,
char *stateDir,
virNetDevBandwidthPtr bandwidth)
ATTRIBUTE_NONNULL(2) ATTRIBUTE_NONNULL(3) ATTRIBUTE_NONNULL(7)
@@ -81,7 +81,7 @@ int virNetDevMacVLanRestartWithVPortProfile(const char *cr_ifname,
const char *linkdev,
const unsigned char *vmuuid,
virNetDevVPortProfilePtr virtPortProfile,
- enum virNetDevVPortProfileOp vmOp)
+ virNetDevVPortProfileOp vmOp)
ATTRIBUTE_NONNULL(1) ATTRIBUTE_NONNULL(2) ATTRIBUTE_NONNULL(3)
ATTRIBUTE_NONNULL(4) ATTRIBUTE_RETURN_CHECK;
@@ -90,7 +90,7 @@ int virNetDevMacVLanVPortProfileRegisterCallback(const char *ifname,
const char *linkdev,
const unsigned char *vmuuid,
virNetDevVPortProfilePtr virtPortProfile,
- enum virNetDevVPortProfileOp vmOp)
+ virNetDevVPortProfileOp vmOp)
ATTRIBUTE_NONNULL(1) ATTRIBUTE_NONNULL(2) ATTRIBUTE_NONNULL(3)
ATTRIBUTE_NONNULL(4) ATTRIBUTE_RETURN_CHECK;
#endif /* __UTIL_MACVTAP_H__ */
diff --git a/src/util/virnetdevvportprofile.c b/src/util/virnetdevvportprofile.c
index 8977275..7354b2c 100644
--- a/src/util/virnetdevvportprofile.c
+++ b/src/util/virnetdevvportprofile.c
@@ -1139,7 +1139,7 @@ virNetDevVPortProfileAssociate(const char *macvtap_ifname,
const char *linkdev,
int vf,
const unsigned char *vmuuid,
- enum virNetDevVPortProfileOp vmOp,
+ virNetDevVPortProfileOp vmOp,
bool setlink_only)
{
int rc = 0;
@@ -1202,7 +1202,7 @@ virNetDevVPortProfileDisassociate(const char *macvtap_ifname,
const virMacAddr *macvtap_macaddr,
const char *linkdev,
int vf,
- enum virNetDevVPortProfileOp vmOp)
+ virNetDevVPortProfileOp vmOp)
{
int rc = 0;
diff --git a/src/util/virnetdevvportprofile.h b/src/util/virnetdevvportprofile.h
index 3febf3a..ad063c5 100644
--- a/src/util/virnetdevvportprofile.h
+++ b/src/util/virnetdevvportprofile.h
@@ -40,7 +40,7 @@ enum virNetDevVPortProfile {
};
VIR_ENUM_DECL(virNetDevVPort)
-enum virNetDevVPortProfileOp {
+typedef enum {
VIR_NETDEV_VPORT_PROFILE_OP_CREATE,
VIR_NETDEV_VPORT_PROFILE_OP_SAVE,
VIR_NETDEV_VPORT_PROFILE_OP_RESTORE,
@@ -51,7 +51,7 @@ enum virNetDevVPortProfileOp {
VIR_NETDEV_VPORT_PROFILE_OP_NO_OP,
VIR_NETDEV_VPORT_PROFILE_OP_LAST
-};
+} virNetDevVPortProfileOp;
VIR_ENUM_DECL(virNetDevVPortProfileOp)
/* profile data for macvtap (VEPA) and openvswitch */
@@ -98,7 +98,7 @@ int virNetDevVPortProfileAssociate(const char *ifname,
const char *linkdev,
int vf,
const unsigned char *vmuuid,
- enum virNetDevVPortProfileOp vmOp,
+ virNetDevVPortProfileOp vmOp,
bool setlink_only)
ATTRIBUTE_NONNULL(3) ATTRIBUTE_NONNULL(4) ATTRIBUTE_NONNULL(6)
ATTRIBUTE_RETURN_CHECK;
@@ -108,7 +108,7 @@ int virNetDevVPortProfileDisassociate(const char *ifname,
const virMacAddr *macaddr,
const char *linkdev,
int vf,
- enum virNetDevVPortProfileOp vmOp)
+ virNetDevVPortProfileOp vmOp)
ATTRIBUTE_NONNULL(3) ATTRIBUTE_NONNULL(4)
ATTRIBUTE_RETURN_CHECK;
diff --git a/src/util/virnuma.h b/src/util/virnuma.h
index eee0225..8464b19 100644
--- a/src/util/virnuma.h
+++ b/src/util/virnuma.h
@@ -26,13 +26,13 @@
# include "virbitmap.h"
# include "virutil.h"
-enum virNumaTuneMemPlacementMode {
+typedef enum {
VIR_NUMA_TUNE_MEM_PLACEMENT_MODE_DEFAULT = 0,
VIR_NUMA_TUNE_MEM_PLACEMENT_MODE_STATIC,
VIR_NUMA_TUNE_MEM_PLACEMENT_MODE_AUTO,
VIR_NUMA_TUNE_MEM_PLACEMENT_MODE_LAST
-};
+} virNumaTuneMemPlacementMode;
VIR_ENUM_DECL(virNumaTuneMemPlacementMode)
diff --git a/src/util/virseclabel.h b/src/util/virseclabel.h
index 41b90bc..9e970a5 100644
--- a/src/util/virseclabel.h
+++ b/src/util/virseclabel.h
@@ -22,14 +22,14 @@
#ifndef __SECLABEL_H
# define __SECLABEL_H
-enum virDomainSeclabelType {
+typedef enum {
VIR_DOMAIN_SECLABEL_DEFAULT,
VIR_DOMAIN_SECLABEL_NONE,
VIR_DOMAIN_SECLABEL_DYNAMIC,
VIR_DOMAIN_SECLABEL_STATIC,
VIR_DOMAIN_SECLABEL_LAST
-};
+} virDomainSeclabelType;
/* Security configuration for domain */
typedef struct _virSecurityLabelDef virSecurityLabelDef;
diff --git a/src/util/virstorageencryption.h b/src/util/virstorageencryption.h
index 03c38a5..bf83d34 100644
--- a/src/util/virstorageencryption.h
+++ b/src/util/virstorageencryption.h
@@ -29,11 +29,11 @@
# include <libxml/tree.h>
-enum virStorageEncryptionSecretType {
+typedef enum {
VIR_STORAGE_ENCRYPTION_SECRET_TYPE_PASSPHRASE = 0,
VIR_STORAGE_ENCRYPTION_SECRET_TYPE_LAST
-};
+} virStorageEncryptionSecretType;
VIR_ENUM_DECL(virStorageEncryptionSecretType)
typedef struct _virStorageEncryptionSecret virStorageEncryptionSecret;
diff --git a/src/util/virstoragefile.h b/src/util/virstoragefile.h
index 148776e..8d6e610 100644
--- a/src/util/virstoragefile.h
+++ b/src/util/virstoragefile.h
@@ -42,7 +42,7 @@
* virStorageVolType, except we have an undetermined state, don't have
* a netdir type, and add a volume type for reference through a
* storage pool. */
-enum virStorageType {
+typedef enum {
VIR_STORAGE_TYPE_NONE,
VIR_STORAGE_TYPE_FILE,
VIR_STORAGE_TYPE_BLOCK,
@@ -51,12 +51,12 @@ enum virStorageType {
VIR_STORAGE_TYPE_VOLUME,
VIR_STORAGE_TYPE_LAST
-};
+} virStorageType;
VIR_ENUM_DECL(virStorage)
-enum virStorageFileFormat {
+typedef enum {
VIR_STORAGE_FILE_AUTO_SAFE = -2,
VIR_STORAGE_FILE_AUTO = -1,
VIR_STORAGE_FILE_NONE = 0,
@@ -84,15 +84,15 @@ enum virStorageFileFormat {
VIR_STORAGE_FILE_VMDK,
VIR_STORAGE_FILE_LAST,
-};
+} virStorageFileFormat;
VIR_ENUM_DECL(virStorageFileFormat);
-enum virStorageFileFeature {
+typedef enum {
VIR_STORAGE_FILE_FEATURE_LAZY_REFCOUNTS = 0,
VIR_STORAGE_FILE_FEATURE_LAST
-};
+} virStorageFileFeature;
VIR_ENUM_DECL(virStorageFileFeature);
@@ -117,7 +117,7 @@ struct _virStorageTimestamps {
/* Information related to network storage */
-enum virStorageNetProtocol {
+typedef enum {
VIR_STORAGE_NET_PROTOCOL_NBD,
VIR_STORAGE_NET_PROTOCOL_RBD,
VIR_STORAGE_NET_PROTOCOL_SHEEPDOG,
@@ -130,18 +130,18 @@ enum virStorageNetProtocol {
VIR_STORAGE_NET_PROTOCOL_TFTP,
VIR_STORAGE_NET_PROTOCOL_LAST
-};
+} virStorageNetProtocol;
VIR_ENUM_DECL(virStorageNetProtocol)
-enum virStorageNetHostTransport {
+typedef enum {
VIR_STORAGE_NET_HOST_TRANS_TCP,
VIR_STORAGE_NET_HOST_TRANS_UNIX,
VIR_STORAGE_NET_HOST_TRANS_RDMA,
VIR_STORAGE_NET_HOST_TRANS_LAST
-};
+} virStorageNetHostTransport;
VIR_ENUM_DECL(virStorageNetHostTransport)
@@ -160,7 +160,7 @@ struct _virStorageNetHostDef {
* Used for volume "type" disk to indicate how to represent
* the disk source if the specified "pool" is of iscsi type.
*/
-enum virStorageSourcePoolMode {
+typedef enum {
VIR_STORAGE_SOURCE_POOL_MODE_DEFAULT = 0,
/* Use the path as it shows up on host, e.g.
@@ -174,7 +174,7 @@ enum virStorageSourcePoolMode {
VIR_STORAGE_SOURCE_POOL_MODE_DIRECT,
VIR_STORAGE_SOURCE_POOL_MODE_LAST
-};
+} virStorageSourcePoolMode;
VIR_ENUM_DECL(virStorageSourcePoolMode)
@@ -190,13 +190,13 @@ struct _virStorageSourcePoolDef {
typedef virStorageSourcePoolDef *virStorageSourcePoolDefPtr;
-enum virStorageSecretType {
+typedef enum {
VIR_STORAGE_SECRET_TYPE_NONE,
VIR_STORAGE_SECRET_TYPE_UUID,
VIR_STORAGE_SECRET_TYPE_USAGE,
VIR_STORAGE_SECRET_TYPE_LAST
-};
+} virStorageSecretType;
typedef struct _virStorageDriverData virStorageDriverData;
typedef virStorageDriverData *virStorageDriverDataPtr;
diff --git a/src/util/virsysinfo.h b/src/util/virsysinfo.h
index fbb505b..6236ca6 100644
--- a/src/util/virsysinfo.h
+++ b/src/util/virsysinfo.h
@@ -28,11 +28,11 @@
# include "virutil.h"
# include "virbuffer.h"
-enum virSysinfoType {
+typedef enum {
VIR_SYSINFO_SMBIOS,
VIR_SYSINFO_LAST
-};
+} virSysinfoType;
typedef struct _virSysinfoProcessorDef virSysinfoProcessorDef;
typedef virSysinfoProcessorDef *virSysinfoProcessorDefPtr;
diff --git a/tests/virstoragetest.c b/tests/virstoragetest.c
index 018469a..d49098e 100644
--- a/tests/virstoragetest.c
+++ b/tests/virstoragetest.c
@@ -294,7 +294,7 @@ enum {
struct testChainData
{
const char *start;
- enum virStorageFileFormat format;
+ virStorageFileFormat format;
const testFileData *files[4];
int nfiles;
unsigned int flags;
--
1.7.10.4
10 years, 6 months
[libvirt] [PATCH 1/5] conf: changing all the "enum" structures into typedef's in "src/conf/" directory.
by Julio Faracco
In "src/conf/" there are many enumeration (enum) structures like "src/util" directory. Sometimes, it's better using a typedef for variable types, function types and other usages. Other enumeration and folders will be changed to typedef's in the future.
Most of the files changed in this commit included CPU (cpu_conf) enum structures.
Signed-off-by: Julio Faracco <jcfaracco(a)gmail.com>
---
src/conf/cpu_conf.c | 2 +-
src/conf/cpu_conf.h | 22 +++++++++++-----------
src/conf/device_conf.h | 4 ++--
src/cpu/cpu_powerpc.c | 2 +-
src/cpu/cpu_x86.c | 4 ++--
5 files changed, 17 insertions(+), 17 deletions(-)
diff --git a/src/conf/cpu_conf.c b/src/conf/cpu_conf.c
index a8b1b03..ebdaa19 100644
--- a/src/conf/cpu_conf.c
+++ b/src/conf/cpu_conf.c
@@ -176,7 +176,7 @@ virCPUDefCopy(const virCPUDef *cpu)
virCPUDefPtr
virCPUDefParseXML(xmlNodePtr node,
xmlXPathContextPtr ctxt,
- enum virCPUType mode)
+ virCPUType mode)
{
virCPUDefPtr def;
xmlNodePtr *nodes = NULL;
diff --git a/src/conf/cpu_conf.h b/src/conf/cpu_conf.h
index dbe7103..8c932ce 100644
--- a/src/conf/cpu_conf.h
+++ b/src/conf/cpu_conf.h
@@ -32,46 +32,46 @@
# define VIR_CPU_VENDOR_ID_LENGTH 12
-enum virCPUType {
+typedef enum {
VIR_CPU_TYPE_HOST,
VIR_CPU_TYPE_GUEST,
VIR_CPU_TYPE_AUTO,
VIR_CPU_TYPE_LAST
-};
+} virCPUType;
VIR_ENUM_DECL(virCPU)
-enum virCPUMode {
+typedef enum {
VIR_CPU_MODE_CUSTOM,
VIR_CPU_MODE_HOST_MODEL,
VIR_CPU_MODE_HOST_PASSTHROUGH,
VIR_CPU_MODE_LAST
-};
+} virCPUMode;
VIR_ENUM_DECL(virCPUMode)
-enum virCPUMatch {
+typedef enum {
VIR_CPU_MATCH_MINIMUM,
VIR_CPU_MATCH_EXACT,
VIR_CPU_MATCH_STRICT,
VIR_CPU_MATCH_LAST
-};
+} virCPUMatch;
VIR_ENUM_DECL(virCPUMatch)
-enum virCPUFallback {
+typedef enum {
VIR_CPU_FALLBACK_ALLOW,
VIR_CPU_FALLBACK_FORBID,
VIR_CPU_FALLBACK_LAST
-};
+} virCPUFallback;
VIR_ENUM_DECL(virCPUFallback)
-enum virCPUFeaturePolicy {
+typedef enum {
VIR_CPU_FEATURE_FORCE,
VIR_CPU_FEATURE_REQUIRE,
VIR_CPU_FEATURE_OPTIONAL,
@@ -79,7 +79,7 @@ enum virCPUFeaturePolicy {
VIR_CPU_FEATURE_FORBID,
VIR_CPU_FEATURE_LAST
-};
+} virCPUFeaturePolicy;
VIR_ENUM_DECL(virCPUFeaturePolicy)
@@ -140,7 +140,7 @@ virCPUDefCopy(const virCPUDef *cpu);
virCPUDefPtr
virCPUDefParseXML(xmlNodePtr node,
xmlXPathContextPtr ctxt,
- enum virCPUType mode);
+ virCPUType mode);
bool
virCPUDefIsEqual(virCPUDefPtr src,
diff --git a/src/conf/device_conf.h b/src/conf/device_conf.h
index 7986ca6..d66afd2 100644
--- a/src/conf/device_conf.h
+++ b/src/conf/device_conf.h
@@ -32,13 +32,13 @@
# include "virthread.h"
# include "virbuffer.h"
-enum virDeviceAddressPCIMulti {
+typedef enum {
VIR_DEVICE_ADDRESS_PCI_MULTI_DEFAULT = 0,
VIR_DEVICE_ADDRESS_PCI_MULTI_ON,
VIR_DEVICE_ADDRESS_PCI_MULTI_OFF,
VIR_DEVICE_ADDRESS_PCI_MULTI_LAST
-};
+} virDeviceAddressPCIMulti;
typedef struct _virDevicePCIAddress virDevicePCIAddress;
typedef virDevicePCIAddress *virDevicePCIAddressPtr;
diff --git a/src/cpu/cpu_powerpc.c b/src/cpu/cpu_powerpc.c
index 3b868bb..372272f 100644
--- a/src/cpu/cpu_powerpc.c
+++ b/src/cpu/cpu_powerpc.c
@@ -534,7 +534,7 @@ static int
ppcUpdate(virCPUDefPtr guest,
const virCPUDef *host)
{
- switch ((enum virCPUMode) guest->mode) {
+ switch ((virCPUMode) guest->mode) {
case VIR_CPU_MODE_HOST_MODEL:
case VIR_CPU_MODE_HOST_PASSTHROUGH:
guest->match = VIR_CPU_MATCH_EXACT;
diff --git a/src/cpu/cpu_x86.c b/src/cpu/cpu_x86.c
index 7328582..06fbfba 100644
--- a/src/cpu/cpu_x86.c
+++ b/src/cpu/cpu_x86.c
@@ -1615,7 +1615,7 @@ x86DecodeCPUData(virCPUDefPtr cpu,
static virCPUx86Data *
x86EncodePolicy(const virCPUDef *cpu,
const struct x86_map *map,
- enum virCPUFeaturePolicy policy)
+ virCPUFeaturePolicy policy)
{
struct x86_model *model;
virCPUx86Data *data = NULL;
@@ -2045,7 +2045,7 @@ static int
x86Update(virCPUDefPtr guest,
const virCPUDef *host)
{
- switch ((enum virCPUMode) guest->mode) {
+ switch ((virCPUMode) guest->mode) {
case VIR_CPU_MODE_CUSTOM:
return x86UpdateCustom(guest, host);
--
1.7.10.4
10 years, 6 months
[libvirt] [PATCH 0/2] qemu: support pci passthrough of devices in non-0 domain
by Laine Stump
qemu added support for this somewhere between 0.12 and 0.13, but
libvirt never caught wind of it, so we've been ignoring the domain for
all this time (not too surprising, since a non-0 PCI domain is very
rare).
Laine Stump (2):
qemu: add host-pci-multidomain capability
qemu: specify domain in host-side PCI addresses when needed/supported
src/qemu/qemu_capabilities.c | 4 +++
src/qemu/qemu_capabilities.h | 1 +
src/qemu/qemu_command.c | 13 ++++++-
tests/qemucapabilitiesdata/caps_1.2.2-1.caps | 1 +
tests/qemucapabilitiesdata/caps_1.3.1-1.caps | 1 +
tests/qemucapabilitiesdata/caps_1.4.2-1.caps | 1 +
tests/qemucapabilitiesdata/caps_1.5.3-1.caps | 1 +
tests/qemucapabilitiesdata/caps_1.6.0-1.caps | 1 +
tests/qemucapabilitiesdata/caps_1.6.50-1.caps | 1 +
tests/qemuhelptest.c | 3 +-
.../qemuxml2argv-hostdev-vfio-multidomain.args | 6 ++++
.../qemuxml2argv-hostdev-vfio-multidomain.xml | 33 +++++++++++++++++
.../qemuxml2argv-net-hostdev-multidomain.args | 7 ++++
.../qemuxml2argv-net-hostdev-multidomain.xml | 40 +++++++++++++++++++++
.../qemuxml2argv-net-hostdev-vfio-multidomain.args | 7 ++++
.../qemuxml2argv-net-hostdev-vfio-multidomain.xml | 41 ++++++++++++++++++++++
.../qemuxml2argv-net-hostdev-vfio.xml | 2 +-
.../qemuxml2argvdata/qemuxml2argv-net-hostdev.xml | 2 +-
tests/qemuxml2argvtest.c | 18 ++++++++++
19 files changed, 179 insertions(+), 4 deletions(-)
create mode 100644 tests/qemuxml2argvdata/qemuxml2argv-hostdev-vfio-multidomain.args
create mode 100644 tests/qemuxml2argvdata/qemuxml2argv-hostdev-vfio-multidomain.xml
create mode 100644 tests/qemuxml2argvdata/qemuxml2argv-net-hostdev-multidomain.args
create mode 100644 tests/qemuxml2argvdata/qemuxml2argv-net-hostdev-multidomain.xml
create mode 100644 tests/qemuxml2argvdata/qemuxml2argv-net-hostdev-vfio-multidomain.args
create mode 100644 tests/qemuxml2argvdata/qemuxml2argv-net-hostdev-vfio-multidomain.xml
--
1.9.0
10 years, 6 months
[libvirt] lxc: shutdown $domain broken in 1.2.2
by Stephan Sachse
host: centos-6.5
kernel: 3.13.2-4.el6.x86_64
guest: fedora20
since libvirt-1.2.2 i can not shutdown this domain. works fine with
libvirt-1.2.1
# virsh shutdown fedora2
error: Failed to shutdown domain fedora2
error: Mount namespaces are not available on this platform: Function
not implemented
from the logfile: 14478: error : virProcessRunInMountNamespace:982 :
Mount namespaces are not available on this platform: Function not
implemented
the buildhost for the rpm is a centos-6.5 system with kernel 3.1.8
(dont ask! its a vserver system) and the test for "setns" failed
configure:9592: checking for setns
configure:9592: gcc -std=gnu99 -o conftest -g -O2 conftest.c >&5
/tmp/cchlir6v.o: In function `main':
/builddir/build/BUILD/libvirt-1.2.2/conftest.c:184: undefined
reference to `setns'
collect2: ld returned 1 exit status
setns() was added in glibc-2.14 centos6 has glibc-2.12
attached is a fix for this problem.
stolen from: http://cgit.freedesktop.org/systemd/systemd/commit/src/shared/missing.h?i...
/stephan
--
Software is like sex, it's better when it's free!
10 years, 6 months
[libvirt] [PATCH 1/2] virsh: Replace list element to defined variable
by Li Yang
Signed-off-by: Li Yang <liyang.fnst(a)cn.fujitsu.com>
---
tools/virsh-secret.c | 2 +-
1 files changed, 1 insertions(+), 1 deletions(-)
diff --git a/tools/virsh-secret.c b/tools/virsh-secret.c
index 47974fe..e996c72 100644
--- a/tools/virsh-secret.c
+++ b/tools/virsh-secret.c
@@ -558,7 +558,7 @@ cmdSecretList(vshControl *ctl, const vshCmd *cmd ATTRIBUTE_UNUSED)
const char *usageStr = virSecretUsageTypeTypeToString(usageType);
char uuid[VIR_UUID_STRING_BUFLEN];
- if (virSecretGetUUIDString(list->secrets[i], uuid) < 0) {
+ if (virSecretGetUUIDString(sec, uuid) < 0) {
vshError(ctl, "%s", _("Failed to get uuid of secret"));
goto cleanup;
}
--
1.7.1
10 years, 6 months
[libvirt] [PATCH 0/2] virstoragefile cleanups
by Eric Blake
I found these cleanups while trying to solve the regression
that John identified, where we are losing the correct
capacity read from a qcow2 header when it comes time to
dump a volume's xml. I still plan to get that regression
fixed before 1.2.4 goes out the door, but this was worth
posting in the meantime.
Eric Blake (2):
conf: avoid null deref during storage probe
conf: drop extra storage probe
src/libvirt_private.syms | 1 -
src/storage/storage_backend_fs.c | 8 --------
src/storage/storage_backend_gluster.c | 5 -----
src/util/virstoragefile.c | 37 ++++++++++++++++-------------------
src/util/virstoragefile.h | 7 ++-----
5 files changed, 19 insertions(+), 39 deletions(-)
--
1.9.0
10 years, 6 months
[libvirt] [PATCH v2 0/2] bhyve: implement connectDomainXMLToNative
by Roman Bogorodskiy
Changes from v1:
- Return both bhyveload and bhyve commands, not only bhyve.
Roman Bogorodskiy (2):
bhyve: improve bhyve_command.c testability
bhyve: implement connectDomainXMLToNative
src/bhyve/bhyve_command.c | 85 +++++++++++++++++++++++++----------------------
src/bhyve/bhyve_command.h | 8 +++--
src/bhyve/bhyve_driver.c | 59 ++++++++++++++++++++++++++++++++
src/bhyve/bhyve_process.c | 10 +++---
tests/bhyvexml2argvtest.c | 2 +-
5 files changed, 117 insertions(+), 47 deletions(-)
--
1.9.0
10 years, 6 months
[libvirt] [PATCH] Fix vlan ID detection in udev interface driver
by Ján Tomko
Instead of guessing it from the interface name, look into
/proc/net/vlan/<interface>.
This works for devices not named <real_device>.<vlan ID>,
avoiding an error flood when virt-manager keeps asking about
them every second:
https://bugzilla.redhat.com/show_bug.cgi?id=966329
---
src/interface/interface_backend_udev.c | 67 ++++++++++++++++++++++++++--------
1 file changed, 51 insertions(+), 16 deletions(-)
diff --git a/src/interface/interface_backend_udev.c b/src/interface/interface_backend_udev.c
index b05ac0e..bec8c45 100644
--- a/src/interface/interface_backend_udev.c
+++ b/src/interface/interface_backend_udev.c
@@ -20,11 +20,13 @@
*/
#include <config.h>
+#include <ctype.h>
#include <errno.h>
#include <dirent.h>
#include <libudev.h>
#include "virerror.h"
+#include "virfile.h"
#include "c-ctype.h"
#include "datatypes.h"
#include "domain_conf.h"
@@ -966,31 +968,64 @@ udevGetIfaceDefVlan(struct udev *udev ATTRIBUTE_UNUSED,
const char *name,
virInterfaceDef *ifacedef)
{
- const char *vid;
+ char *procpath = NULL;
+ char *buf = NULL;
+ char *vid_pos, *dev_pos;
+ size_t vid_len, dev_len;
+ const char *vid_prefix = "VID: ";
+ const char *dev_prefix = "\nDevice: ";
+ int ret = -1;
+
+ if (virAsprintf(&procpath, "/proc/net/vlan/%s", name) < 0)
+ goto cleanup;
+
+ if (virFileReadAll(procpath, BUFSIZ, &buf) < 0)
+ goto cleanup;
- /* Find the DEVICE.VID again */
- vid = strrchr(name, '.');
- if (!vid) {
+ if ((vid_pos = strstr(buf, vid_prefix)) == NULL) {
virReportError(VIR_ERR_INTERNAL_ERROR,
_("failed to find the VID for the VLAN device '%s'"),
name);
- return -1;
+ goto cleanup;
}
+ vid_pos += strlen(vid_prefix);
- /* Set the VLAN specifics */
- if (VIR_STRDUP(ifacedef->data.vlan.tag, vid + 1) < 0)
- goto error;
- if (VIR_STRNDUP(ifacedef->data.vlan.devname,
- name, (vid - name)) < 0)
- goto error;
+ if ((vid_len = strspn(vid_pos, "0123456789")) == 0 ||
+ !isspace(vid_pos[vid_len])) {
+ virReportError(VIR_ERR_INTERNAL_ERROR,
+ _("failed to find the VID for the VLAN device '%s'"),
+ name);
+ goto cleanup;
+ }
- return 0;
+ if ((dev_pos = strstr(vid_pos + vid_len, dev_prefix)) == NULL) {
+ virReportError(VIR_ERR_INTERNAL_ERROR,
+ _("failed to find the real device for the VLAN device '%s'"),
+ name);
+ goto cleanup;
+ }
+ dev_pos += strlen(dev_prefix);
- error:
- VIR_FREE(ifacedef->data.vlan.tag);
- VIR_FREE(ifacedef->data.vlan.devname);
+ if ((dev_len = strcspn(dev_pos, "\n")) == 0) {
+ virReportError(VIR_ERR_INTERNAL_ERROR,
+ _("failed to find the real device for the VLAN device '%s'"),
+ name);
+ goto cleanup;
+ }
- return -1;
+ if (VIR_STRNDUP(ifacedef->data.vlan.tag, vid_pos, vid_len) < 0)
+ goto cleanup;
+ if (VIR_STRNDUP(ifacedef->data.vlan.devname, dev_pos, dev_len) < 0) {
+ VIR_FREE(ifacedef->data.vlan.tag);
+ goto cleanup;
+ }
+
+ ret = 0;
+
+ cleanup:
+ VIR_FREE(procpath);
+ VIR_FREE(buf);
+ return ret;
}
static virInterfaceDef * ATTRIBUTE_NONNULL(1)
--
1.8.3.2
10 years, 6 months
[libvirt] [PATCH 1/3] tests: Don't crash when creating the config object fails
by Guido Günther
As observed when building in a chroot and QEMU_USER doesn't exist
---
tests/qemuargv2xmltest.c | 3 +++
tests/qemuxml2argvtest.c | 3 +++
2 files changed, 6 insertions(+)
diff --git a/tests/qemuargv2xmltest.c b/tests/qemuargv2xmltest.c
index 6d7e23e..4cc3749 100644
--- a/tests/qemuargv2xmltest.c
+++ b/tests/qemuargv2xmltest.c
@@ -128,6 +128,9 @@ mymain(void)
int ret = 0;
driver.config = virQEMUDriverConfigNew(false);
+ if (driver.config == NULL)
+ return EXIT_FAILURE;
+
if ((driver.caps = testQemuCapsInit()) == NULL)
return EXIT_FAILURE;
diff --git a/tests/qemuxml2argvtest.c b/tests/qemuxml2argvtest.c
index 56854dc..13ed4f6 100644
--- a/tests/qemuxml2argvtest.c
+++ b/tests/qemuxml2argvtest.c
@@ -501,6 +501,9 @@ mymain(void)
}
driver.config = virQEMUDriverConfigNew(true);
+ if (driver.config == NULL)
+ return EXIT_FAILURE;
+
VIR_FREE(driver.config->spiceListen);
VIR_FREE(driver.config->vncListen);
--
1.9.1
10 years, 6 months
[libvirt] [PATCHv2] storageVolCreateXMLFrom: Allow multiple accesses to origvol
by Michal Privoznik
When creating a new volume, it is possible to copy data into it from
another already existing volume (referred to as @origvol). Obviously,
the read-only access to @origvol is required, which is thread safe
(probably not performance-wise though). However, with current code
both @newvol and @origvol are marked as building for the time of
copying data from the @origvol to @newvol. The rationale behind
is to disallow some operations on both @origvol and @newvol, e.g.
vol-wipe, vol-delete, vol-download. While it makes sense to not allow
such operations on partly copied mirror, but it doesn't make sense to
disallow the operations on the source (@origvol).
Signed-off-by: Michal Privoznik <mprivozn(a)redhat.com>
---
Diff to v1:
-introduced a counter in addition to not marking origvol as building
src/conf/storage_conf.h | 1 +
src/storage/storage_driver.c | 14 +++++++-------
2 files changed, 8 insertions(+), 7 deletions(-)
diff --git a/src/conf/storage_conf.h b/src/conf/storage_conf.h
index 9ad38e1..eae959c 100644
--- a/src/conf/storage_conf.h
+++ b/src/conf/storage_conf.h
@@ -64,6 +64,7 @@ struct _virStorageVolDef {
int type; /* enum virStorageVolType */
unsigned int building;
+ unsigned int in_use;
virStorageVolSource source;
virStorageSource target;
diff --git a/src/storage/storage_driver.c b/src/storage/storage_driver.c
index 2cb8347..a953dfd 100644
--- a/src/storage/storage_driver.c
+++ b/src/storage/storage_driver.c
@@ -1640,7 +1640,7 @@ storageVolDelete(virStorageVolPtr obj,
if (virStorageVolDeleteEnsureACL(obj->conn, pool->def, vol) < 0)
goto cleanup;
- if (vol->building) {
+ if (vol->building || vol->in_use) {
virReportError(VIR_ERR_OPERATION_INVALID,
_("volume '%s' is still being allocated."),
vol->name);
@@ -1912,8 +1912,8 @@ storageVolCreateXMLFrom(virStoragePoolPtr obj,
/* Drop the pool lock during volume allocation */
pool->asyncjobs++;
- origvol->building = 1;
newvol->building = 1;
+ origvol->in_use++;
virStoragePoolObjUnlock(pool);
if (origpool) {
@@ -1929,7 +1929,7 @@ storageVolCreateXMLFrom(virStoragePoolPtr obj,
virStoragePoolObjLock(origpool);
storageDriverUnlock(driver);
- origvol->building = 0;
+ origvol->in_use--;
newvol->building = 0;
allocation = newvol->target.allocation;
pool->asyncjobs--;
@@ -2010,7 +2010,7 @@ storageVolDownload(virStorageVolPtr obj,
if (virStorageVolDownloadEnsureACL(obj->conn, pool->def, vol) < 0)
goto cleanup;
- if (vol->building) {
+ if (vol->building || vol->in_use) {
virReportError(VIR_ERR_OPERATION_INVALID,
_("volume '%s' is still being allocated."),
vol->name);
@@ -2076,7 +2076,7 @@ storageVolUpload(virStorageVolPtr obj,
if (virStorageVolUploadEnsureACL(obj->conn, pool->def, vol) < 0)
goto cleanup;
- if (vol->building) {
+ if (vol->building || vol->in_use) {
virReportError(VIR_ERR_OPERATION_INVALID,
_("volume '%s' is still being allocated."),
vol->name);
@@ -2167,7 +2167,7 @@ storageVolResize(virStorageVolPtr obj,
if (virStorageVolResizeEnsureACL(obj->conn, pool->def, vol) < 0)
goto cleanup;
- if (vol->building) {
+ if (vol->building || vol->in_use) {
virReportError(VIR_ERR_OPERATION_INVALID,
_("volume '%s' is still being allocated."),
vol->name);
@@ -2474,7 +2474,7 @@ storageVolWipePattern(virStorageVolPtr obj,
if (virStorageVolWipePatternEnsureACL(obj->conn, pool->def, vol) < 0)
goto cleanup;
- if (vol->building) {
+ if (vol->building || vol->in_use) {
virReportError(VIR_ERR_OPERATION_INVALID,
_("volume '%s' is still being allocated."),
vol->name);
--
1.9.0
10 years, 6 months