* [PATCH nft 1/3] ct: make ct event set work with COMMA syntax
@ 2017-09-27 17:38 Florian Westphal
2017-09-27 17:38 ` [PATCH nft 1/3] src: prepare for future ct timeout policy support Florian Westphal
` (2 more replies)
0 siblings, 3 replies; 7+ messages in thread
From: Florian Westphal @ 2017-09-27 17:38 UTC (permalink / raw)
To: netfilter-devel
'ct event set label' and 'ct event set new or label' work, but
'ct event set new, label' did not:
nft add rule filter input ct event set new,label
Error: syntax error, unexpected label
First two patches do a bit of refactoring, 3rd patch makes the
real change.
I have a few more patches on top of this to avoid need
of 'meta nfproto' to indicate address type when 'ct saddr' is used
in inet family.
I will followup with those once these patches are in.
^ permalink raw reply [flat|nested] 7+ messages in thread
* [PATCH nft 1/3] src: prepare for future ct timeout policy support
2017-09-27 17:38 [PATCH nft 1/3] ct: make ct event set work with COMMA syntax Florian Westphal
@ 2017-09-27 17:38 ` Florian Westphal
2017-09-27 17:53 ` Pablo Neira Ayuso
2017-09-27 17:38 ` [PATCH nft 2/3] src: parser_bison: rename ct_block to ct_helper_block Florian Westphal
2017-09-27 17:38 ` [PATCH nft 3/3] bison: permit keywords in list_stmt_expressions Florian Westphal
2 siblings, 1 reply; 7+ messages in thread
From: Florian Westphal @ 2017-09-27 17:38 UTC (permalink / raw)
To: netfilter-devel; +Cc: Florian Westphal
Change all places that expect ct helper tokens (ct helper configuration)
to CT HELPER. ct_obj_kind is removed.
When we add ct timeout support, we will add a new ct_timeout_block,
plus extra rules. We won't extend ct_block, it prevents the parser
from detecting bogus syntax that only makes sense for ct helper but
not for something else for instance.
ct_block should be renamed to ct_helper_block, will be done in
followup patch.
Signed-off-by: Florian Westphal <fw@strlen.de>
---
include/ct.h | 2 --
include/rule.h | 2 +-
src/ct.c | 10 ------
src/parser_bison.y | 98 ++++++++++--------------------------------------------
src/rule.c | 7 ++--
5 files changed, 23 insertions(+), 96 deletions(-)
diff --git a/include/ct.h b/include/ct.h
index 895a6ee3b255..d9a11a3fab81 100644
--- a/include/ct.h
+++ b/include/ct.h
@@ -27,8 +27,6 @@ extern struct expr *ct_expr_alloc(const struct location *loc,
enum nft_ct_keys key, int8_t direction);
extern void ct_expr_update_type(struct proto_ctx *ctx, struct expr *expr);
-extern struct error_record *ct_objtype_parse(const struct location *loc, const char *str, int *type);
-
extern struct stmt *notrack_stmt_alloc(const struct location *loc);
extern const struct datatype ct_dir_type;
diff --git a/include/rule.h b/include/rule.h
index e2a5c87b7002..6f52b17fc08c 100644
--- a/include/rule.h
+++ b/include/rule.h
@@ -463,7 +463,7 @@ extern struct cmd *cmd_alloc(enum cmd_ops op, enum cmd_obj obj,
extern void nft_cmd_expand(struct cmd *cmd);
extern struct cmd *cmd_alloc_obj_ct(enum cmd_ops op, int type,
const struct handle *h,
- const struct location *loc, void *data);
+ const struct location *loc, struct obj *obj);
extern void cmd_free(struct cmd *cmd);
#include <payload.h>
diff --git a/src/ct.c b/src/ct.c
index 2b0e2a0924a4..0e9b17cd1a22 100644
--- a/src/ct.c
+++ b/src/ct.c
@@ -334,16 +334,6 @@ static const struct expr_ops ct_expr_ops = {
.pctx_update = ct_expr_pctx_update,
};
-struct error_record *ct_objtype_parse(const struct location *loc, const char *str, int *type)
-{
- if (strcmp(str, "helper") == 0) {
- *type = NFT_OBJECT_CT_HELPER;
- return NULL;
- }
-
- return error(loc, "unknown ct class '%s', want 'helper'", str);
-}
-
struct expr *ct_expr_alloc(const struct location *loc, enum nft_ct_keys key,
int8_t direction)
{
diff --git a/src/parser_bison.y b/src/parser_bison.y
index c7ba1495adf3..b9eb2b9d4c01 100644
--- a/src/parser_bison.y
+++ b/src/parser_bison.y
@@ -405,6 +405,7 @@ static void location_update(struct location *loc, struct location *rhs, int n)
%token COUNTERS "counters"
%token QUOTAS "quotas"
%token LIMITS "limits"
+%token HELPERS "helpers"
%token LOG "log"
%token PREFIX "prefix"
@@ -698,9 +699,7 @@ static void location_update(struct location *loc, struct location *rhs, int n)
%destructor { expr_free($$); } exthdr_exists_expr
%type <val> exthdr_key
-%type <val> ct_l4protoname
-%type <string> ct_obj_kind
-%destructor { xfree($$); } ct_obj_kind
+%type <val> ct_l4protoname ct_obj_type
%%
@@ -877,19 +876,10 @@ add_cmd : TABLE table_spec
{
$$ = cmd_alloc(CMD_ADD, CMD_OBJ_QUOTA, &$2, &@$, $3);
}
- | CT ct_obj_kind obj_spec ct_obj_alloc '{' ct_block '}' stmt_separator
+ | CT HELPER obj_spec ct_obj_alloc '{' ct_block '}' stmt_separator
{
- struct error_record *erec;
- int type;
-
- erec = ct_objtype_parse(&@$, $2, &type);
- xfree($2);
- if (erec != NULL) {
- erec_queue(erec, state->msgs);
- YYERROR;
- }
- $$ = cmd_alloc_obj_ct(CMD_ADD, type, &$3, &@$, $4);
+ $$ = cmd_alloc_obj_ct(CMD_ADD, NFT_OBJECT_CT_HELPER, &$3, &@$, $4);
}
| LIMIT obj_spec limit_obj
{
@@ -961,19 +951,9 @@ create_cmd : TABLE table_spec
{
$$ = cmd_alloc(CMD_CREATE, CMD_OBJ_QUOTA, &$2, &@$, $3);
}
- | CT ct_obj_kind obj_spec ct_obj_alloc '{' ct_block '}' stmt_separator
+ | CT HELPER obj_spec ct_obj_alloc '{' ct_block '}' stmt_separator
{
- struct error_record *erec;
- int type;
-
- erec = ct_objtype_parse(&@$, $2, &type);
- xfree($2);
- if (erec != NULL) {
- erec_queue(erec, state->msgs);
- YYERROR;
- }
-
- $$ = cmd_alloc_obj_ct(CMD_CREATE, type, &$3, &@$, $4);
+ $$ = cmd_alloc_obj_ct(CMD_CREATE, NFT_OBJECT_CT_HELPER, &$3, &@$, $4);
}
| LIMIT obj_spec limit_obj
{
@@ -1019,19 +999,9 @@ delete_cmd : TABLE table_spec
{
$$ = cmd_alloc(CMD_DELETE, CMD_OBJ_QUOTA, &$2, &@$, NULL);
}
- | CT ct_obj_kind obj_spec ct_obj_alloc
+ | CT ct_obj_type obj_spec ct_obj_alloc
{
- struct error_record *erec;
- int type;
-
- erec = ct_objtype_parse(&@$, $2, &type);
- xfree($2);
- if (erec != NULL) {
- erec_queue(erec, state->msgs);
- YYERROR;
- }
-
- $$ = cmd_alloc_obj_ct(CMD_DELETE, type, &$3, &@$, $4);
+ $$ = cmd_alloc_obj_ct(CMD_DELETE, $2, &$3, &@$, $4);
}
| LIMIT obj_spec
{
@@ -1123,35 +1093,13 @@ list_cmd : TABLE table_spec
{
$$ = cmd_alloc(CMD_LIST, CMD_OBJ_MAP, &$2, &@$, NULL);
}
- | CT ct_obj_kind obj_spec
+ | CT ct_obj_type obj_spec
{
- struct error_record *erec;
- int type;
-
- erec = ct_objtype_parse(&@$, $2, &type);
- xfree($2);
- if (erec != NULL) {
- erec_queue(erec, state->msgs);
- YYERROR;
- }
-
- $$ = cmd_alloc_obj_ct(CMD_LIST, type, &$3, &@$, NULL);
+ $$ = cmd_alloc_obj_ct(CMD_LIST, $2, &$3, &@$, NULL);
}
- | CT ct_obj_kind TABLE table_spec
+ | CT HELPERS TABLE table_spec
{
- int cmd;
-
- if (strcmp($2, "helpers") == 0) {
- cmd = CMD_OBJ_CT_HELPERS;
- } else {
- erec_queue(error(&@$, "unknown ct class '%s', want 'helpers'", $2),
- state->msgs);
- xfree($2);
- YYERROR;
- }
- xfree($2);
-
- $$ = cmd_alloc(CMD_LIST, cmd, &$4, &@$, NULL);
+ $$ = cmd_alloc(CMD_LIST, CMD_OBJ_CT_HELPERS, &$4, &@$, NULL);
}
;
@@ -1345,20 +1293,10 @@ table_block : /* empty */ { $$ = $<table>-1; }
list_add_tail(&$4->list, &$1->objs);
$$ = $1;
}
- | table_block CT ct_obj_kind obj_identifier obj_block_alloc '{' ct_block '}' stmt_separator
+ | table_block CT HELPER obj_identifier obj_block_alloc '{' ct_block '}' stmt_separator
{
- struct error_record *erec;
- int type;
-
- erec = ct_objtype_parse(&@$, $3, &type);
- xfree($3);
- if (erec != NULL) {
- erec_queue(erec, state->msgs);
- YYERROR;
- }
-
$5->location = @4;
- $5->type = type;
+ $5->type = NFT_OBJECT_CT_HELPER;
handle_merge(&$5->handle, &$4);
handle_free(&$4);
list_add_tail(&$5->list, &$1->objs);
@@ -1577,7 +1515,7 @@ quota_block : /* empty */ { $$ = $<obj>-1; }
ct_block : /* empty */ { $$ = $<obj>-1; }
| ct_block common_block
| ct_block stmt_separator
- | ct_block ct_config
+ | ct_block ct_helper_config
{
$$ = $1;
}
@@ -2886,15 +2824,14 @@ quota_obj : quota_config
}
;
-ct_obj_kind : STRING { $$ = $1; }
- | HELPER { $$ = xstrdup("helper"); }
+ct_obj_type : HELPER { $$ = NFT_OBJECT_CT_HELPER; }
;
ct_l4protoname : TCP { $$ = IPPROTO_TCP; }
| UDP { $$ = IPPROTO_UDP; }
;
-ct_config : TYPE QUOTED_STRING PROTOCOL ct_l4protoname stmt_separator
+ct_helper_config : TYPE QUOTED_STRING PROTOCOL ct_l4protoname stmt_separator
{
struct ct_helper *ct;
int ret;
@@ -2918,7 +2855,6 @@ ct_config : TYPE QUOTED_STRING PROTOCOL ct_l4protoname stmt_separator
ct_obj_alloc :
{
$$ = obj_alloc(&@$);
- $$->type = NFT_OBJECT_CT_HELPER;
}
;
diff --git a/src/rule.c b/src/rule.c
index 1e0558eaf075..30d3693afa54 100644
--- a/src/rule.c
+++ b/src/rule.c
@@ -1742,10 +1742,13 @@ static int do_command_describe(struct netlink_ctx *ctx, struct cmd *cmd)
}
struct cmd *cmd_alloc_obj_ct(enum cmd_ops op, int type, const struct handle *h,
- const struct location *loc, void *data)
+ const struct location *loc, struct obj *obj)
{
enum cmd_obj cmd_obj;
+ if (obj)
+ obj->type = type;
+
switch (type) {
case NFT_OBJECT_CT_HELPER:
cmd_obj = CMD_OBJ_CT_HELPER;
@@ -1754,7 +1757,7 @@ struct cmd *cmd_alloc_obj_ct(enum cmd_ops op, int type, const struct handle *h,
BUG("missing type mapping");
}
- return cmd_alloc(op, cmd_obj, h, loc, data);
+ return cmd_alloc(op, cmd_obj, h, loc, obj);
}
int do_command(struct netlink_ctx *ctx, struct cmd *cmd)
--
2.13.5
^ permalink raw reply related [flat|nested] 7+ messages in thread
* [PATCH nft 2/3] src: parser_bison: rename ct_block to ct_helper_block
2017-09-27 17:38 [PATCH nft 1/3] ct: make ct event set work with COMMA syntax Florian Westphal
2017-09-27 17:38 ` [PATCH nft 1/3] src: prepare for future ct timeout policy support Florian Westphal
@ 2017-09-27 17:38 ` Florian Westphal
2017-09-27 17:54 ` Pablo Neira Ayuso
2017-09-27 17:38 ` [PATCH nft 3/3] bison: permit keywords in list_stmt_expressions Florian Westphal
2 siblings, 1 reply; 7+ messages in thread
From: Florian Westphal @ 2017-09-27 17:38 UTC (permalink / raw)
To: netfilter-devel; +Cc: Florian Westphal
Signed-off-by: Florian Westphal <fw@strlen.de>
---
src/parser_bison.y | 16 ++++++++--------
1 file changed, 8 insertions(+), 8 deletions(-)
diff --git a/src/parser_bison.y b/src/parser_bison.y
index b9eb2b9d4c01..ce6a77a89847 100644
--- a/src/parser_bison.y
+++ b/src/parser_bison.y
@@ -514,7 +514,7 @@ static void location_update(struct location *loc, struct location *rhs, int n)
%type <set> map_block_alloc map_block
%destructor { set_free($$); } map_block_alloc
-%type <obj> obj_block_alloc counter_block quota_block ct_block limit_block
+%type <obj> obj_block_alloc counter_block quota_block ct_helper_block limit_block
%destructor { obj_free($$); } obj_block_alloc
%type <list> stmt_list
@@ -876,7 +876,7 @@ add_cmd : TABLE table_spec
{
$$ = cmd_alloc(CMD_ADD, CMD_OBJ_QUOTA, &$2, &@$, $3);
}
- | CT HELPER obj_spec ct_obj_alloc '{' ct_block '}' stmt_separator
+ | CT HELPER obj_spec ct_obj_alloc '{' ct_helper_block '}' stmt_separator
{
$$ = cmd_alloc_obj_ct(CMD_ADD, NFT_OBJECT_CT_HELPER, &$3, &@$, $4);
@@ -951,7 +951,7 @@ create_cmd : TABLE table_spec
{
$$ = cmd_alloc(CMD_CREATE, CMD_OBJ_QUOTA, &$2, &@$, $3);
}
- | CT HELPER obj_spec ct_obj_alloc '{' ct_block '}' stmt_separator
+ | CT HELPER obj_spec ct_obj_alloc '{' ct_helper_block '}' stmt_separator
{
$$ = cmd_alloc_obj_ct(CMD_CREATE, NFT_OBJECT_CT_HELPER, &$3, &@$, $4);
}
@@ -1293,7 +1293,7 @@ table_block : /* empty */ { $$ = $<table>-1; }
list_add_tail(&$4->list, &$1->objs);
$$ = $1;
}
- | table_block CT HELPER obj_identifier obj_block_alloc '{' ct_block '}' stmt_separator
+ | table_block CT HELPER obj_identifier obj_block_alloc '{' ct_helper_block '}' stmt_separator
{
$5->location = @4;
$5->type = NFT_OBJECT_CT_HELPER;
@@ -1512,10 +1512,10 @@ quota_block : /* empty */ { $$ = $<obj>-1; }
}
;
-ct_block : /* empty */ { $$ = $<obj>-1; }
- | ct_block common_block
- | ct_block stmt_separator
- | ct_block ct_helper_config
+ct_helper_block : /* empty */ { $$ = $<obj>-1; }
+ | ct_helper_block common_block
+ | ct_helper_block stmt_separator
+ | ct_helper_block ct_helper_config
{
$$ = $1;
}
--
2.13.5
^ permalink raw reply related [flat|nested] 7+ messages in thread
* [PATCH nft 3/3] bison: permit keywords in list_stmt_expressions
2017-09-27 17:38 [PATCH nft 1/3] ct: make ct event set work with COMMA syntax Florian Westphal
2017-09-27 17:38 ` [PATCH nft 1/3] src: prepare for future ct timeout policy support Florian Westphal
2017-09-27 17:38 ` [PATCH nft 2/3] src: parser_bison: rename ct_block to ct_helper_block Florian Westphal
@ 2017-09-27 17:38 ` Florian Westphal
2017-09-27 17:57 ` Pablo Neira Ayuso
2 siblings, 1 reply; 7+ messages in thread
From: Florian Westphal @ 2017-09-27 17:38 UTC (permalink / raw)
To: netfilter-devel; +Cc: Florian Westphal
'ct event set label' and 'ct event set new or label' work, but
'ct event set new, label' did not:
nft add rule filter input ct event set new,label
Error: syntax error, unexpected label
This changes the definition to also contain keyword symbol expressions.
Signed-off-by: Florian Westphal <fw@strlen.de>
---
src/parser_bison.y | 11 +++++++----
tests/py/any/ct.t | 1 +
tests/py/any/ct.t.payload | 5 +++++
3 files changed, 13 insertions(+), 4 deletions(-)
diff --git a/src/parser_bison.y b/src/parser_bison.y
index ce6a77a89847..87ae4c30712a 100644
--- a/src/parser_bison.y
+++ b/src/parser_bison.y
@@ -609,8 +609,8 @@ static void location_update(struct location *loc, struct location *rhs, int n)
%type <expr> rhs_expr concat_rhs_expr basic_rhs_expr
%destructor { expr_free($$); } rhs_expr concat_rhs_expr basic_rhs_expr
-%type <expr> primary_rhs_expr list_rhs_expr shift_rhs_expr
-%destructor { expr_free($$); } primary_rhs_expr list_rhs_expr shift_rhs_expr
+%type <expr> primary_rhs_expr list_rhs_expr shift_rhs_expr symbol_rhs_expr
+%destructor { expr_free($$); } primary_rhs_expr list_rhs_expr shift_rhs_expr symbol_rhs_expr
%type <expr> and_rhs_expr exclusive_or_rhs_expr inclusive_or_rhs_expr
%destructor { expr_free($$); } and_rhs_expr exclusive_or_rhs_expr inclusive_or_rhs_expr
@@ -3302,14 +3302,17 @@ ct_key_dir_optional : BYTES { $$ = NFT_CT_BYTES; }
| ZONE { $$ = NFT_CT_ZONE; }
;
+symbol_rhs_expr : symbol_expr
+ | keyword_expr
+ ;
-list_stmt_expr : symbol_expr COMMA symbol_expr
+list_stmt_expr : symbol_rhs_expr COMMA symbol_rhs_expr
{
$$ = list_expr_alloc(&@$);
compound_expr_add($$, $1);
compound_expr_add($$, $3);
}
- | list_stmt_expr COMMA symbol_expr
+ | list_stmt_expr COMMA symbol_rhs_expr
{
$1->location = @$;
compound_expr_add($1, $3);
diff --git a/tests/py/any/ct.t b/tests/py/any/ct.t
index f02bd0420e68..fb3ae098b14a 100644
--- a/tests/py/any/ct.t
+++ b/tests/py/any/ct.t
@@ -107,6 +107,7 @@ ct mark original;fail
ct event set new;ok
ct event set new or related or destroy or foobar;fail
ct event set 'new | related | destroy | label';ok;ct event set new,related,destroy,label
+ct event set new,related,destroy,label;ok
ct event set new,destroy;ok
ct event set 1;ok;ct event set new
ct event set 0x0;ok
diff --git a/tests/py/any/ct.t.payload b/tests/py/any/ct.t.payload
index 20acbb9b63d1..7ebf3f8d327e 100644
--- a/tests/py/any/ct.t.payload
+++ b/tests/py/any/ct.t.payload
@@ -401,6 +401,11 @@ ip test-ip4 output
[ immediate reg 1 0x00000407 ]
[ ct set event with reg 1 ]
+# ct event set new,related,destroy,label
+ip test-ip4 output
+ [ immediate reg 1 0x00000407 ]
+ [ ct set event with reg 1 ]
+
# ct event set new,destroy
ip test-ip4 output
[ immediate reg 1 0x00000005 ]
--
2.13.5
^ permalink raw reply related [flat|nested] 7+ messages in thread
* Re: [PATCH nft 1/3] src: prepare for future ct timeout policy support
2017-09-27 17:38 ` [PATCH nft 1/3] src: prepare for future ct timeout policy support Florian Westphal
@ 2017-09-27 17:53 ` Pablo Neira Ayuso
0 siblings, 0 replies; 7+ messages in thread
From: Pablo Neira Ayuso @ 2017-09-27 17:53 UTC (permalink / raw)
To: Florian Westphal; +Cc: netfilter-devel
On Wed, Sep 27, 2017 at 07:38:05PM +0200, Florian Westphal wrote:
> Change all places that expect ct helper tokens (ct helper configuration)
> to CT HELPER. ct_obj_kind is removed.
>
> When we add ct timeout support, we will add a new ct_timeout_block,
> plus extra rules. We won't extend ct_block, it prevents the parser
> from detecting bogus syntax that only makes sense for ct helper but
> not for something else for instance.
>
> ct_block should be renamed to ct_helper_block, will be done in
> followup patch.
>
> Signed-off-by: Florian Westphal <fw@strlen.de>
Acked-by: Pablo Neira Ayuso <pablo@netfilter.org>
> include/ct.h | 2 --
> include/rule.h | 2 +-
> src/ct.c | 10 ------
> src/parser_bison.y | 98 ++++++++++--------------------------------------------
> src/rule.c | 7 ++--
> 5 files changed, 23 insertions(+), 96 deletions(-)
Nice diffstats.
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH nft 2/3] src: parser_bison: rename ct_block to ct_helper_block
2017-09-27 17:38 ` [PATCH nft 2/3] src: parser_bison: rename ct_block to ct_helper_block Florian Westphal
@ 2017-09-27 17:54 ` Pablo Neira Ayuso
0 siblings, 0 replies; 7+ messages in thread
From: Pablo Neira Ayuso @ 2017-09-27 17:54 UTC (permalink / raw)
To: Florian Westphal; +Cc: netfilter-devel
On Wed, Sep 27, 2017 at 07:38:06PM +0200, Florian Westphal wrote:
> Signed-off-by: Florian Westphal <fw@strlen.de>
Acked-by: Pablo Neira Ayuso <pablo@netfilter.org>
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH nft 3/3] bison: permit keywords in list_stmt_expressions
2017-09-27 17:38 ` [PATCH nft 3/3] bison: permit keywords in list_stmt_expressions Florian Westphal
@ 2017-09-27 17:57 ` Pablo Neira Ayuso
0 siblings, 0 replies; 7+ messages in thread
From: Pablo Neira Ayuso @ 2017-09-27 17:57 UTC (permalink / raw)
To: Florian Westphal; +Cc: netfilter-devel
On Wed, Sep 27, 2017 at 07:38:07PM +0200, Florian Westphal wrote:
> 'ct event set label' and 'ct event set new or label' work, but
> 'ct event set new, label' did not:
>
> nft add rule filter input ct event set new,label
> Error: syntax error, unexpected label
>
> This changes the definition to also contain keyword symbol expressions.
>
> Signed-off-by: Florian Westphal <fw@strlen.de>
> ---
> src/parser_bison.y | 11 +++++++----
> tests/py/any/ct.t | 1 +
> tests/py/any/ct.t.payload | 5 +++++
> 3 files changed, 13 insertions(+), 4 deletions(-)
>
> diff --git a/src/parser_bison.y b/src/parser_bison.y
> index ce6a77a89847..87ae4c30712a 100644
> --- a/src/parser_bison.y
> +++ b/src/parser_bison.y
> @@ -609,8 +609,8 @@ static void location_update(struct location *loc, struct location *rhs, int n)
>
> %type <expr> rhs_expr concat_rhs_expr basic_rhs_expr
> %destructor { expr_free($$); } rhs_expr concat_rhs_expr basic_rhs_expr
> -%type <expr> primary_rhs_expr list_rhs_expr shift_rhs_expr
> -%destructor { expr_free($$); } primary_rhs_expr list_rhs_expr shift_rhs_expr
> +%type <expr> primary_rhs_expr list_rhs_expr shift_rhs_expr symbol_rhs_expr
> +%destructor { expr_free($$); } primary_rhs_expr list_rhs_expr shift_rhs_expr symbol_rhs_expr
> %type <expr> and_rhs_expr exclusive_or_rhs_expr inclusive_or_rhs_expr
> %destructor { expr_free($$); } and_rhs_expr exclusive_or_rhs_expr inclusive_or_rhs_expr
>
> @@ -3302,14 +3302,17 @@ ct_key_dir_optional : BYTES { $$ = NFT_CT_BYTES; }
> | ZONE { $$ = NFT_CT_ZONE; }
> ;
>
> +symbol_rhs_expr : symbol_expr
> + | keyword_expr
Could you rename this to symbol_stmt_expr?
So it's clear this refers to the grammar tree that deals with
*stmt_expr. Apart from that nitpick.
Acked-by: Pablo Neira Ayuso <pablo@netfilter.org>
^ permalink raw reply [flat|nested] 7+ messages in thread
end of thread, other threads:[~2017-09-27 17:57 UTC | newest]
Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2017-09-27 17:38 [PATCH nft 1/3] ct: make ct event set work with COMMA syntax Florian Westphal
2017-09-27 17:38 ` [PATCH nft 1/3] src: prepare for future ct timeout policy support Florian Westphal
2017-09-27 17:53 ` Pablo Neira Ayuso
2017-09-27 17:38 ` [PATCH nft 2/3] src: parser_bison: rename ct_block to ct_helper_block Florian Westphal
2017-09-27 17:54 ` Pablo Neira Ayuso
2017-09-27 17:38 ` [PATCH nft 3/3] bison: permit keywords in list_stmt_expressions Florian Westphal
2017-09-27 17:57 ` Pablo Neira Ayuso
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).