OUTPUT:
RETVAL
+#
+# Functions to add or remove elements to sets.
+#
+bool
+add_address(session, setname, address)
+ struct ipset_session *session;
+ const char *setname;
+ const char *address;
+
+ PREINIT:
+ enum ipset_cmd cmd = IPSET_CMD_ADD;
+ const struct ipset_type *type;
+
+ CODE:
+ // Assign the setname as session data.
+ int r = ipset_session_data_set(session, IPSET_SETNAME, setname);
+ if (r < 0) {
+ goto ERROR;
+ }
+
+ // Get the set type.
+ type = ipset_type_get(session, cmd);
+ if (type == NULL) {
+ goto ERROR;
+ }
+
+ // Parse and try to add the given address to the session data.
+ r = ipset_parse_ip(session, IPSET_OPT_IP, address);
+ if (r < 0) {
+ goto ERROR;
+ }
+
+ r = ipset_cmd(session, cmd, 0);
+ if (r < 0) {
+ goto ERROR;
+ }
+
+ RETVAL = true;
+
+ goto END;
+
+ ERROR:
+ RETVAL = false;
+
+ // Reset session data.
+ ipset_data_reset(ipset_session_data(session));
+ END:
+ OUTPUT:
+ RETVAL
+
#
# Get functions to ask for various data or receive error messages.
#
use strict;
use warnings;
-use Test::More tests => 15;
+use Test::More tests => 16;
BEGIN { use_ok('IPSet') };
#########################
"maxelem" => "10",
);
+# Array with addresses to be added to the testset.
+my @addresses = ("1.1.1.1", "2.2.2.2");
+
# Name of the renamed set.
my $setname_renamed = "TEST_RENAMED";
my $sets_count = @sets;
ok($sets_count ge 1, "At least one set exists yet!");
+# Add all addresses from array to the testset.
+foreach my $address (@addresses) {
+ &IPSet::add_address($session, $testset{'name'}, $address);
+}
+
+# Grab set data gain.
+$data = &IPSet::get_set_data($session, $testset{'name'});
+ok($data->{entries} eq scalar(@addresses), "All addresses added successfully to the set");
+
# CLEANUP: Delete the remaining set.
&IPSet::delete_set($session, $testset{'name'});