]> git.ipfire.org Git - people/stevee/perl-ipset.git/commitdiff
Add support to delete sets.
authorStefan Schantl <stefan.schantl@ipfire.org>
Sun, 14 Aug 2022 16:37:34 +0000 (18:37 +0200)
committerStefan Schantl <stefan.schantl@ipfire.org>
Sun, 14 Aug 2022 16:37:34 +0000 (18:37 +0200)
IPSet.xs
t/IPSet.t

index 40d6295982fe8d64e257bc1dc759aee08efacddd..f52e7d94691d811e093a69e65570b835ae60b364 100644 (file)
--- a/IPSet.xs
+++ b/IPSet.xs
@@ -116,7 +116,36 @@ bool create_set(session, setname, typename, hashsize, maxelem)
        OUTPUT:
                RETVAL
        
-               
+
+bool
+delete_set(session, setname)
+       struct ipset_session *session;
+       const char *setname;
+
+       PREINIT:
+               enum ipset_cmd cmd = IPSET_CMD_DESTROY;
+
+       CODE:
+               // Assign the setname to the session data.
+               int r = ipset_session_data_set(session, IPSET_SETNAME, setname);
+               if (r < 0) {
+                       printf("Could not set setname: %s\n",
+                               ipset_session_report_msg(session));
+               }
+
+               r = ipset_cmd(session, cmd, 0);
+               if (r < 0) {
+                       printf("Command failed: %s\n",
+                               ipset_session_report_msg(session));
+
+                       RETVAL = false;
+               }
+
+               RETVAL = true;
+
+       OUTPUT:
+               RETVAL
+
 bool 
 setname_exists(session, setname)
        struct ipset_session *session;
index 3501bc31b96ab8b92c41846649f99975d8d8562c..458f241f7f70f8275bfe462ecdf7994ce1fa94ea 100644 (file)
--- a/t/IPSet.t
+++ b/t/IPSet.t
@@ -8,7 +8,7 @@
 use strict;
 use warnings;
 
-use Test::More tests => 3;
+use Test::More tests => 4;
 BEGIN { use_ok('IPSet') };
 
 #########################
@@ -29,3 +29,7 @@ ok($create_set, "Sucessfully created set: $setname.");
 # Check if the testset exists.
 my $exists = &IPSet::setname_exists($session, $setname);
 ok($exists, "The testset exists.");
+
+# Delete the testset.
+my $delete = &IPSet::delete_set($session, $setname);
+ok($delete, "Successfully deleted set.");