]> git.ipfire.org Git - people/stevee/ipfire-2.x.git/commitdiff
ipblocklist-functions.pl: Use ipset_load_set function from
authorStefan Schantl <stefan.schantl@ipfire.org>
Fri, 14 Apr 2023 17:38:09 +0000 (19:38 +0200)
committerStefan Schantl <stefan.schantl@ipfire.org>
Fri, 14 Apr 2023 17:38:09 +0000 (19:38 +0200)
ipset-functions library

Signed-off-by: Stefan Schantl <stefan.schantl@ipfire.org>
config/cfgroot/ipblocklist-functions.pl

index 251d34865bbacd95911dd6ac16240e3945dcc26b..ce556f35bc947597fc9f44f17e46444eddaba878 100644 (file)
@@ -264,7 +264,7 @@ sub load_blocklists () {
                next unless(@data);
 
                # Call function to load the blocklist.
-               my $error = &load_blocklist($list, @data);
+               my $error = &IPSet::Functions::ipset_load_set($list, @data);
 
                # Check if there is an error to apply.
                if ($error) {
@@ -277,72 +277,6 @@ sub load_blocklists () {
        return @errors;
 }
 
-#
-## Load blocklist function.
-##
-## This function is responsible to load/update a given blocklist.
-##
-## It uses the ipset-functions library and ipset perl bindings to directly
-## interact with ipset and load the list into the kernel.
-#
-sub load_blocklist($@) {
-       my ($name, @data) = @_;
-
-       # Check if the given set exists.
-       my $exists = &IPSet::Functions::ipset_exists($name);
-
-       # Call functions from ipset-functions library to detect and calculate
-       # the type and hashsize and omit the maxelems.
-       my $setname = $name;
-       my $type = &IPSet::Functions::detect_hashtype(@data);
-       my $maxelem = @data;
-       my $hashsize = &IPSet::Functions::calculate_hashsize($maxelem);
-
-       # Get a a random set name.
-       my $rand_name = &IPSet::Functions::random_setname();
-
-       # If the given set allready exists, assign the random generated name.
-       $setname = $rand_name if($exists);
-
-       # Create a new empty set.
-       my $error = &IPSet::Functions::ipset_create($setname, $type, $hashsize, $maxelem);
-
-       # Abort and return the error if there was one.
-       return $error if(($error) && ($error ne "1"));
-
-       # Add the data to the recently created set.
-       &IPSet::Functions::add_to_set($setname, @data);
-
-       # We are finished here and can return, if the set has not exist yet.
-       return unless($exists);
-
-       # Get the data of the existing set.
-       my $set_data = &IPSet::Functions::ipset_set_data($name);
-
-       # Return if the data of the set could not be grabbed.
-       return "No data" unless($set_data);
-
-       # Check if the old and the new types are eqal.
-       if ($set_data->{type} eq $type) {
-               # The type is the same and we easily can swap the sets.
-               &IPSet::Functions::ipset_swap($setname, $name);
-
-
-               # Remove the old one.
-               &IPSet::Functions::ipset_remove($setname);
-       } else {
-               #
-               # Abort if the set is currently in use.
-               return "Set in use" if($set_data->{references} gt 0);
-
-               # Drop the old set first.
-               &IPSet::Functions::ipset_remove($name);
-
-               # Rename the set
-               &IPSet::Functions::ipset_rename($setname, $name);
-       }
-}
-
 #
 ## sub parse_ip_or_net_list( line )
 ##