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 <[email protected]>
---
 src/parser_bison.y                                 | 36 +++++++++++++++-------
 tests/py/ip/flowtable.t                            |  2 +-
 tests/py/ip/flowtable.t.payload                    |  2 +-
 tests/py/ip6/flowtable.t                           |  4 +--
 tests/py/ip6/flowtable.t.payload                   |  4 +--
 .../testcases/sets/0022type_selective_flush_0      |  4 +--
 6 files changed, 33 insertions(+), 19 deletions(-)

diff --git a/src/parser_bison.y b/src/parser_bison.y
index d2673173bd27..c7b9f71e3be4 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,33 +2482,30 @@ 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;
                        }
@@ -2518,6 +2515,23 @@ meter_stmt_opt           :       TABLE                   
identifier
                        }
                        ;
 
+meter_stmt_alloc       :       METER   identifier              '{' 
meter_key_expr stmt '}'
+                       {
+                               $$ = meter_stmt_alloc(&@$);
+                               $$->meter.name = $2;
+                               $$->meter.key  = $4;
+                               $$->meter.stmt = $5;
+                               $$->location  = @$;
+                       }
+                       |       METER   '{' meter_key_expr stmt '}'
+                       {
+                               $$ = meter_stmt_alloc(&@$);
+                               $$->meter.key  = $3;
+                               $$->meter.stmt = $4;
+                               $$->location  = @$;
+                       }
+                       ;
+
 match_stmt             :       relational_expr
                        {
                                $$ = expr_stmt_alloc(&@$, $1);
diff --git a/tests/py/ip/flowtable.t b/tests/py/ip/flowtable.t
index 7eaf5731ea22..4427fab88eb8 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 4dbd03d01926..34a584994b64 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 7a53f31aa67e..5c048935d726 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 cf2de733ca42..a3f71b1304dc 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 87a4c7bc4393..659bf70c05bf 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[@]}"
-- 
2.11.0

--
To unsubscribe from this list: send the line "unsubscribe netfilter-devel" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to