From 6be8c08673501148f65261839968b5ad186e08f6 Mon Sep 17 00:00:00 2001 From: Tom Eastep Date: Mon, 4 Jul 2011 07:48:52 -0700 Subject: [PATCH] Create action chain without leading % when possible Signed-off-by: Tom Eastep --- Shorewall/Perl/Shorewall/Rules.pm | 20 ++++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) diff --git a/Shorewall/Perl/Shorewall/Rules.pm b/Shorewall/Perl/Shorewall/Rules.pm index cdd9d50b9..329cca946 100644 --- a/Shorewall/Perl/Shorewall/Rules.pm +++ b/Shorewall/Perl/Shorewall/Rules.pm @@ -910,16 +910,20 @@ sub createlogactionchain( $$$$$ ) { $chain = substr $chain, 0, 28 if ( length $chain ) > 28; - CHECKDUP: - { - $actionref->{actchain}++ while $chain_table{filter}{'%' . $chain . $actionref->{actchain}}; - $chain = substr( $chain, 0, 27 ), redo CHECKDUP if ( $actionref->{actchain} || 0 ) >= 10 and length $chain == 28; + if ( $filter_table->{$chain} ) { + CHECKDUP: + { + $actionref->{actchain}++ while $chain_table{filter}{'%' . $chain . $actionref->{actchain}}; + $chain = substr( $chain, 0, 27 ), redo CHECKDUP if ( $actionref->{actchain} || 0 ) >= 10 and length $chain == 28; + } + + $usedactions{$normalized} = $chainref = new_standard_chain '%' . $chain . $actionref->{actchain}++; + + fatal_error "Too many invocations of Action $action" if $actionref->{actchain} > 99; + } else { + $usedactions{$normalized} = $chainref = new_standard_chain $chain; } - $usedactions{$normalized} = $chainref = new_standard_chain '%' . $chain . $actionref->{actchain}++; - - fatal_error "Too many invocations of Action $action" if $actionref->{actchain} > 99; - $chainref->{action} = $normalized; unless ( $targets{$action} & BUILTIN ) {