diff options
author | Pablo Neira Ayuso <pablo@netfilter.org> | 2017-11-24 13:33:47 +0100 |
---|---|---|
committer | Pablo Neira Ayuso <pablo@netfilter.org> | 2017-11-24 15:53:44 +0100 |
commit | 5bac6832d4a62bfbca66453474b91f6d6d6049f7 (patch) | |
tree | 15e8e6b56efe3215b0723f2271c09a629aa44901 /src | |
parent | 24a912eea21f9d18909c53a865cf623839616281 (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.y | 29 |
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 = @$; } ; |