diff options
author | Florian Westphal <fw@strlen.de> | 2023-08-02 17:47:14 +0200 |
---|---|---|
committer | Florian Westphal <fw@strlen.de> | 2023-08-03 13:06:19 +0200 |
commit | 5c25c5a35cbd27911d233efd01efcb9be35c85af (patch) | |
tree | 8aa679c74461357dec26e930ee476b86d24668c3 /src/parser_bison.y | |
parent | a8260c056a69aaca33d6604079ebac3d07d2551c (diff) |
parser: allow ct timeouts to use time_spec values
For some reason the parser only allows raw numbers (seconds)
for ct timeouts, e.g.
ct timeout ttcp {
protocol tcp;
policy = { syn_sent : 3, ...
Also permit time_spec, e.g. "established : 5d".
Print the nicer time formats on output, but retain
raw numbers support on input for compatibility.
Signed-off-by: Florian Westphal <fw@strlen.de>
Diffstat (limited to 'src/parser_bison.y')
-rw-r--r-- | src/parser_bison.y | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/src/parser_bison.y b/src/parser_bison.y index ef5011c1..36172713 100644 --- a/src/parser_bison.y +++ b/src/parser_bison.y @@ -673,7 +673,7 @@ int nft_lex(void *, void *, void *); %type <string> identifier type_identifier string comment_spec %destructor { xfree($$); } identifier type_identifier string comment_spec -%type <val> time_spec quota_used +%type <val> time_spec time_spec_or_num_s quota_used %type <expr> data_type_expr data_type_atom_expr %destructor { expr_free($$); } data_type_expr data_type_atom_expr @@ -2790,6 +2790,11 @@ time_spec : STRING } ; +/* compatibility kludge to allow either 60, 60s, 1m, ... */ +time_spec_or_num_s : NUM + | time_spec { $$ = $1 / 1000u; } + ; + family_spec : /* empty */ { $$ = NFPROTO_IPV4; } | family_spec_explicit ; @@ -4812,8 +4817,7 @@ timeout_states : timeout_state } ; -timeout_state : STRING COLON NUM - +timeout_state : STRING COLON time_spec_or_num_s { struct timeout_state *ts; |