]> git.ipfire.org Git - thirdparty/nftables.git/commitdiff
scanner: log: move to own scope
authorFlorian Westphal <fw@strlen.de>
Tue, 16 Mar 2021 23:40:36 +0000 (00:40 +0100)
committerFlorian Westphal <fw@strlen.de>
Wed, 24 Mar 2021 10:34:56 +0000 (11:34 +0100)
GROUP and PREFIX are used by igmp and nat, so they can't be moved out of
INITIAL scope yet.

Signed-off-by: Florian Westphal <fw@strlen.de>
include/parser.h
src/parser_bison.y
src/scanner.l

index 59eff16eac203891bf48a0907635a99725109081..d890ab223c524127629eec775d356ce63f0d91db 100644 (file)
@@ -47,6 +47,8 @@ enum startcond_type {
        PARSER_SC_EXPR_QUEUE,
        PARSER_SC_EXPR_RT,
        PARSER_SC_EXPR_SOCKET,
+
+       PARSER_SC_STMT_LOG,
 };
 
 struct mnl_socket;
index 805a38ab22ed4c7084e1577996c4ca18b68723dc..98fe4431c4f4d5cb28cdcf37e5764568c4676bb0 100644 (file)
@@ -879,6 +879,8 @@ close_scope_rt              : { scanner_pop_start_cond(nft->scanner, PARSER_SC_EXPR_RT); };
 close_scope_secmark    : { scanner_pop_start_cond(nft->scanner, PARSER_SC_SECMARK); };
 close_scope_socket     : { scanner_pop_start_cond(nft->scanner, PARSER_SC_EXPR_SOCKET); }
 
+close_scope_log                : { scanner_pop_start_cond(nft->scanner, PARSER_SC_STMT_LOG); }
+
 common_block           :       INCLUDE         QUOTED_STRING   stmt_separator
                        {
                                if (scanner_include_file(nft, scanner, $2, &@$) < 0) {
@@ -2695,7 +2697,7 @@ stmt                      :       verdict_stmt
                        |       payload_stmt
                        |       stateful_stmt
                        |       meta_stmt
-                       |       log_stmt
+                       |       log_stmt        close_scope_log
                        |       reject_stmt
                        |       nat_stmt
                        |       tproxy_stmt
index 2187e79f6cc75db8ac33b601e5d4b4d0f5ed0a85..b4e7cf199ccd2c0e022195faee56148489c7116e 100644 (file)
@@ -214,6 +214,8 @@ addrstring  ({macaddr}|{ip4addr}|{ip6addr})
 %s SCANSTATE_EXPR_RT
 %s SCANSTATE_EXPR_SOCKET
 
+%s SCANSTATE_STMT_LOG
+
 %%
 
 "=="                   { return EQ; }
@@ -354,12 +356,14 @@ addrstring        ({macaddr}|{ip4addr}|{ip6addr})
 "limits"               { return LIMITS; }
 "synproxys"            { return SYNPROXYS; }
 
-"log"                  { return LOG; }
+"log"                  { scanner_push_start_cond(yyscanner, SCANSTATE_STMT_LOG); return LOG; }
 "prefix"               { return PREFIX; }
 "group"                        { return GROUP; }
-"snaplen"              { return SNAPLEN; }
-"queue-threshold"      { return QUEUE_THRESHOLD; }
-"level"                        { return LEVEL; }
+<SCANSTATE_STMT_LOG>{
+       "snaplen"               { return SNAPLEN; }
+       "queue-threshold"       { return QUEUE_THRESHOLD; }
+       "level"                 { return LEVEL; }
+}
 
 "queue"                        { scanner_push_start_cond(yyscanner, SCANSTATE_EXPR_QUEUE); return QUEUE;}
 <SCANSTATE_EXPR_QUEUE>{