[PATCH 05/14] virDomainSmartcardDef: Declare 'type' as virDomainSmartcardType

Peter Krempa pkrempa at redhat.com
Tue Oct 12 11:12:11 UTC 2021


Use 'virXMLPropEnum' to parse it and fix all switch statements which
didn't include the VIR_DOMAIN_SMARTCARD_TYPE_LAST case.

Signed-off-by: Peter Krempa <pkrempa at redhat.com>
---
 src/conf/domain_conf.c          | 23 +++++++----------------
 src/conf/domain_conf.h          |  2 +-
 src/qemu/qemu_command.c         |  1 +
 src/qemu/qemu_validate.c        |  1 +
 src/security/security_selinux.c | 10 ++++------
 5 files changed, 14 insertions(+), 23 deletions(-)

diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c
index 4799070bc4..aeb64c9c83 100644
--- a/src/conf/domain_conf.c
+++ b/src/conf/domain_conf.c
@@ -2884,6 +2884,7 @@ void virDomainSmartcardDefFree(virDomainSmartcardDef *def)
         virObjectUnref(def->data.passthru);
         break;

+    case VIR_DOMAIN_SMARTCARD_TYPE_LAST:
     default:
         break;
     }
@@ -11602,7 +11603,6 @@ virDomainSmartcardDefParseXML(virDomainXMLOption *xmlopt,
                               unsigned int flags)
 {
     g_autoptr(virDomainSmartcardDef) def = NULL;
-    g_autofree char *mode = NULL;
     g_autofree char *type = NULL;
     g_autofree xmlNodePtr *certificates = NULL;
     int n = 0;
@@ -11611,18 +11611,9 @@ virDomainSmartcardDefParseXML(virDomainXMLOption *xmlopt,
     ctxt->node = node;
     def = g_new0(virDomainSmartcardDef, 1);

-    mode = virXMLPropString(node, "mode");
-    if (mode == NULL) {
-        virReportError(VIR_ERR_XML_ERROR, "%s",
-                       _("missing smartcard device mode"));
-        return NULL;
-    }
-    if ((def->type = virDomainSmartcardTypeFromString(mode)) < 0) {
-        virReportError(VIR_ERR_CONFIG_UNSUPPORTED,
-                       _("unknown smartcard device mode: %s"),
-                       mode);
+    if (virXMLPropEnum(node, "mode", virDomainSmartcardTypeFromString,
+                       VIR_XML_PROP_REQUIRED, &def->type) < 0)
         return NULL;
-    }

     switch (def->type) {
     case VIR_DOMAIN_SMARTCARD_TYPE_HOST:
@@ -11687,9 +11678,9 @@ virDomainSmartcardDefParseXML(virDomainXMLOption *xmlopt,

         break;

+    case VIR_DOMAIN_SMARTCARD_TYPE_LAST:
     default:
-        virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
-                       _("unknown smartcard mode"));
+        virReportEnumRangeError(virDomainSmartcardType, def->type);
         return NULL;
     }

@@ -25406,9 +25397,9 @@ virDomainSmartcardDefFormat(virBuffer *buf,
         virDomainChrSourceDefFormat(&childBuf, def->data.passthru, flags);
         break;

+    case VIR_DOMAIN_SMARTCARD_TYPE_LAST:
     default:
-        virReportError(VIR_ERR_INTERNAL_ERROR,
-                       _("unexpected smartcard type %d"), def->type);
+        virReportEnumRangeError(virDomainSmartcardType, def->type);
         return -1;
     }
     virDomainDeviceInfoFormat(&childBuf, &def->info, flags);
diff --git a/src/conf/domain_conf.h b/src/conf/domain_conf.h
index c1871b1757..55be01bbcf 100644
--- a/src/conf/domain_conf.h
+++ b/src/conf/domain_conf.h
@@ -1320,7 +1320,7 @@ typedef enum {
 #define VIR_DOMAIN_SMARTCARD_DEFAULT_DATABASE "/etc/pki/nssdb"

 struct _virDomainSmartcardDef {
-    int type; /* virDomainSmartcardType */
+    virDomainSmartcardType type;
     union {
         /* no extra data for 'host' */
         struct {
diff --git a/src/qemu/qemu_command.c b/src/qemu/qemu_command.c
index fae2d1569c..2d7a6ebde7 100644
--- a/src/qemu/qemu_command.c
+++ b/src/qemu/qemu_command.c
@@ -9146,6 +9146,7 @@ qemuBuildSmartcardCommandLine(virLogManager *logManager,
                           smartcard->info.alias);
         break;

+    case VIR_DOMAIN_SMARTCARD_TYPE_LAST:
     default:
         virReportEnumRangeError(virDomainSmartcardType, smartcard->type);
         return -1;
diff --git a/src/qemu/qemu_validate.c b/src/qemu/qemu_validate.c
index 9865e29637..48d5c172c5 100644
--- a/src/qemu/qemu_validate.c
+++ b/src/qemu/qemu_validate.c
@@ -2117,6 +2117,7 @@ qemuValidateDomainSmartcardDef(const virDomainSmartcardDef *def,
             return -1;
         break;

+    case VIR_DOMAIN_SMARTCARD_TYPE_LAST:
     default:
         virReportEnumRangeError(virDomainSmartcardType, def->type);
         return -1;
diff --git a/src/security/security_selinux.c b/src/security/security_selinux.c
index cc72453329..622a8f4c02 100644
--- a/src/security/security_selinux.c
+++ b/src/security/security_selinux.c
@@ -2696,10 +2696,9 @@ virSecuritySELinuxRestoreSecuritySmartcardCallback(virDomainDef *def,
         return virSecuritySELinuxRestoreChardevLabel(mgr, def,
                                                      dev->data.passthru, false);

+    case VIR_DOMAIN_SMARTCARD_TYPE_LAST:
     default:
-        virReportError(VIR_ERR_INTERNAL_ERROR,
-                       _("unknown smartcard type %d"),
-                       dev->type);
+        virReportEnumRangeError(virDomainSmartcardType, dev->type);
         return -1;
     }

@@ -3103,10 +3102,9 @@ virSecuritySELinuxSetSecuritySmartcardCallback(virDomainDef *def,
         return virSecuritySELinuxSetChardevLabel(mgr, def,
                                                  dev->data.passthru, false);

+    case VIR_DOMAIN_SMARTCARD_TYPE_LAST:
     default:
-        virReportError(VIR_ERR_INTERNAL_ERROR,
-                       _("unknown smartcard type %d"),
-                       dev->type);
+        virReportEnumRangeError(virDomainSmartcardType, dev->type);
         return -1;
     }

-- 
2.31.1




More information about the libvir-list mailing list