Handle use of -I in save file
authorJamie Cameron <jcameron@webmin.com>
Sun, 6 Jun 2010 19:03:24 +0000 (12:03 -0700)
committerJamie Cameron <jcameron@webmin.com>
Sun, 6 Jun 2010 19:03:24 +0000 (12:03 -0700)
firewall/firewall-lib.pl

index 9e59ba1..2739586 100755 (executable)
@@ -73,15 +73,20 @@ while(<FILE>) {
                # New chain definition
                $table->{'defaults'}->{$2} = '-';
                }
-       elsif (/^(\[[^\]]*\]\s+)?-A\s+(\S+)(.*)/) {
+       elsif (/^(\[[^\]]*\]\s+)?-(AI)\s+(\S+)(.*)/) {
                # Rule definition
                local $rule = { 'line' => $lnum,
                                'eline' => $lnum,
                                'index' => scalar(@{$table->{'rules'}}),
                                'cmt' => $cmt,
-                               'chain' => $2,
-                               'args' => $3 };
-               push(@{$table->{'rules'}}, $rule);
+                               'chain' => $3,
+                               'args' => $4 };
+               if ($2 eq "I") {
+                       unshift(@{$table->{'rules'}}, $rule);
+                       }
+               else {
+                       push(@{$table->{'rules'}}, $rule);
+                       }
 
                # Parse arguments
                foreach $a (@known_args) {