summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorPablo Neira Ayuso <pablo@netfilter.org>2017-11-24 13:33:47 +0100
committerPablo Neira Ayuso <pablo@netfilter.org>2017-11-24 15:53:44 +0100
commit5bac6832d4a62bfbca66453474b91f6d6d6049f7 (patch)
tree15e8e6b56efe3215b0723f2271c09a629aa44901 /src
parent24a912eea21f9d18909c53a865cf623839616281 (diff)
parser_bison: no need for 'name' token for meters
Rework grammar to skip the 'name' token after 'meter' for named meters. For consistency with sets and maps in terms of syntax. Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
Diffstat (limited to 'src')
-rw-r--r--src/parser_bison.y29
1 files changed, 16 insertions, 13 deletions
diff --git a/src/parser_bison.y b/src/parser_bison.y
index d2673173..6e85a628 100644
--- a/src/parser_bison.y
+++ b/src/parser_bison.y
@@ -557,8 +557,8 @@ int nft_lex(void *, void *, void *);
%type <stmt> set_stmt
%destructor { stmt_free($$); } set_stmt
%type <val> set_stmt_op
-%type <stmt> meter_stmt meter_stmt_alloc
-%destructor { stmt_free($$); } meter_stmt meter_stmt_alloc
+%type <stmt> meter_stmt meter_stmt_alloc flow_stmt_legacy_alloc
+%destructor { stmt_free($$); } meter_stmt meter_stmt_alloc flow_stmt_legacy_alloc
%type <expr> symbol_expr verdict_expr integer_expr variable_expr
%destructor { expr_free($$); } symbol_expr verdict_expr integer_expr variable_expr
@@ -2482,39 +2482,42 @@ set_stmt_op : ADD { $$ = NFT_DYNSET_OP_ADD; }
| UPDATE { $$ = NFT_DYNSET_OP_UPDATE; }
;
-meter_stmt : meter_stmt_alloc meter_stmt_opts '{' meter_key_expr stmt '}'
+meter_stmt : flow_stmt_legacy_alloc flow_stmt_opts '{' meter_key_expr stmt '}'
{
$1->meter.key = $4;
$1->meter.stmt = $5;
$$->location = @$;
$$ = $1;
}
+ | meter_stmt_alloc { $$ = $1; }
;
-meter_stmt_alloc : FLOW
- {
- $$ = meter_stmt_alloc(&@$);
- }
- | METER
+flow_stmt_legacy_alloc : FLOW
{
$$ = meter_stmt_alloc(&@$);
}
;
-meter_stmt_opts : meter_stmt_opt
+flow_stmt_opts : flow_stmt_opt
{
$<stmt>$ = $<stmt>0;
}
- | meter_stmt_opts meter_stmt_opt
+ | flow_stmt_opts flow_stmt_opt
;
-meter_stmt_opt : TABLE identifier
+flow_stmt_opt : TABLE identifier
{
$<stmt>0->meter.name = $2;
}
- | NAME identifier
+ ;
+
+meter_stmt_alloc : METER identifier '{' meter_key_expr stmt '}'
{
- $<stmt>0->meter.name = $2;
+ $$ = meter_stmt_alloc(&@$);
+ $$->meter.name = $2;
+ $$->meter.key = $4;
+ $$->meter.stmt = $5;
+ $$->location = @$;
}
;