From 13077701788e759d1969452c9eda576dea181a69 Mon Sep 17 00:00:00 2001 From: Tom Eastep Date: Fri, 18 Jan 2013 15:05:14 -0800 Subject: [PATCH] Allow setting action parameters Signed-off-by: Tom Eastep --- Shorewall/Perl/Shorewall/Config.pm | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/Shorewall/Perl/Shorewall/Config.pm b/Shorewall/Perl/Shorewall/Config.pm index 2fca8449a..5352a5ab1 100644 --- a/Shorewall/Perl/Shorewall/Config.pm +++ b/Shorewall/Perl/Shorewall/Config.pm @@ -2272,11 +2272,20 @@ sub process_compiler_directive( $$$$ ) { unless ( $omitting ) { directive_error( "Missing SET variable", $filename, $linenumber ) unless supplied $expression; ( my $var , $expression ) = split ' ', $expression, 2; - directive_error( "Invalid SET variable ($var)", $filename, $linenumber) unless $var =~ /^\$?([a-zA-Z]\w*)$/; + directive_error( "Invalid SET variable ($var)", $filename, $linenumber) unless $var =~ /^([$@])?([a-zA-Z]\w*)$/; directive_error( "Missing SET expression" , $filename, $linenumber) unless supplied $expression; - $variables{$1} = evaluate_expression( $expression, - $filename, - $linenumber ); + + if ( ( $1 || '' ) eq '@' ) { + directive_error( "Invalid SET variable", $filename, $linenumber ) unless exists $actparms{$2}; + $actparms{$2} = evaluate_expression ( $expression, + $filename, + $linenumber ); + $paramsmodified = 1; + } else { + $variables{$1} = evaluate_expression( $expression, + $filename, + $linenumber ); + } } } ,