From 595e79b1ccdfa6b11cd6c2b1c8eda0161b58d22a Mon Sep 17 00:00:00 2001 From: Phil Sutter Date: Tue, 13 Jul 2021 13:54:12 +0200 Subject: [PATCH] scanner: sctp: Move to own scope Bugzilla: https://bugzilla.redhat.com/show_bug.cgi?id=1979334 Upstream Status: nftables commit 0925d7e214825 Conflicts: Context change due to missing other scopes. commit 0925d7e214825628e7db4a86d5ebbad578ab0777 Author: Phil Sutter Date: Tue May 4 13:06:32 2021 +0200 scanner: sctp: Move to own scope This isolates only "vtag" token for now. Signed-off-by: Phil Sutter Reviewed-by: Florian Westphal --- include/parser.h | 1 + src/parser_bison.y | 5 +++-- src/scanner.l | 8 ++++++-- 3 files changed, 10 insertions(+), 4 deletions(-) diff --git a/include/parser.h b/include/parser.h index 1d293f5..2e6ef4d 100644 --- a/include/parser.h +++ b/include/parser.h @@ -30,6 +30,7 @@ struct parser_state { enum startcond_type { PARSER_SC_BEGIN, + PARSER_SC_SCTP, PARSER_SC_EXPR_HASH, PARSER_SC_EXPR_NUMGEN, }; diff --git a/src/parser_bison.y b/src/parser_bison.y index 9a9447f..beb5995 100644 --- a/src/parser_bison.y +++ b/src/parser_bison.y @@ -842,6 +842,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_sctp : { scanner_pop_start_cond(nft->scanner, PARSER_SC_SCTP); }; common_block : INCLUDE QUOTED_STRING stmt_separator { @@ -4059,7 +4060,7 @@ primary_rhs_expr : symbol_expr { $$ = $1; } BYTEORDER_HOST_ENDIAN, sizeof(data) * BITS_PER_BYTE, &data); } - | SCTP + | SCTP close_scope_sctp { uint8_t data = IPPROTO_SCTP; $$ = constant_expr_alloc(&@$, &inet_protocol_type, @@ -4782,7 +4783,7 @@ dccp_hdr_field : SPORT { $$ = DCCPHDR_SPORT; } | TYPE { $$ = DCCPHDR_TYPE; } ; -sctp_hdr_expr : SCTP sctp_hdr_field +sctp_hdr_expr : SCTP sctp_hdr_field close_scope_sctp { $$ = payload_expr_alloc(&@$, &proto_sctp, $2); } diff --git a/src/scanner.l b/src/scanner.l index 68fe988..b79ae55 100644 --- a/src/scanner.l +++ b/src/scanner.l @@ -196,6 +196,7 @@ addrstring ({macaddr}|{ip4addr}|{ip6addr}) %option nodefault %option warn %option stack +%s SCANSTATE_SCTP %s SCANSTATE_EXPR_HASH %s SCANSTATE_EXPR_NUMGEN @@ -488,8 +489,11 @@ addrstring ({macaddr}|{ip4addr}|{ip6addr}) "dccp" { return DCCP; } -"sctp" { return SCTP; } -"vtag" { return VTAG; } +"sctp" { scanner_push_start_cond(yyscanner, SCANSTATE_SCTP); return SCTP; } + +{ + "vtag" { return VTAG; } +} "rt" { return RT; } "rt0" { return RT0; } -- 2.31.1