summaryrefslogtreecommitdiff
path: root/lib/Vyatta/IpTables/IpSet.pm
diff options
context:
space:
mode:
Diffstat (limited to 'lib/Vyatta/IpTables/IpSet.pm')
-rwxr-xr-xlib/Vyatta/IpTables/IpSet.pm73
1 files changed, 1 insertions, 72 deletions
diff --git a/lib/Vyatta/IpTables/IpSet.pm b/lib/Vyatta/IpTables/IpSet.pm
index 276b845..dafdf4b 100755
--- a/lib/Vyatta/IpTables/IpSet.pm
+++ b/lib/Vyatta/IpTables/IpSet.pm
@@ -54,6 +54,7 @@ my $logger = 'logger -t IpSet.pm -p local0.warn --';
# due to the long time it takes to make that many calls
# to add each individual member to the set.
my $addr_range_mask = 24;
+
my $lockfile = "/opt/vyatta/config/.lock";
# remove lock file to avoid commit blockade on interrupt
@@ -335,78 +336,6 @@ sub delete {
return; # undef
}
-sub check_member_address {
- my $member = shift;
-
- if (!Vyatta::TypeChecker::validateType('ipv4', $member, 1)) {
- return "Error: [$member] isn't valid IPv4 address\n";
- }
- if ($member eq '0.0.0.0') {
- return "Error: zero IP address not valid in address-group\n";
- }
- return;
-}
-
-sub check_member {
- my ($self, $member) = @_;
-
- return "Error: undefined group name" if !defined $self->{_name};
- return "Error: undefined group type" if !defined $self->{_type};
-
- # We can't call $self->member_exists() here since this is a
- # syntax check and the group may not have been created yet
- # if there hasn't been a commit yet on this group. Move the
- # exists check to $self->add_member().
-
- if ($self->{_type} eq 'address') {
- if ($member =~ /^([^-]+)-([^-]+)$/) {
- foreach my $address ($1, $2) {
- my $rc = check_member_address($address);
- return $rc if defined $rc;
- }
- my $start_ip = new NetAddr::IP($1);
- my $stop_ip = new NetAddr::IP($2);
- if ($stop_ip <= $start_ip) {
- return "Error: $1 must be less than $2\n";
- }
- my $start_net = new NetAddr::IP("$1/$addr_range_mask");
- if (!$start_net->contains($stop_ip)) {
- return "Error: address range must be within /$addr_range_mask\n";
- }
-
- } else {
- my $rc = check_member_address($member);
- return $rc if defined $rc;
- }
- } elsif ($self->{_type} eq 'network') {
- if (!Vyatta::TypeChecker::validateType('ipv4net', $member, 1)) {
- return "Error: [$member] isn't a valid IPv4 network\n";
- }
- if ($member =~ /([\d.]+)\/(\d+)/) {
- my ($net, $mask) = ($1, $2);
- return "Error: 0.0.0.0/0 invalid in network-group\n"
- if (($net eq '0.0.0.0') and ($mask == 0));
- return "Error: invalid mask [$mask] - must be between 1-31\n"
- if (($mask < 1) or ($mask > 31));
- } else {
- return "Error: Invalid network group [$member]\n";
- }
- } elsif ($self->{_type} eq 'port') {
- my ($success, $err) = (undef, "invalid port [$member]");
- if ($member =~ /^(\d+)-(\d+)$/) {
- ($success, $err) = Vyatta::Misc::isValidPortRange($member, '-');
- } elsif ($member =~ /^\d/) {
- ($success, $err) = Vyatta::Misc::isValidPortNumber($member);
- } else {
- ($success, $err) = Vyatta::Misc::isValidPortName($member);
- }
- return "Error: $err\n" if defined $err;
- } else {
- return "Error: invalid set type [$self->{_type}]";
- }
- return; #undef
-}
-
sub member_exists {
my ($self, $member) = @_;