forked from extern/shorewall_code
Speed up the replace_references* functions.
Signed-off-by: Tom Eastep <teastep@shorewall.net>
This commit is contained in:
parent
715ea9ef32
commit
4137961169
@ -1464,20 +1464,20 @@ sub delete_references( $ ) {
|
|||||||
#
|
#
|
||||||
sub replace_references( $$ ) {
|
sub replace_references( $$ ) {
|
||||||
my ( $chainref, $target ) = @_;
|
my ( $chainref, $target ) = @_;
|
||||||
my $table = $chainref->{table};
|
my $tableref = $chain_table{$chainref->{table}};
|
||||||
my $count = 0;
|
my $count = 0;
|
||||||
|
|
||||||
if ( defined $chain_table{$table}{$target} && ! $chain_table{$table}{$target}{builtin} ) {
|
if ( defined $tableref->{$target} && ! $tableref->{$target}{builtin} ) {
|
||||||
#
|
#
|
||||||
# The target is a chain -- use the jump type from each referencing rule
|
# The target is a chain -- use the jump type from each referencing rule
|
||||||
#
|
#
|
||||||
for my $fromref ( map $chain_table{$table}{$_} , keys %{$chainref->{references}} ) {
|
for my $fromref ( map $tableref->{$_} , keys %{$chainref->{references}} ) {
|
||||||
if ( $fromref->{referenced} ) {
|
if ( $fromref->{referenced} ) {
|
||||||
my $rule = 0;
|
my $rule = 0;
|
||||||
for ( @{$fromref->{rules}} ) {
|
for ( @{$fromref->{rules}} ) {
|
||||||
$rule++;
|
$rule++;
|
||||||
if ( s/ -([jg]) $chainref->{name}(\b)/ -$1 ${target}$2/ ) {
|
if ( s/ -([jg]) $chainref->{name}(\b)/ -$1 ${target}$2/ ) {
|
||||||
add_reference ( $fromref, $chain_table{$table}{$target} );
|
add_reference ( $fromref, $tableref->{$target} );
|
||||||
$count++;
|
$count++;
|
||||||
trace( $fromref, 'R', $rule, $_ ) if $debug;
|
trace( $fromref, 'R', $rule, $_ ) if $debug;
|
||||||
}
|
}
|
||||||
@ -1488,7 +1488,7 @@ sub replace_references( $$ ) {
|
|||||||
#
|
#
|
||||||
# The target is a builtin -- we must use '-j'
|
# The target is a builtin -- we must use '-j'
|
||||||
#
|
#
|
||||||
for my $fromref ( map $chain_table{$table}{$_} , keys %{$chainref->{references}} ) {
|
for my $fromref ( map $tableref->{$_} , keys %{$chainref->{references}} ) {
|
||||||
if ( $fromref->{referenced} ) {
|
if ( $fromref->{referenced} ) {
|
||||||
my $rule = 0;
|
my $rule = 0;
|
||||||
for ( @{$fromref->{rules}} ) {
|
for ( @{$fromref->{rules}} ) {
|
||||||
@ -1513,16 +1513,16 @@ sub replace_references( $$ ) {
|
|||||||
#
|
#
|
||||||
sub replace_references1( $$$ ) {
|
sub replace_references1( $$$ ) {
|
||||||
my ( $chainref, $target, $matches ) = @_;
|
my ( $chainref, $target, $matches ) = @_;
|
||||||
my $table = $chainref->{table};
|
my $tableref = $chain_table{$chainref->{table}};
|
||||||
my $count = 0;
|
my $count = 0;
|
||||||
#
|
#
|
||||||
# Note: If $matches is non-empty, then it begins with white space
|
# Note: If $matches is non-empty, then it begins with white space
|
||||||
#
|
#
|
||||||
if ( defined $chain_table{$table}{$target} && ! $chain_table{$table}{$target}{builtin} ) {
|
if ( defined $tableref->{$target} && ! $tableref->{$target}{builtin} ) {
|
||||||
#
|
#
|
||||||
# The target is a chain -- use the jump type from each referencing rule
|
# The target is a chain -- use the jump type from each referencing rule
|
||||||
#
|
#
|
||||||
for my $fromref ( map $chain_table{$table}{$_} , keys %{$chainref->{references}} ) {
|
for my $fromref ( map $tableref->{$_} , keys %{$chainref->{references}} ) {
|
||||||
if ( $fromref->{referenced} ) {
|
if ( $fromref->{referenced} ) {
|
||||||
my $rule = 0;
|
my $rule = 0;
|
||||||
for ( @{$fromref->{rules}} ) {
|
for ( @{$fromref->{rules}} ) {
|
||||||
@ -1533,7 +1533,7 @@ sub replace_references1( $$$ ) {
|
|||||||
#
|
#
|
||||||
s/ -p [^ ]+ / / if / -p / && $matches =~ / -p /;
|
s/ -p [^ ]+ / / if / -p / && $matches =~ / -p /;
|
||||||
s/\s+-([jg]) $chainref->{name}(\b)/$matches -$1 ${target}$2/;
|
s/\s+-([jg]) $chainref->{name}(\b)/$matches -$1 ${target}$2/;
|
||||||
add_reference ( $fromref, $chain_table{$table}{$target} );
|
add_reference ( $fromref, $tableref->{$target} );
|
||||||
$count++;
|
$count++;
|
||||||
trace( $fromref, 'R', $rule, $_ ) if $debug;
|
trace( $fromref, 'R', $rule, $_ ) if $debug;
|
||||||
}
|
}
|
||||||
@ -1544,7 +1544,7 @@ sub replace_references1( $$$ ) {
|
|||||||
#
|
#
|
||||||
# The target is a builtin -- we must use '-j'
|
# The target is a builtin -- we must use '-j'
|
||||||
#
|
#
|
||||||
for my $fromref ( map $chain_table{$table}{$_} , keys %{$chainref->{references}} ) {
|
for my $fromref ( map $tableref->{$_} , keys %{$chainref->{references}} ) {
|
||||||
my $rule = 0;
|
my $rule = 0;
|
||||||
if ( $fromref->{referenced} ) {
|
if ( $fromref->{referenced} ) {
|
||||||
for ( @{$fromref->{rules}} ) {
|
for ( @{$fromref->{rules}} ) {
|
||||||
|
Loading…
Reference in New Issue
Block a user