From c992153402c78d91e8beba791171bced21c62d3f Mon Sep 17 00:00:00 2001 From: Florian Westphal Date: Wed, 27 Jul 2016 14:34:53 +0200 Subject: ct: allow resolving ct keys at run time ... and remove those keywords we no longer need. Signed-off-by: Florian Westphal Acked-by: Pablo Neira Ayuso --- src/parser_bison.y | 36 +++++++++++++++++++++++++++--------- 1 file changed, 27 insertions(+), 9 deletions(-) (limited to 'src/parser_bison.y') diff --git a/src/parser_bison.y b/src/parser_bison.y index 35504de1..1730b8d3 100644 --- a/src/parser_bison.y +++ b/src/parser_bison.y @@ -2512,6 +2512,19 @@ ct_expr : CT ct_key { $$ = ct_expr_alloc(&@$, $2, -1); } + | CT STRING + { + struct error_record *erec; + unsigned int key; + + erec = ct_key_parse(&@$, $2, &key); + if (erec != NULL) { + erec_queue(erec, state->msgs); + YYERROR; + } + + $$ = ct_expr_alloc(&@$, key, -1); + } | CT STRING ct_key_dir { struct error_record *erec; @@ -2527,15 +2540,7 @@ ct_expr : CT ct_key } ; -ct_key : STATE { $$ = NFT_CT_STATE; } - | DIRECTION { $$ = NFT_CT_DIRECTION; } - | STATUS { $$ = NFT_CT_STATUS; } - | MARK { $$ = NFT_CT_MARK; } - | EXPIRATION { $$ = NFT_CT_EXPIRATION; } - | HELPER { $$ = NFT_CT_HELPER; } - | LABEL { $$ = NFT_CT_LABELS; } - | L3PROTOCOL { $$ = NFT_CT_L3PROTOCOL; } - | PROTOCOL { $$ = NFT_CT_PROTOCOL; } +ct_key : MARK { $$ = NFT_CT_MARK; } | ct_key_counters ; ct_key_dir : SADDR { $$ = NFT_CT_SRC; } @@ -2555,6 +2560,19 @@ ct_stmt : CT ct_key SET expr { $$ = ct_stmt_alloc(&@$, $2, $4); } + | CT STRING SET expr + { + struct error_record *erec; + unsigned int key; + + erec = ct_key_parse(&@$, $2, &key); + if (erec != NULL) { + erec_queue(erec, state->msgs); + YYERROR; + } + + $$ = ct_stmt_alloc(&@$, key, $4); + } ; payload_stmt : payload_expr SET expr -- cgit v1.2.3