]> git.ipfire.org Git - thirdparty/libvirt.git/commitdiff
util: virFirewallDGetPolicies: gracefully handle older firewalld
authorEric Garver <eric@garver.life>
Thu, 10 Nov 2022 16:31:45 +0000 (11:31 -0500)
committerMichal Privoznik <mprivozn@redhat.com>
Wed, 16 Nov 2022 11:52:02 +0000 (12:52 +0100)
If the running firewalld doesn't support getPolicies() then we fallback
to the "libvirt" zone. Throwing an error log is excessive since we
gracefully fallback.

Avoids these logs:

error : virGDBusCallMethod:242 : error from service: \
GDBus.Error:org.freedesktop.DBus.Error.UnknownMethod

Fixes: ab56f84976e0 ("util: add virFirewallDGetPolicies()")
Signed-off-by: Eric Garver <eric@garver.life>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
src/util/virfirewalld.c

index ad879164c3a83310195c957328965fe7dc752659..d11e974cc2d555f2c7d871e7913469ae513fe474 100644 (file)
@@ -240,6 +240,7 @@ virFirewallDGetPolicies(char ***policies, size_t *npolicies)
     GDBusConnection *sysbus = virGDBusGetSystemBus();
     g_autoptr(GVariant) reply = NULL;
     g_autoptr(GVariant) array = NULL;
+    g_autoptr(virError) error = NULL;
 
     *npolicies = 0;
     *policies = NULL;
@@ -247,10 +248,12 @@ virFirewallDGetPolicies(char ***policies, size_t *npolicies)
     if (!sysbus)
         return -1;
 
+    error = g_new0(virError, 1);
+
     if (virGDBusCallMethod(sysbus,
                            &reply,
                            G_VARIANT_TYPE("(as)"),
-                           NULL,
+                           error,
                            VIR_FIREWALL_FIREWALLD_SERVICE,
                            "/org/fedoraproject/FirewallD1",
                            "org.fedoraproject.FirewallD1.policy",
@@ -258,6 +261,12 @@ virFirewallDGetPolicies(char ***policies, size_t *npolicies)
                            NULL) < 0)
         return -1;
 
+    if (error->level == VIR_ERR_ERROR) {
+        if (!virGDBusErrorIsUnknownMethod(error))
+            virReportErrorObject(error);
+        return -1;
+    }
+
     g_variant_get(reply, "(@as)", &array);
     *policies = g_variant_dup_strv(array, npolicies);