From a1a78cf09b875ec16250a67169d4177b1e7f1b6e Mon Sep 17 00:00:00 2001 From: Tom Eastep Date: Fri, 16 Apr 2010 17:12:08 -0700 Subject: [PATCH] Abandon the fantesy that multiple optimize 8 passes will achieve anything. Signed-off-by: Tom Eastep --- Shorewall/Perl/Shorewall/Chains.pm | 36 +++++++++++++----------------- 1 file changed, 15 insertions(+), 21 deletions(-) diff --git a/Shorewall/Perl/Shorewall/Chains.pm b/Shorewall/Perl/Shorewall/Chains.pm index 97ebf57e7..ce67ea41d 100644 --- a/Shorewall/Perl/Shorewall/Chains.pm +++ b/Shorewall/Perl/Shorewall/Chains.pm @@ -1772,29 +1772,23 @@ sub optimize_ruleset() { # # Now delete duplicate chains # - $progress = 1; + $passes++; - while ( $progress ) { - $progress = 0; - $passes++; - - for my $chainref ( grep $_->{referenced} && ! $_->{builtin}, values %{$chain_table{$table}} ) { - my $rules = $chainref->{rules}; - next if not @$rules; - CHAIN: - for my $chainref1 ( grep $_->{referenced}, values %{$chain_table{$table}} ) { - next if $chainref eq $chainref1; - my $rules1 = $chainref1->{rules}; - next if @$rules != @$rules1; - next if $chainref1->{dont_delete}; - - for ( my $i = 0; $i <= $#$rules; $i++ ) { - next CHAIN unless $rules->[$i] eq $rules1->[$i]; - } - - replace_references1 $chainref1, $chainref->{name}, ''; - $progress = 1; + for my $chainref ( grep $_->{referenced} && ! $_->{builtin}, values %{$chain_table{$table}} ) { + my $rules = $chainref->{rules}; + next if not @$rules; + CHAIN: + for my $chainref1 ( grep $_->{referenced}, values %{$chain_table{$table}} ) { + next if $chainref eq $chainref1; + my $rules1 = $chainref1->{rules}; + next if @$rules != @$rules1; + next if $chainref1->{dont_delete}; + + for ( my $i = 0; $i <= $#$rules; $i++ ) { + next CHAIN unless $rules->[$i] eq $rules1->[$i]; } + + replace_references1 $chainref1, $chainref->{name}, ''; } } }