forked from extern/shorewall_code
Add wildcard validation
git-svn-id: https://shorewall.svn.sourceforge.net/svnroot/shorewall/trunk@6001 fbd18981-670d-0410-9b5c-8dc0c1a9a2bb
This commit is contained in:
parent
1c8168b5a9
commit
a6405cb423
@ -35,7 +35,6 @@ our @EXPORT = qw( add_group_to_zone
|
||||
known_interface
|
||||
interface_is_optional
|
||||
find_interfaces_by_option
|
||||
find_interfaces_by_option1
|
||||
get_interface_option
|
||||
|
||||
@interfaces );
|
||||
@ -170,7 +169,14 @@ sub validate_interfaces_file()
|
||||
|
||||
fatal_error "Invalid Interface Name: $interface" if $interface =~ /:|^\+$/;
|
||||
|
||||
( $interfaces{$interface}{root} = $interface ) =~ s/\+$// ;
|
||||
my $wildcard = 0;
|
||||
|
||||
if ( $interface =~ /\+$/ ) {
|
||||
$wildcard = 1;
|
||||
$interfaces{$interface}{root} = substr( $interface, 0, -1 );
|
||||
} else {
|
||||
$interfaces{$interface}{root} = $interface;
|
||||
}
|
||||
|
||||
warning_message 'Shorewall no longer uses broadcast addresses in rule generation:' . $networks if $networks && $networks ne 'detect';
|
||||
|
||||
@ -186,18 +192,18 @@ sub validate_interfaces_file()
|
||||
|
||||
( $option, my $value ) = split /=/, $option;
|
||||
|
||||
my $type = $validoptions{$option};
|
||||
|
||||
unless ( $type ) {
|
||||
warning_message("Invalid Interface option ($option) ignored");
|
||||
} elsif ( $type == SIMPLE_IF_OPTION ) {
|
||||
fatal_error "Invalid Interface option ($option)" unless my $type = $validoptions{$option};
|
||||
|
||||
if ( $type == SIMPLE_IF_OPTION ) {
|
||||
fatal_error "Option $option does not take a value" if defined $value;
|
||||
$options{$option} = 1;
|
||||
} elsif ( $type == BINARY_IF_OPTION ) {
|
||||
$value = 1 unless defined $value;
|
||||
fatal_error "Option value for $option must be 0 or 1" unless ( $value eq '0' || $value eq '1' );
|
||||
fatal_error "The $option option may not be used with a wild-card interface name" if $wildcard;
|
||||
$options{$option} = $value;
|
||||
} elsif ( $type == ENUM_IF_OPTION ) {
|
||||
fatal_error "The $option option may not be used with a wild-card interface name" if $wildcard;
|
||||
if ( $option eq 'arp_filter' ) {
|
||||
if ( $value =~ /^[1-3,8]$/ ) {
|
||||
$options{arp_filter} = $value;
|
||||
@ -278,23 +284,6 @@ sub find_interfaces_by_option( $ ) {
|
||||
\@ints;
|
||||
}
|
||||
|
||||
#
|
||||
# Returns reference to array of [ name, value ] pairs for interfaces with the passed option
|
||||
#
|
||||
sub find_interfaces_by_option1( $ ) {
|
||||
my $option = $_[0];
|
||||
my @ints = ();
|
||||
|
||||
for my $interface ( @interfaces ) {
|
||||
my $optionsref = $interfaces{$interface}{options};
|
||||
if ( $optionsref && defined $optionsref->{$option} ) {
|
||||
push @ints , [ $interface, $optionsref->{$option} ]
|
||||
}
|
||||
}
|
||||
|
||||
\@ints;
|
||||
}
|
||||
|
||||
#
|
||||
# Return the value of an option for an interface
|
||||
#
|
||||
|
Loading…
Reference in New Issue
Block a user