From f1e8a129ee428419a0d5a45a2f410e8e4008d109 Mon Sep 17 00:00:00 2001 From: Fernando Fernandez Mancera Date: Fri, 24 May 2019 15:06:47 +0200 Subject: src: Introduce chain_expr in jump and goto statements Introduce expressions as a chain in jump and goto statements. This is going to be used to support variables as a chain in the following patches. Signed-off-by: Fernando Fernandez Mancera Signed-off-by: Pablo Neira Ayuso --- src/parser_bison.y | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) (limited to 'src/parser_bison.y') diff --git a/src/parser_bison.y b/src/parser_bison.y index 8c8cd432..f2583ade 100644 --- a/src/parser_bison.y +++ b/src/parser_bison.y @@ -618,8 +618,8 @@ int nft_lex(void *, void *, void *); %type meter_stmt meter_stmt_alloc flow_stmt_legacy_alloc %destructor { stmt_free($$); } meter_stmt meter_stmt_alloc flow_stmt_legacy_alloc -%type symbol_expr verdict_expr integer_expr variable_expr -%destructor { expr_free($$); } symbol_expr verdict_expr integer_expr variable_expr +%type symbol_expr verdict_expr integer_expr variable_expr chain_expr +%destructor { expr_free($$); } symbol_expr verdict_expr integer_expr variable_expr chain_expr %type primary_expr shift_expr and_expr %destructor { expr_free($$); } primary_expr shift_expr and_expr %type exclusive_or_expr inclusive_or_expr @@ -3827,11 +3827,11 @@ verdict_expr : ACCEPT { $$ = verdict_expr_alloc(&@$, NFT_CONTINUE, NULL); } - | JUMP identifier + | JUMP chain_expr { $$ = verdict_expr_alloc(&@$, NFT_JUMP, $2); } - | GOTO identifier + | GOTO chain_expr { $$ = verdict_expr_alloc(&@$, NFT_GOTO, $2); } @@ -3841,6 +3841,15 @@ verdict_expr : ACCEPT } ; +chain_expr : identifier + { + $$ = constant_expr_alloc(&@$, &string_type, + BYTEORDER_HOST_ENDIAN, + NFT_CHAIN_MAXNAMELEN * + BITS_PER_BYTE, $1); + } + ; + meta_expr : META meta_key { $$ = meta_expr_alloc(&@$, $2); -- cgit v1.2.3