diff options
author | Florian Westphal <fw@strlen.de> | 2016-07-27 14:34:53 +0200 |
---|---|---|
committer | Florian Westphal <fw@strlen.de> | 2016-10-27 22:34:31 +0200 |
commit | c992153402c78d91e8beba791171bced21c62d3f (patch) | |
tree | 75ce083cdc31b7ce03cc354561ff255a126d6acf /src/parser_bison.y | |
parent | 2c6a3b7c4f662b7a94a8ba6870565a45df0cbe2c (diff) |
ct: allow resolving ct keys at run time
... and remove those keywords we no longer need.
Signed-off-by: Florian Westphal <fw@strlen.de>
Acked-by: Pablo Neira Ayuso <pablo@netfilter.org>
Diffstat (limited to 'src/parser_bison.y')
-rw-r--r-- | src/parser_bison.y | 36 |
1 files changed, 27 insertions, 9 deletions
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 |