From 0de4e5739cf23464c78b8887c2bccea41c77d8e6 Mon Sep 17 00:00:00 2001 From: Stefan Schantl Date: Mon, 15 Aug 2022 12:19:35 +0200 Subject: [PATCH] Add support for renaming sets. Signed-off-by: Stefan Schantl --- IPSet.xs | 37 +++++++++++++++++++++++++++++++++++++ t/IPSet.t | 15 ++++++++++++--- 2 files changed, 49 insertions(+), 3 deletions(-) diff --git a/IPSet.xs b/IPSet.xs index f52e7d9..4f9e771 100644 --- 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; diff --git a/t/IPSet.t b/t/IPSet.t index 458f241..684dd31 100644 --- 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."); -- 2.47.3