]> git.ipfire.org Git - thirdparty/nftables.git/commitdiff
scanner: import, export: Move to own scopes
authorPhil Sutter <phil@nwl.cc>
Tue, 27 Jul 2021 14:35:14 +0000 (16:35 +0200)
committerPhil Sutter <phil@nwl.cc>
Tue, 1 Mar 2022 09:54:03 +0000 (10:54 +0100)
In theory, one could use a common scope for both import and export
commands, their parameters are identical.

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

index 0601b410a8458d5ff0b651047ba9a0cf3f5fc60f..090fd78871a6e8b5005e00d05709917932da21e5 100644 (file)
@@ -45,6 +45,8 @@ enum startcond_type {
        PARSER_SC_TCP,
        PARSER_SC_TYPE,
        PARSER_SC_VLAN,
+       PARSER_SC_CMD_EXPORT,
+       PARSER_SC_CMD_IMPORT,
        PARSER_SC_CMD_LIST,
        PARSER_SC_CMD_MONITOR,
        PARSER_SC_CMD_RESET,
index ae6187c3ab564bea7335986cb392e6192f607d5d..83efb7db7e3918eac758ce7cb7ba4704e278b793 100644 (file)
@@ -938,6 +938,7 @@ close_scope_dccp    : { scanner_pop_start_cond(nft->scanner, PARSER_SC_EXPR_DCCP);
 close_scope_dst                : { scanner_pop_start_cond(nft->scanner, PARSER_SC_EXPR_DST); };
 close_scope_esp                : { scanner_pop_start_cond(nft->scanner, PARSER_SC_EXPR_ESP); };
 close_scope_eth                : { scanner_pop_start_cond(nft->scanner, PARSER_SC_ETH); };
+close_scope_export     : { scanner_pop_start_cond(nft->scanner, PARSER_SC_CMD_EXPORT); };
 close_scope_fib                : { scanner_pop_start_cond(nft->scanner, PARSER_SC_EXPR_FIB); };
 close_scope_frag       : { scanner_pop_start_cond(nft->scanner, PARSER_SC_EXPR_FRAG); };
 close_scope_hash       : { scanner_pop_start_cond(nft->scanner, PARSER_SC_EXPR_HASH); };
@@ -947,6 +948,7 @@ close_scope_ip6             : { scanner_pop_start_cond(nft->scanner, PARSER_SC_IP6); };
 close_scope_vlan       : { scanner_pop_start_cond(nft->scanner, PARSER_SC_VLAN); };
 close_scope_icmp       : { scanner_pop_start_cond(nft->scanner, PARSER_SC_ICMP); };
 close_scope_igmp       : { scanner_pop_start_cond(nft->scanner, PARSER_SC_IGMP); };
+close_scope_import     : { scanner_pop_start_cond(nft->scanner, PARSER_SC_CMD_IMPORT); };
 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); };
@@ -1055,8 +1057,8 @@ base_cmd          :       /* empty */     add_cmd         { $$ = $1; }
                        |       RESET           reset_cmd       close_scope_reset       { $$ = $2; }
                        |       FLUSH           flush_cmd       { $$ = $2; }
                        |       RENAME          rename_cmd      { $$ = $2; }
-                       |       IMPORT          import_cmd      { $$ = $2; }
-                       |       EXPORT          export_cmd      { $$ = $2; }
+                       |       IMPORT          import_cmd      close_scope_import      { $$ = $2; }
+                       |       EXPORT          export_cmd      close_scope_export      { $$ = $2; }
                        |       MONITOR         monitor_cmd     close_scope_monitor     { $$ = $2; }
                        |       DESCRIBE        describe_cmd    { $$ = $2; }
                        ;
index 8725295a210cb713e8096be9cf221e7e22607fc1..97545b7057ab75dff416107678d9dfe8bd1cce65 100644 (file)
@@ -211,6 +211,8 @@ addrstring  ({macaddr}|{ip4addr}|{ip6addr})
 %s SCANSTATE_TCP
 %s SCANSTATE_TYPE
 %s SCANSTATE_VLAN
+%s SCANSTATE_CMD_EXPORT
+%s SCANSTATE_CMD_IMPORT
 %s SCANSTATE_CMD_LIST
 %s SCANSTATE_CMD_MONITOR
 %s SCANSTATE_CMD_RESET
@@ -344,8 +346,8 @@ addrstring  ({macaddr}|{ip4addr}|{ip6addr})
 "reset"                        { scanner_push_start_cond(yyscanner, SCANSTATE_CMD_RESET); return RESET; }
 "flush"                        { return FLUSH; }
 "rename"               { return RENAME; }
-"import"                { return IMPORT; }
-"export"               { return EXPORT; }
+"import"                { scanner_push_start_cond(yyscanner, SCANSTATE_CMD_IMPORT); return IMPORT; }
+"export"               { scanner_push_start_cond(yyscanner, SCANSTATE_CMD_EXPORT); return EXPORT; }
 "monitor"              { scanner_push_start_cond(yyscanner, SCANSTATE_CMD_MONITOR); return MONITOR; }
 
 "position"             { return POSITION; }
@@ -759,9 +761,11 @@ addrstring ({macaddr}|{ip4addr}|{ip6addr})
 
 "all"                  { return ALL; }
 
-"xml"                  { return XML; }
-"json"                 { return JSON; }
-"vm"                    { return VM; }
+<SCANSTATE_CMD_EXPORT,SCANSTATE_CMD_IMPORT,SCANSTATE_CMD_MONITOR>{
+       "xml"                   { return XML; }
+       "json"                  { return JSON; }
+       "vm"                    { return VM; }
+}
 
 "exists"               { return EXISTS; }
 "missing"              { return MISSING; }