From bbdcfbfa081022a854b1e112063df2f6011582cb Mon Sep 17 00:00:00 2001 From: Phil Sutter Date: Fri, 23 Jul 2021 14:56:02 +0200 Subject: scanner: comp: Move to own scope. Isolates only 'cpi' keyword for now. Signed-off-by: Phil Sutter --- include/parser.h | 1 + src/parser_bison.y | 5 +++-- src/scanner.l | 7 +++++-- 3 files changed, 9 insertions(+), 4 deletions(-) diff --git a/include/parser.h b/include/parser.h index 0e75bad4..c16f2101 100644 --- a/include/parser.h +++ b/include/parser.h @@ -45,6 +45,7 @@ enum startcond_type { PARSER_SC_TCP, PARSER_SC_VLAN, PARSER_SC_CMD_LIST, + PARSER_SC_EXPR_COMP, PARSER_SC_EXPR_FIB, PARSER_SC_EXPR_HASH, PARSER_SC_EXPR_IPSEC, diff --git a/src/parser_bison.y b/src/parser_bison.y index 0fc8e855..56892417 100644 --- a/src/parser_bison.y +++ b/src/parser_bison.y @@ -930,6 +930,7 @@ opt_newline : NEWLINE ; close_scope_arp : { scanner_pop_start_cond(nft->scanner, PARSER_SC_ARP); }; +close_scope_comp : { scanner_pop_start_cond(nft->scanner, PARSER_SC_EXPR_COMP); }; close_scope_ct : { scanner_pop_start_cond(nft->scanner, PARSER_SC_CT); }; close_scope_counter : { scanner_pop_start_cond(nft->scanner, PARSER_SC_COUNTER); }; close_scope_eth : { scanner_pop_start_cond(nft->scanner, PARSER_SC_ETH); }; @@ -4817,7 +4818,7 @@ primary_rhs_expr : symbol_expr { $$ = $1; } BYTEORDER_HOST_ENDIAN, sizeof(data) * BITS_PER_BYTE, &data); } - | COMP + | COMP close_scope_comp { uint8_t data = IPPROTO_COMP; $$ = constant_expr_alloc(&@$, &inet_protocol_type, @@ -5468,7 +5469,7 @@ esp_hdr_field : SPI { $$ = ESPHDR_SPI; } | SEQUENCE { $$ = ESPHDR_SEQUENCE; } ; -comp_hdr_expr : COMP comp_hdr_field +comp_hdr_expr : COMP comp_hdr_field close_scope_comp { $$ = payload_expr_alloc(&@$, &proto_comp, $2); } diff --git a/src/scanner.l b/src/scanner.l index 01cb501c..a27df6c7 100644 --- a/src/scanner.l +++ b/src/scanner.l @@ -211,6 +211,7 @@ addrstring ({macaddr}|{ip4addr}|{ip6addr}) %s SCANSTATE_TCP %s SCANSTATE_VLAN %s SCANSTATE_CMD_LIST +%s SCANSTATE_EXPR_COMP %s SCANSTATE_EXPR_FIB %s SCANSTATE_EXPR_HASH %s SCANSTATE_EXPR_IPSEC @@ -544,9 +545,11 @@ addrstring ({macaddr}|{ip4addr}|{ip6addr}) "esp" { return ESP; } -"comp" { return COMP; } +"comp" { scanner_push_start_cond(yyscanner, SCANSTATE_EXPR_COMP); return COMP; } +{ + "cpi" { return CPI; } +} "flags" { return FLAGS; } -"cpi" { return CPI; } "udp" { return UDP; } "udplite" { return UDPLITE; } -- cgit v1.2.3