From 543bf3c2bb5e67b024231f01c9d88fb29298c72b Mon Sep 17 00:00:00 2001 From: Phil Sutter Date: Tue, 27 Jul 2021 16:35:14 +0200 Subject: scanner: import, export: Move to own scopes In theory, one could use a common scope for both import and export commands, their parameters are identical. Signed-off-by: Phil Sutter --- src/parser_bison.y | 6 ++++-- src/scanner.l | 14 +++++++++----- 2 files changed, 13 insertions(+), 7 deletions(-) (limited to 'src') diff --git a/src/parser_bison.y b/src/parser_bison.y index ae6187c3..83efb7db 100644 --- a/src/parser_bison.y +++ b/src/parser_bison.y @@ -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; } ; diff --git a/src/scanner.l b/src/scanner.l index 8725295a..97545b70 100644 --- a/src/scanner.l +++ b/src/scanner.l @@ -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; } +{ + "xml" { return XML; } + "json" { return JSON; } + "vm" { return VM; } +} "exists" { return EXISTS; } "missing" { return MISSING; } -- cgit v1.2.3