]> git.ipfire.org Git - thirdparty/libvirt.git/commitdiff
conf: Refactor virDomainDefOSValidate()
authorAndrea Bolognani <abologna@redhat.com>
Thu, 16 Jun 2022 09:30:30 +0000 (11:30 +0200)
committerAndrea Bolognani <abologna@redhat.com>
Fri, 1 Jul 2022 13:10:32 +0000 (15:10 +0200)
This makes it explicit that there are two possible scenarios
(whether or not firmware autoselection is in use) and will make
upcoming changes cleaner to implement.

Signed-off-by: Andrea Bolognani <abologna@redhat.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
src/conf/domain_validate.c

index 28b0481d4ec396573d05266a332236c4dcdbe359..a67c46255c42ae28e4dc2bf9b2ae3a998781cdc9 100644 (file)
@@ -1598,21 +1598,23 @@ static int
 virDomainDefOSValidate(const virDomainDef *def,
                        virDomainXMLOption *xmlopt)
 {
-    if (def->os.firmware &&
-        !(xmlopt->config.features & VIR_DOMAIN_DEF_FEATURE_FW_AUTOSELECT)) {
-        virReportError(VIR_ERR_XML_DETAIL, "%s",
-                       _("firmware auto selection not implemented for this driver"));
-        return -1;
-    }
+    virDomainLoaderDef *loader = def->os.loader;
 
-    if (!def->os.loader)
-        return 0;
+    if (def->os.firmware) {
+        if (!(xmlopt->config.features & VIR_DOMAIN_DEF_FEATURE_FW_AUTOSELECT)) {
+            virReportError(VIR_ERR_XML_DETAIL, "%s",
+                           _("firmware auto selection not implemented for this driver"));
+            return -1;
+        }
+    } else {
+        if (!loader)
+            return 0;
 
-    if (!def->os.loader->path &&
-        def->os.firmware == VIR_DOMAIN_OS_DEF_FIRMWARE_NONE) {
-        virReportError(VIR_ERR_XML_DETAIL, "%s",
-                       _("no loader path specified and firmware auto selection disabled"));
-        return -1;
+        if (!loader->path) {
+            virReportError(VIR_ERR_XML_DETAIL, "%s",
+                           _("no loader path specified and firmware auto selection disabled"));
+            return -1;
+        }
     }
 
     return 0;