]> git.ipfire.org Git - thirdparty/nftables.git/commitdiff
scanner: monitor: Move to own Scope
authorPhil Sutter <phil@nwl.cc>
Fri, 23 Jul 2021 16:27:11 +0000 (18:27 +0200)
committerPhil Sutter <phil@nwl.cc>
Tue, 1 Mar 2022 09:54:03 +0000 (10:54 +0100)
Some keywords are shared with list command.

Signed-off-by: Phil Sutter <phil@nwl.cc>
include/parser.h
src/parser_bison.y
src/scanner.l

index 072fea24eb0bdef4f645895f0d152a8f48f5a086..09499f08119bf0eb1a398edb2e2381aaf8c85614 100644 (file)
@@ -46,6 +46,7 @@ enum startcond_type {
        PARSER_SC_TYPE,
        PARSER_SC_VLAN,
        PARSER_SC_CMD_LIST,
+       PARSER_SC_CMD_MONITOR,
        PARSER_SC_EXPR_AH,
        PARSER_SC_EXPR_COMP,
        PARSER_SC_EXPR_DCCP,
index cc739c47ea88fd9931d6043a45348f85fab75244..4ca86f73fc16ffe381ad9ea6f3f49916c042759e 100644 (file)
@@ -951,6 +951,7 @@ close_scope_ipsec   : { scanner_pop_start_cond(nft->scanner, PARSER_SC_EXPR_IPSEC)
 close_scope_list       : { scanner_pop_start_cond(nft->scanner, PARSER_SC_CMD_LIST); };
 close_scope_limit      : { scanner_pop_start_cond(nft->scanner, PARSER_SC_LIMIT); };
 close_scope_mh         : { scanner_pop_start_cond(nft->scanner, PARSER_SC_EXPR_MH); };
+close_scope_monitor    : { scanner_pop_start_cond(nft->scanner, PARSER_SC_CMD_MONITOR); };
 close_scope_numgen     : { scanner_pop_start_cond(nft->scanner, PARSER_SC_EXPR_NUMGEN); };
 close_scope_osf                : { scanner_pop_start_cond(nft->scanner, PARSER_SC_EXPR_OSF); };
 close_scope_quota      : { scanner_pop_start_cond(nft->scanner, PARSER_SC_QUOTA); };
@@ -1055,7 +1056,7 @@ base_cmd          :       /* empty */     add_cmd         { $$ = $1; }
                        |       RENAME          rename_cmd      { $$ = $2; }
                        |       IMPORT          import_cmd      { $$ = $2; }
                        |       EXPORT          export_cmd      { $$ = $2; }
-                       |       MONITOR         monitor_cmd     { $$ = $2; }
+                       |       MONITOR         monitor_cmd     close_scope_monitor     { $$ = $2; }
                        |       DESCRIBE        describe_cmd    { $$ = $2; }
                        ;
 
index 6975d9f226ef2463f156bef706bae5a90f640289..ea369c0775025c130dfb3644bc0f5bdcbd3b31bc 100644 (file)
@@ -212,6 +212,7 @@ addrstring  ({macaddr}|{ip4addr}|{ip6addr})
 %s SCANSTATE_TYPE
 %s SCANSTATE_VLAN
 %s SCANSTATE_CMD_LIST
+%s SCANSTATE_CMD_MONITOR
 %s SCANSTATE_EXPR_AH
 %s SCANSTATE_EXPR_COMP
 %s SCANSTATE_EXPR_DCCP
@@ -289,23 +290,27 @@ addrstring        ({macaddr}|{ip4addr}|{ip6addr})
 
 "describe"             { return DESCRIBE; }
 
+<SCANSTATE_CMD_LIST,SCANSTATE_CMD_MONITOR>{
+       "chains"                { return CHAINS; }
+       "sets"                  { return SETS; }
+       "tables"                { return TABLES; }
+}
+<SCANSTATE_CMD_MONITOR>{
+       "rules"                 { return RULES; }
+       "trace"                 { return TRACE; }
+}
 "hook"                 { return HOOK; }
 "device"               { return DEVICE; }
 "devices"              { return DEVICES; }
 "table"                        { return TABLE; }
-"tables"               { return TABLES; }
 "chain"                        { return CHAIN; }
-"chains"               { return CHAINS; }
 "rule"                 { return RULE; }
-"rules"                        { return RULES; }
-"sets"                 { return SETS; }
 "set"                  { return SET; }
 "element"              { return ELEMENT; }
 "map"                  { return MAP; }
 "flowtable"            { return FLOWTABLE; }
 "handle"               { return HANDLE; }
 "ruleset"              { return RULESET; }
-"trace"                        { return TRACE; }
 
 "socket"               { scanner_push_start_cond(yyscanner, SCANSTATE_EXPR_SOCKET); return SOCKET; }
 <SCANSTATE_EXPR_SOCKET>{
@@ -340,7 +345,7 @@ addrstring  ({macaddr}|{ip4addr}|{ip6addr})
 "rename"               { return RENAME; }
 "import"                { return IMPORT; }
 "export"               { return EXPORT; }
-"monitor"              { return MONITOR; }
+"monitor"              { scanner_push_start_cond(yyscanner, SCANSTATE_CMD_MONITOR); return MONITOR; }
 
 "position"             { return POSITION; }
 "index"                        { return INDEX; }