Fix for exclusion (again)

git-svn-id: https://shorewall.svn.sourceforge.net/svnroot/shorewall/trunk@6497 fbd18981-670d-0410-9b5c-8dc0c1a9a2bb
This commit is contained in:
teastep 2007-06-08 20:10:43 +00:00
parent 765d4a487d
commit a32cb14c7e

View File

@ -1324,7 +1324,7 @@ sub generate_matrix() {
# Helper functions for generate_matrix() # Helper functions for generate_matrix()
#----------------------------------------- #-----------------------------------------
# #
# Return the target for rules from the $zone to $zone1. # Return the target for rules from $zone to $zone1.
# #
sub rules_target( $$ ) { sub rules_target( $$ ) {
my ( $zone, $zone1 ) = @_; my ( $zone, $zone1 ) = @_;
@ -1332,7 +1332,7 @@ sub generate_matrix() {
my $chainref = $filter_table->{$chain}; my $chainref = $filter_table->{$chain};
return $chain if $chainref && $chainref->{referenced}; return $chain if $chainref && $chainref->{referenced};
return 'ACCEPT' if $zone eq $zone1; return 'ACCEPT' if $zone eq $zone1 && @{$zones{$zone}{exclusions}} == 0;
if ( $chainref->{policy} ne 'CONTINUE' ) { if ( $chainref->{policy} ne 'CONTINUE' ) {
my $policyref = $chainref->{policychain}; my $policyref = $chainref->{policychain};
@ -1414,6 +1414,9 @@ sub generate_matrix() {
addnatjump 'POSTROUTING' , output_chain( $interface ) , match_dest_dev( $interface ); addnatjump 'POSTROUTING' , output_chain( $interface ) , match_dest_dev( $interface );
} }
#
# Special processing for complex zones
#
for my $zone ( grep $zones{$_}{options}{complex} , @zones ) { for my $zone ( grep $zones{$_}{options}{complex} , @zones ) {
my $frwd_ref = new_standard_chain "${zone}_frwd"; my $frwd_ref = new_standard_chain "${zone}_frwd";
my $zoneref = $zones{$zone}; my $zoneref = $zones{$zone};
@ -1649,7 +1652,8 @@ sub generate_matrix() {
} }
$chain = $chain1; $chain = $chain1;
} elsif ( $chain ne 'ACCEPT' ) { } else {
fatal_error "Fatal Error in generate_matrix()" if $chain eq 'ACCEPT';
insert_exclusions $chainref , $exclusions1; insert_exclusions $chainref , $exclusions1;
} }
} }