forked from extern/shorewall_code
Abandon the fantesy that multiple optimize 8 passes will achieve anything.
Signed-off-by: Tom Eastep <teastep@shorewall.net>
This commit is contained in:
parent
938cfd7ba4
commit
a1a78cf09b
@ -1772,29 +1772,23 @@ sub optimize_ruleset() {
|
|||||||
#
|
#
|
||||||
# Now delete duplicate chains
|
# Now delete duplicate chains
|
||||||
#
|
#
|
||||||
$progress = 1;
|
$passes++;
|
||||||
|
|
||||||
while ( $progress ) {
|
for my $chainref ( grep $_->{referenced} && ! $_->{builtin}, values %{$chain_table{$table}} ) {
|
||||||
$progress = 0;
|
my $rules = $chainref->{rules};
|
||||||
$passes++;
|
next if not @$rules;
|
||||||
|
CHAIN:
|
||||||
for my $chainref ( grep $_->{referenced} && ! $_->{builtin}, values %{$chain_table{$table}} ) {
|
for my $chainref1 ( grep $_->{referenced}, values %{$chain_table{$table}} ) {
|
||||||
my $rules = $chainref->{rules};
|
next if $chainref eq $chainref1;
|
||||||
next if not @$rules;
|
my $rules1 = $chainref1->{rules};
|
||||||
CHAIN:
|
next if @$rules != @$rules1;
|
||||||
for my $chainref1 ( grep $_->{referenced}, values %{$chain_table{$table}} ) {
|
next if $chainref1->{dont_delete};
|
||||||
next if $chainref eq $chainref1;
|
|
||||||
my $rules1 = $chainref1->{rules};
|
for ( my $i = 0; $i <= $#$rules; $i++ ) {
|
||||||
next if @$rules != @$rules1;
|
next CHAIN unless $rules->[$i] eq $rules1->[$i];
|
||||||
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;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
replace_references1 $chainref1, $chainref->{name}, '';
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user