]> git.ipfire.org Git - thirdparty/nftables.git/commitdiff
scanner: queue: move to own scope
authorFlorian Westphal <fw@strlen.de>
Mon, 8 Mar 2021 17:18:34 +0000 (18:18 +0100)
committerFlorian Westphal <fw@strlen.de>
Thu, 11 Mar 2021 12:43:31 +0000 (13:43 +0100)
allows to remove 3 queue specific keywords from INITIAL scope.

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

index b2ebd7aa226c56c02b6feec225f0c0aee0b4935e..c3a85a4cf4c22997e38d6d3660a70d57cfe1ebe4 100644 (file)
@@ -30,6 +30,7 @@ enum startcond_type {
        PARSER_SC_BEGIN,
        PARSER_SC_EXPR_HASH,
        PARSER_SC_EXPR_NUMGEN,
+       PARSER_SC_EXPR_QUEUE,
 };
 
 struct mnl_socket;
index 1ac4dbe43c84926d406335af643ab9cd17db02d3..423dddfc2c6d02df9b40961ceaf979cc7fa6b2aa 100644 (file)
@@ -863,6 +863,7 @@ opt_newline         :       NEWLINE
 
 close_scope_hash       : { scanner_pop_start_cond(nft->scanner, PARSER_SC_EXPR_HASH); };
 close_scope_numgen     : { scanner_pop_start_cond(nft->scanner, PARSER_SC_EXPR_NUMGEN); };
+close_scope_queue      : { scanner_pop_start_cond(nft->scanner, PARSER_SC_EXPR_QUEUE); };
 
 common_block           :       INCLUDE         QUOTED_STRING   stmt_separator
                        {
@@ -3635,8 +3636,8 @@ nf_nat_flag               :       RANDOM          { $$ = NF_NAT_RANGE_PROTO_RANDOM; }
                        |       PERSISTENT      { $$ = NF_NAT_RANGE_PERSISTENT; }
                        ;
 
-queue_stmt             :       queue_stmt_alloc
-                       |       queue_stmt_alloc        queue_stmt_args
+queue_stmt             :       queue_stmt_alloc        close_scope_queue
+                       |       queue_stmt_alloc        queue_stmt_args close_scope_queue
                        ;
 
 queue_stmt_alloc       :       QUEUE
index 94225c296a3b8adefe36ec77ea8aa2db37d70039..893364b7b9e7a9a81ab47fbc3fffb9fac60e3f63 100644 (file)
@@ -198,6 +198,7 @@ addrstring  ({macaddr}|{ip4addr}|{ip6addr})
 %option stack
 %s SCANSTATE_EXPR_HASH
 %s SCANSTATE_EXPR_NUMGEN
+%s SCANSTATE_EXPR_QUEUE
 
 %%
 
@@ -346,11 +347,12 @@ addrstring        ({macaddr}|{ip4addr}|{ip6addr})
 "queue-threshold"      { return QUEUE_THRESHOLD; }
 "level"                        { return LEVEL; }
 
-"queue"                        { return QUEUE;}
-"num"                  { return QUEUENUM;}
-"bypass"               { return BYPASS;}
-"fanout"               { return FANOUT;}
-
+"queue"                        { scanner_push_start_cond(yyscanner, SCANSTATE_EXPR_QUEUE); return QUEUE;}
+<SCANSTATE_EXPR_QUEUE>{
+       "num"           { return QUEUENUM;}
+       "bypass"        { return BYPASS;}
+       "fanout"        { return FANOUT;}
+}
 "limit"                        { return LIMIT; }
 "rate"                 { return RATE; }
 "burst"                        { return BURST; }