]> xenbits.xensource.com Git - libvirt.git/commitdiff
util: add virFirewallDPolicyExists()
authorEric Garver <eric@garver.life>
Thu, 22 Sep 2022 15:13:21 +0000 (11:13 -0400)
committerLaine Stump <laine@redhat.com>
Sat, 5 Nov 2022 18:34:42 +0000 (14:34 -0400)
Signed-off-by: Eric Garver <eric@garver.life>
Reviewed-by: Laine Stump <laine@redhat.com>
src/libvirt_private.syms
src/util/virfirewalld.c
src/util/virfirewalld.h

index e150251062a90112d58e471b25696729bc87be5e..97ff2a43e48a04368baa5cbcae95590d90e9da4d 100644 (file)
@@ -2365,6 +2365,7 @@ virFirewallDGetVersion;
 virFirewallDGetZones;
 virFirewallDInterfaceSetZone;
 virFirewallDIsRegistered;
+virFirewallDPolicyExists;
 virFirewallDSynchronize;
 virFirewallDZoneExists;
 
index 0912508dbc451333a0559b41ff15a9e033e02942..ad879164c3a83310195c957328965fe7dc752659 100644 (file)
@@ -296,6 +296,37 @@ virFirewallDZoneExists(const char *match)
 }
 
 
+/**
+ * virFirewallDPolicyExists:
+ * @match: name of policy to look for
+ *
+ * Returns true if the requested policy exists, or false if it doesn't exist
+ */
+bool
+virFirewallDPolicyExists(const char *match)
+{
+    size_t npolicies = 0, i;
+    char **policies = NULL;
+    bool result = false;
+
+    if (virFirewallDGetPolicies(&policies, &npolicies) < 0)
+        goto cleanup;
+
+    for (i = 0; i < npolicies; i++) {
+        if (STREQ_NULLABLE(policies[i], match))
+            result = true;
+    }
+
+ cleanup:
+    VIR_DEBUG("Requested policy '%s' %s exist",
+              match, result ? "does" : "doesn't");
+    for (i = 0; i < npolicies; i++)
+       VIR_FREE(policies[i]);
+    VIR_FREE(policies);
+    return result;
+}
+
+
 /**
  * virFirewallDApplyRule:
  * @layer:        which layer to apply the rule to
index ef05896e2b8bc1dec89a9285234145d5805c7f72..fa4c9e702ccbf2266bee0cbd77a68cd80e1febaf 100644 (file)
@@ -35,6 +35,7 @@ int virFirewallDIsRegistered(void);
 int virFirewallDGetZones(char ***zones, size_t *nzones);
 int virFirewallDGetPolicies(char ***policies, size_t *npolicies);
 bool virFirewallDZoneExists(const char *match);
+bool virFirewallDPolicyExists(const char *match);
 int virFirewallDApplyRule(virFirewallLayer layer,
                           char **args, size_t argsLen,
                           bool ignoreErrors,