]> xenbits.xensource.com Git - libvirt.git/commitdiff
virDomainHostdevDef: Convert 'mode' field to proper enum type
authorMichal Privoznik <mprivozn@redhat.com>
Mon, 24 Apr 2023 11:15:27 +0000 (13:15 +0200)
committerMichal Privoznik <mprivozn@redhat.com>
Fri, 15 Sep 2023 08:34:59 +0000 (10:34 +0200)
Convert the field, adjust the XML parser to use
virXMLPropEnumDefault() and fill in missing cases to switch()
statements.

Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
src/conf/domain_audit.c
src/conf/domain_conf.c
src/conf/domain_conf.h
src/lxc/lxc_cgroup.c
src/lxc/lxc_controller.c
src/lxc/lxc_driver.c
src/lxc/lxc_hostdev.c
src/qemu/qemu_domain.c
src/qemu/qemu_migration.c
src/security/security_selinux.c

index ae875188bd74e04563ac84919c5cc910c2f0313e..d4d303a2143606129c4a350d4978d1acee32bd76 100644 (file)
@@ -351,7 +351,7 @@ virDomainAuditHostdev(virDomainObj *vm, virDomainHostdevDef *hostdev,
         return;
     }
 
-    switch ((virDomainHostdevMode) hostdev->mode) {
+    switch (hostdev->mode) {
     case VIR_DOMAIN_HOSTDEV_MODE_SUBSYS:
         switch ((virDomainHostdevSubsysType) hostdev->source.subsys.type) {
         case VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_PCI:
index 65b7b44ccbf793c02bd836cd2b9bdbbaa71cd7bb..c93f89ced6fb128c1acb1387a70d5cb45a207b3d 100644 (file)
@@ -2648,6 +2648,8 @@ virDomainHostdevDefClear(virDomainHostdevDef *def)
             break;
         }
         break;
+    case VIR_DOMAIN_HOSTDEV_MODE_LAST:
+        break;
     }
 }
 
@@ -12917,7 +12919,6 @@ virDomainHostdevDefParseXML(virDomainXMLOption *xmlopt,
 {
     virDomainHostdevDef *def;
     VIR_XPATH_NODE_AUTORESTORE(ctxt)
-    g_autofree char *mode = virXMLPropString(node, "mode");
     g_autofree char *type = virXMLPropString(node, "type");
 
     ctxt->node = node;
@@ -12925,15 +12926,11 @@ virDomainHostdevDefParseXML(virDomainXMLOption *xmlopt,
     if (!(def = virDomainHostdevDefNew()))
         goto error;
 
-    if (mode) {
-        if ((def->mode = virDomainHostdevModeTypeFromString(mode)) < 0) {
-            virReportError(VIR_ERR_CONFIG_UNSUPPORTED,
-                           _("unknown hostdev mode '%1$s'"), mode);
-            goto error;
-        }
-    } else {
-        def->mode = VIR_DOMAIN_HOSTDEV_MODE_SUBSYS;
-    }
+    if (virXMLPropEnumDefault(node, "mode", virDomainHostdevModeTypeFromString,
+                              VIR_XML_PROP_NONE,
+                              &def->mode,
+                              VIR_DOMAIN_HOSTDEV_MODE_SUBSYS) < 0)
+        goto error;
 
     switch (def->mode) {
     case VIR_DOMAIN_HOSTDEV_MODE_SUBSYS:
@@ -12947,6 +12944,7 @@ virDomainHostdevDefParseXML(virDomainXMLOption *xmlopt,
             goto error;
         break;
     default:
+    case VIR_DOMAIN_HOSTDEV_MODE_LAST:
         virReportError(VIR_ERR_INTERNAL_ERROR,
                        _("Unexpected hostdev mode %1$d"), def->mode);
         goto error;
@@ -14182,6 +14180,8 @@ virDomainHostdevMatch(virDomainHostdevDef *a,
         return virDomainHostdevMatchSubsys(a, b);
     case VIR_DOMAIN_HOSTDEV_MODE_CAPABILITIES:
         return virDomainHostdevMatchCaps(a, b);
+    case VIR_DOMAIN_HOSTDEV_MODE_LAST:
+        break;
     }
     return 0;
 }
@@ -26087,6 +26087,7 @@ virDomainHostdevDefFormat(virBuffer *buf,
         }
         break;
     default:
+    case VIR_DOMAIN_HOSTDEV_MODE_LAST:
         virReportError(VIR_ERR_INTERNAL_ERROR,
                        _("unexpected hostdev mode %1$d"), def->mode);
         return -1;
@@ -26139,6 +26140,8 @@ virDomainHostdevDefFormat(virBuffer *buf,
         if (virDomainHostdevDefFormatCaps(buf, def) < 0)
             return -1;
         break;
+    case VIR_DOMAIN_HOSTDEV_MODE_LAST:
+        break;
     }
 
     virDomainNetTeamingInfoFormat(def->teaming, buf);
index d6d0799f63e093e3948033795310e19bb362c643..1f977ef1c801c3fa62b8df34ad79b176e5cd0d47 100644 (file)
@@ -371,7 +371,7 @@ struct _virDomainHostdevDef {
      */
     virDomainNetDef *parentnet;
 
-    int mode; /* enum virDomainHostdevMode */
+    virDomainHostdevMode mode;
     virDomainStartupPolicy startupPolicy;
     bool managed;
     bool missing;
index bc39b16928ebe31ad7a12fa5b773ee61b3472d9d..21d9b456e8ef2562944dc19923034bf09647b2c0 100644 (file)
@@ -313,6 +313,7 @@ static int virLXCCgroupSetupDeviceACL(virDomainDef *def,
                 break;
             }
         default:
+        case VIR_DOMAIN_HOSTDEV_MODE_LAST:
             break;
         }
     }
index 6c204299986a7ece52112ed5d8e5a9e08a896311..e2d67d504d5a4165a8335f1d837b20d711d0f53b 100644 (file)
@@ -1837,6 +1837,7 @@ virLXCControllerSetupAllHostdevs(virLXCController *ctrl)
                 return -1;
             break;
         default:
+        case VIR_DOMAIN_HOSTDEV_MODE_LAST:
             virReportError(VIR_ERR_CONFIG_UNSUPPORTED,
                            _("Unsupported host device mode %1$s"),
                            virDomainHostdevModeTypeToString(def->mode));
index f3d3e4eb504b0e8990b6976bfd8918c458de4c2a..fb0301b8119f7918906a00f753ee672d277576f1 100644 (file)
@@ -3905,6 +3905,7 @@ lxcDomainAttachDeviceHostdevLive(virLXCDriver *driver,
         return lxcDomainAttachDeviceHostdevCapsLive(driver, vm, dev);
 
     default:
+    case VIR_DOMAIN_HOSTDEV_MODE_LAST:
         virReportError(VIR_ERR_CONFIG_UNSUPPORTED,
                        _("Unsupported host device mode %1$s"),
                        virDomainHostdevModeTypeToString(dev->data.hostdev->mode));
@@ -4328,6 +4329,7 @@ lxcDomainDetachDeviceHostdevLive(virLXCDriver *driver,
         return lxcDomainDetachDeviceHostdevCapsLive(vm, dev);
 
     default:
+    case VIR_DOMAIN_HOSTDEV_MODE_LAST:
         virReportError(VIR_ERR_CONFIG_UNSUPPORTED,
                        _("Unsupported host device mode %1$s"),
                        virDomainHostdevModeTypeToString(dev->data.hostdev->mode));
index 8fe02a4276cda4fdd8b9cf27bfae11efd50aec40..af3ce3e0ac75baf953db01acb31c6380f5763682 100644 (file)
@@ -100,6 +100,7 @@ int virLXCPrepareHostDevices(virLXCDriver *driver,
 
 
         default:
+        case VIR_DOMAIN_HOSTDEV_MODE_LAST:
             virReportError(VIR_ERR_CONFIG_UNSUPPORTED,
                            _("Unsupported hostdev mode %1$s"),
                            virDomainHostdevModeTypeToString(dev->mode));
index 069f145d26493e2bbd9c401c0abcb8323818845e..818e3822d070682e4cc6409c35dd0722a4023faf 100644 (file)
@@ -10678,7 +10678,7 @@ qemuDomainGetHostdevPath(virDomainHostdevDef *dev,
     g_autofree char *tmpPath = NULL;
     int perm = 0;
 
-    switch ((virDomainHostdevMode) dev->mode) {
+    switch (dev->mode) {
     case VIR_DOMAIN_HOSTDEV_MODE_SUBSYS:
         switch ((virDomainHostdevSubsysType)dev->source.subsys.type) {
         case VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_PCI:
index 801b904a73a4220c142e42fcfe715cebdead9224..9ed5c6e94b738ae90c6dc61cf5d035662cc537ed 100644 (file)
@@ -1280,7 +1280,7 @@ qemuMigrationSrcIsAllowedHostdev(const virDomainDef *def)
      * forbidden. */
     for (i = 0; i < def->nhostdevs; i++) {
         virDomainHostdevDef *hostdev = def->hostdevs[i];
-        switch ((virDomainHostdevMode)hostdev->mode) {
+        switch (hostdev->mode) {
         case VIR_DOMAIN_HOSTDEV_MODE_CAPABILITIES:
             virReportError(VIR_ERR_OPERATION_UNSUPPORTED, "%s",
                            _("cannot migrate a domain with <hostdev mode='capabilities'>"));
index 7914aba84d844f4397deb0a294fb922924b9961e..c3c92f35384fef60bb97797268e00499c5fbc047 100644 (file)
@@ -2345,6 +2345,7 @@ virSecuritySELinuxSetHostdevLabel(virSecurityManager *mgr,
         return virSecuritySELinuxSetHostdevCapsLabel(mgr, def, dev, vroot);
 
     default:
+    case VIR_DOMAIN_HOSTDEV_MODE_LAST:
         return 0;
     }
 }
@@ -2567,6 +2568,7 @@ virSecuritySELinuxRestoreHostdevLabel(virSecurityManager *mgr,
         return virSecuritySELinuxRestoreHostdevCapsLabel(mgr, dev, vroot);
 
     default:
+    case VIR_DOMAIN_HOSTDEV_MODE_LAST:
         return 0;
     }
 }