]> git.ipfire.org Git - people/stevee/perl-ipset.git/commitdiff
Add support for renaming sets.
authorStefan Schantl <stefan.schantl@ipfire.org>
Mon, 15 Aug 2022 10:19:35 +0000 (12:19 +0200)
committerStefan Schantl <stefan.schantl@ipfire.org>
Mon, 15 Aug 2022 10:19:35 +0000 (12:19 +0200)
Signed-off-by: Stefan Schantl <stefan.schantl@ipfire.org>
IPSet.xs
t/IPSet.t

index f52e7d94691d811e093a69e65570b835ae60b364..4f9e7713c35ce31c66559f9a35ec365735799692 100644 (file)
--- a/IPSet.xs
+++ b/IPSet.xs
@@ -146,6 +146,43 @@ delete_set(session, setname)
        OUTPUT:
                RETVAL
 
+bool
+rename_set(session, setname, new_setname)
+       struct ipset_session *session;
+       const char *setname;
+       const char *new_setname;
+
+       PREINIT:
+               enum ipset_cmd cmd = IPSET_CMD_RENAME;
+
+       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_session_data_set(session, IPSET_OPT_SETNAME2, new_setname);
+               if (r < 0) {
+                       printf("Could not assign new 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 458f241f7f70f8275bfe462ecdf7994ce1fa94ea..684dd3162a2ea9296c12f1b1d01fa53cc6808dfe 100644 (file)
--- a/t/IPSet.t
+++ b/t/IPSet.t
@@ -8,7 +8,7 @@
 use strict;
 use warnings;
 
-use Test::More tests => 4;
+use Test::More tests => 6;
 BEGIN { use_ok('IPSet') };
 
 #########################
@@ -18,6 +18,7 @@ BEGIN { use_ok('IPSet') };
 
 # Name of the testset.
 my $setname = "TEST";
+my $setname_renamed = "TEST_RENAMED";
 
 # Init the IPSet module and create a session.
 my $session = &IPSet::init();
@@ -30,6 +31,14 @@ ok($create_set, "Sucessfully created set: $setname.");
 my $exists = &IPSet::setname_exists($session, $setname);
 ok($exists, "The testset exists.");
 
-# Delete the testset.
-my $delete = &IPSet::delete_set($session, $setname);
+# Rename the testset.
+my $renamed = &IPSet::rename_set($session, $setname, $setname_renamed);
+ok($renamed, "Rename successfull.");
+
+# Check if the renamed set exists.
+$exists = &IPSet::setname_exists($session, $setname_renamed);
+ok($exists, "Renamed testset exists.");
+
+# Delete the renamed testset.
+my $delete = &IPSet::delete_set($session, $setname_renamed);
 ok($delete, "Successfully deleted set.");