summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorPablo Neira Ayuso <pablo@netfilter.org>2025-03-20 12:45:54 +0100
committerPablo Neira Ayuso <pablo@netfilter.org>2025-03-21 11:03:46 +0100
commit986272519136d7ae91d9bad1e6296a21bc4a3ef2 (patch)
treee538584bb0526b1661d5ce05ebeb24649e714250 /src
parent39599ad240d4abeeea2de95d865b1b759660e125 (diff)
parser_bison: consolidate connlimit grammar rule for set elements
Define ct_limit_stmt_alloc and ct_limit_args to follow similar idiom that is used for counters. Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
Diffstat (limited to 'src')
-rw-r--r--src/parser_bison.y41
1 files changed, 21 insertions, 20 deletions
diff --git a/src/parser_bison.y b/src/parser_bison.y
index 1e550455..5760ba47 100644
--- a/src/parser_bison.y
+++ b/src/parser_bison.y
@@ -769,8 +769,8 @@ int nft_lex(void *, void *, void *);
%destructor { stmt_free($$); } stmt match_stmt verdict_stmt set_elem_stmt
%type <stmt> counter_stmt counter_stmt_alloc stateful_stmt last_stmt
%destructor { stmt_free($$); } counter_stmt counter_stmt_alloc stateful_stmt last_stmt
-%type <stmt> limit_stmt_alloc quota_stmt_alloc last_stmt_alloc
-%destructor { stmt_free($$); } limit_stmt_alloc quota_stmt_alloc last_stmt_alloc
+%type <stmt> limit_stmt_alloc quota_stmt_alloc last_stmt_alloc ct_limit_stmt_alloc
+%destructor { stmt_free($$); } limit_stmt_alloc quota_stmt_alloc last_stmt_alloc ct_limit_stmt_alloc
%type <stmt> objref_stmt objref_stmt_counter objref_stmt_limit objref_stmt_quota objref_stmt_ct objref_stmt_synproxy
%destructor { stmt_free($$); } objref_stmt objref_stmt_counter objref_stmt_limit objref_stmt_quota objref_stmt_ct objref_stmt_synproxy
@@ -3187,7 +3187,7 @@ objref_stmt : objref_stmt_counter
stateful_stmt : counter_stmt close_scope_counter
| limit_stmt close_scope_limit
| quota_stmt close_scope_quota
- | connlimit_stmt
+ | connlimit_stmt close_scope_ct
| last_stmt close_scope_last
;
@@ -3283,16 +3283,27 @@ verdict_map_list_member_expr: opt_newline set_elem_expr COLON verdict_expr opt_n
}
;
-connlimit_stmt : CT COUNT NUM close_scope_ct
+ct_limit_stmt_alloc : CT COUNT
{
$$ = connlimit_stmt_alloc(&@$);
- $$->connlimit.count = $3;
}
- | CT COUNT OVER NUM close_scope_ct
+ ;
+
+connlimit_stmt : ct_limit_stmt_alloc ct_limit_args
+ ;
+
+ct_limit_args : NUM
{
- $$ = connlimit_stmt_alloc(&@$);
- $$->connlimit.count = $4;
- $$->connlimit.flags = NFT_CONNLIMIT_F_INV;
+ assert($<stmt>0->type == STMT_CONNLIMIT);
+
+ $<stmt>0->connlimit.count = $1;
+ }
+ | OVER NUM
+ {
+ assert($<stmt>0->type == STMT_CONNLIMIT);
+
+ $<stmt>0->connlimit.count = $2;
+ $<stmt>0->connlimit.flags = NFT_CONNLIMIT_F_INV;
}
;
@@ -4635,17 +4646,7 @@ set_elem_stmt_list : set_elem_stmt
set_elem_stmt : counter_stmt close_scope_counter
| limit_stmt close_scope_limit
- | CT COUNT NUM close_scope_ct
- {
- $$ = connlimit_stmt_alloc(&@$);
- $$->connlimit.count = $3;
- }
- | CT COUNT OVER NUM close_scope_ct
- {
- $$ = connlimit_stmt_alloc(&@$);
- $$->connlimit.count = $4;
- $$->connlimit.flags = NFT_CONNLIMIT_F_INV;
- }
+ | connlimit_stmt close_scope_ct
| quota_stmt close_scope_quota
| last_stmt close_scope_last
;