diff mbox series

[nft,2/2] parser_bison: no need for 'name' token for meters

Message ID 20171124132900.28301-2-pablo@netfilter.org
State Accepted
Delegated to: Pablo Neira
Headers show
Series [nft,1/2] parser_bison: dismiss anonymous meters | expand

Commit Message

Pablo Neira Ayuso Nov. 24, 2017, 1:29 p.m. UTC
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>
---
 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(-)

Comments

Pablo Neira Ayuso Nov. 24, 2017, 2:56 p.m. UTC | #1
On Fri, Nov 24, 2017 at 02:29:00PM +0100, Pablo Neira Ayuso wrote:
> @@ -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  = @$;
> +			}

I'm removing from here...

> +			|	METER	'{' meter_key_expr stmt '}'
> +			{
> +				$$ = meter_stmt_alloc(&@$);
> +				$$->meter.key  = $3;
> +				$$->meter.stmt = $4;
> +				$$->location  = @$;
> +			}

to there.

There's no point in nameless meters as we discussed, sorry, this just
slipped through.

Will be mangling this before pushing it out.
--
To unsubscribe from this list: send the line "unsubscribe netfilter-devel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
diff mbox series

Patch

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[@]}"