summaryrefslogtreecommitdiffstats
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
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>
-rw-r--r--src/parser_bison.y29
-rw-r--r--tests/py/ip/flowtable.t2
-rw-r--r--tests/py/ip/flowtable.t.payload2
-rw-r--r--tests/py/ip6/flowtable.t4
-rw-r--r--tests/py/ip6/flowtable.t.payload4
-rwxr-xr-xtests/shell/testcases/sets/0022type_selective_flush_04
6 files changed, 24 insertions, 21 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 = @$;
}
;
diff --git a/tests/py/ip/flowtable.t b/tests/py/ip/flowtable.t
index 7eaf5731..4427fab8 100644
--- a/tests/py/ip/flowtable.t
+++ b/tests/py/ip/flowtable.t
@@ -2,4 +2,4 @@
*ip;test-ip;input
-meter name xyz { ip saddr timeout 30s counter};ok
+meter xyz { ip saddr timeout 30s counter};ok
diff --git a/tests/py/ip/flowtable.t.payload b/tests/py/ip/flowtable.t.payload
index 4dbd03d0..34a58499 100644
--- a/tests/py/ip/flowtable.t.payload
+++ b/tests/py/ip/flowtable.t.payload
@@ -1,4 +1,4 @@
-# meter name xyz { ip saddr timeout 30s counter}
+# meter xyz { ip saddr timeout 30s counter}
xyz test-ip 31
xyz test-ip 0
ip test-ip input
diff --git a/tests/py/ip6/flowtable.t b/tests/py/ip6/flowtable.t
index 7a53f31a..5c048935 100644
--- a/tests/py/ip6/flowtable.t
+++ b/tests/py/ip6/flowtable.t
@@ -2,5 +2,5 @@
*ip6;test-ip6;input
-meter name acct_out { meta iif . ip6 saddr timeout 600s counter };ok;meter name acct_out { iif . ip6 saddr timeout 10m counter}
-meter name acct_out { ip6 saddr . meta iif timeout 600s counter };ok;meter name acct_out { ip6 saddr . iif timeout 10m counter}
+meter acct_out { meta iif . ip6 saddr timeout 600s counter };ok;meter acct_out { iif . ip6 saddr timeout 10m counter}
+meter acct_out { ip6 saddr . meta iif timeout 600s counter };ok;meter acct_out { ip6 saddr . iif timeout 10m counter}
diff --git a/tests/py/ip6/flowtable.t.payload b/tests/py/ip6/flowtable.t.payload
index cf2de733..a3f71b13 100644
--- a/tests/py/ip6/flowtable.t.payload
+++ b/tests/py/ip6/flowtable.t.payload
@@ -1,4 +1,4 @@
-# meter name acct_out { meta iif . ip6 saddr timeout 600s counter }
+# meter acct_out { meta iif . ip6 saddr timeout 600s counter }
acct_out test-ip6 31
acct_out test-ip6 0
ip6 test-ip6 input
@@ -6,7 +6,7 @@ ip6 test-ip6 input
[ payload load 16b @ network header + 8 => reg 9 ]
[ dynset update reg_key 1 set acct_out timeout 600000ms expr [ counter pkts 0 bytes 0 ] ]
-# meter name acct_out { ip6 saddr . meta iif timeout 600s counter }
+# meter acct_out { ip6 saddr . meta iif timeout 600s counter }
acct_out test-ip6 31
acct_out test-ip6 0
ip6 test-ip6 input
diff --git a/tests/shell/testcases/sets/0022type_selective_flush_0 b/tests/shell/testcases/sets/0022type_selective_flush_0
index 87a4c7bc..659bf70c 100755
--- a/tests/shell/testcases/sets/0022type_selective_flush_0
+++ b/tests/shell/testcases/sets/0022type_selective_flush_0
@@ -16,7 +16,7 @@ add table t
add chain t c
add set t s {type ipv4_addr;}
add map t m {type ipv4_addr : inet_service;}
-add rule t c tcp dport 80 meter name f {ip saddr limit rate 10/second}
+add rule t c tcp dport 80 meter f {ip saddr limit rate 10/second}
" >$tmpfile
$NFT -f $tmpfile
@@ -26,7 +26,7 @@ $NFT -f $tmpfile
declare -a cmds=(
"flush set t m" "flush set t f"
"flush map t s" "flush map t f"
- "flush meter name t s" "flush meter name t m"
+ "flush meter t s" "flush meter t m"
)
for i in "${cmds[@]}"