* [PATCH nft 1/3] parser: squash duplicated spec/specid rules
@ 2021-03-04 1:07 Florian Westphal
2021-03-04 1:07 ` [PATCH nft 2/3] parser: compact map RHS type Florian Westphal
2021-03-04 1:07 ` [PATCH nft 3/3] parser: compact ct obj list types Florian Westphal
0 siblings, 2 replies; 4+ messages in thread
From: Florian Westphal @ 2021-03-04 1:07 UTC (permalink / raw)
To: netfilter-devel; +Cc: Florian Westphal
No need to have duplicate CMD rules for spec and specid: add and use
a common rule for those cases.
Signed-off-by: Florian Westphal <fw@strlen.de>
---
src/parser_bison.y | 82 +++++++++++++++++++++-------------------------
1 file changed, 38 insertions(+), 44 deletions(-)
diff --git a/src/parser_bison.y b/src/parser_bison.y
index a2c150180ca3..363569ffacb6 100644
--- a/src/parser_bison.y
+++ b/src/parser_bison.y
@@ -588,10 +588,20 @@ int nft_lex(void *, void *, void *);
%type <cmd> base_cmd add_cmd replace_cmd create_cmd insert_cmd delete_cmd get_cmd list_cmd reset_cmd flush_cmd rename_cmd export_cmd monitor_cmd describe_cmd import_cmd
%destructor { cmd_free($$); } base_cmd add_cmd replace_cmd create_cmd insert_cmd delete_cmd get_cmd list_cmd reset_cmd flush_cmd rename_cmd export_cmd monitor_cmd describe_cmd import_cmd
-%type <handle> table_spec tableid_spec chain_spec chainid_spec flowtable_spec chain_identifier ruleid_spec handle_spec position_spec rule_position ruleset_spec index_spec
-%destructor { handle_free(&$$); } table_spec tableid_spec chain_spec chainid_spec flowtable_spec chain_identifier ruleid_spec handle_spec position_spec rule_position ruleset_spec index_spec
-%type <handle> set_spec setid_spec set_identifier flowtableid_spec flowtable_identifier obj_spec objid_spec obj_identifier
-%destructor { handle_free(&$$); } set_spec setid_spec set_identifier flowtableid_spec obj_spec objid_spec obj_identifier
+%type <handle> table_spec tableid_spec table_or_id_spec
+%destructor { handle_free(&$$); } table_spec tableid_spec table_or_id_spec
+%type <handle> chain_spec chainid_spec chain_or_id_spec
+%destructor { handle_free(&$$); } chain_spec chainid_spec chain_or_id_spec
+
+%type <handle> flowtable_spec chain_identifier ruleid_spec handle_spec position_spec rule_position ruleset_spec index_spec
+%destructor { handle_free(&$$); } flowtable_spec chain_identifier ruleid_spec handle_spec position_spec rule_position ruleset_spec index_spec
+%type <handle> set_spec setid_spec set_or_id_spec
+%destructor { handle_free(&$$); } set_spec setid_spec set_or_id_spec
+%type <handle> obj_spec objid_spec obj_or_id_spec
+%destructor { handle_free(&$$); } obj_spec objid_spec obj_or_id_spec
+
+%type <handle> set_identifier flowtableid_spec flowtable_identifier obj_identifier
+%destructor { handle_free(&$$); } set_identifier flowtableid_spec obj_identifier
%type <val> family_spec family_spec_explicit
%type <val32> int_num chain_policy
%type <prio_spec> extended_prio_spec prio_spec
@@ -1167,19 +1177,27 @@ insert_cmd : RULE rule_position rule
}
;
-delete_cmd : TABLE table_spec
- {
- $$ = cmd_alloc(CMD_DELETE, CMD_OBJ_TABLE, &$2, &@$, NULL);
- }
- | TABLE tableid_spec
+table_or_id_spec : table_spec
+ | tableid_spec
+ ;
+
+chain_or_id_spec : chain_spec
+ | chainid_spec
+ ;
+
+set_or_id_spec : set_spec
+ | setid_spec
+ ;
+
+obj_or_id_spec : obj_spec
+ | objid_spec
+ ;
+
+delete_cmd : TABLE table_or_id_spec
{
$$ = cmd_alloc(CMD_DELETE, CMD_OBJ_TABLE, &$2, &@$, NULL);
}
- | CHAIN chain_spec
- {
- $$ = cmd_alloc(CMD_DELETE, CMD_OBJ_CHAIN, &$2, &@$, NULL);
- }
- | CHAIN chainid_spec
+ | CHAIN chain_or_id_spec
{
$$ = cmd_alloc(CMD_DELETE, CMD_OBJ_CHAIN, &$2, &@$, NULL);
}
@@ -1187,11 +1205,7 @@ delete_cmd : TABLE table_spec
{
$$ = cmd_alloc(CMD_DELETE, CMD_OBJ_RULE, &$2, &@$, NULL);
}
- | SET set_spec
- {
- $$ = cmd_alloc(CMD_DELETE, CMD_OBJ_SET, &$2, &@$, NULL);
- }
- | SET setid_spec
+ | SET set_or_id_spec
{
$$ = cmd_alloc(CMD_DELETE, CMD_OBJ_SET, &$2, &@$, NULL);
}
@@ -1218,19 +1232,11 @@ delete_cmd : TABLE table_spec
handle_merge(&$3->handle, &$2);
$$ = cmd_alloc(CMD_DELETE, CMD_OBJ_FLOWTABLE, &$2, &@$, $5);
}
- | COUNTER obj_spec
+ | COUNTER obj_or_id_spec
{
$$ = cmd_alloc(CMD_DELETE, CMD_OBJ_COUNTER, &$2, &@$, NULL);
}
- | COUNTER objid_spec
- {
- $$ = cmd_alloc(CMD_DELETE, CMD_OBJ_COUNTER, &$2, &@$, NULL);
- }
- | QUOTA obj_spec
- {
- $$ = cmd_alloc(CMD_DELETE, CMD_OBJ_QUOTA, &$2, &@$, NULL);
- }
- | QUOTA objid_spec
+ | QUOTA obj_or_id_spec
{
$$ = cmd_alloc(CMD_DELETE, CMD_OBJ_QUOTA, &$2, &@$, NULL);
}
@@ -1238,27 +1244,15 @@ delete_cmd : TABLE table_spec
{
$$ = cmd_alloc_obj_ct(CMD_DELETE, $2, &$3, &@$, $4);
}
- | LIMIT obj_spec
+ | LIMIT obj_or_id_spec
{
$$ = cmd_alloc(CMD_DELETE, CMD_OBJ_LIMIT, &$2, &@$, NULL);
}
- | LIMIT objid_spec
- {
- $$ = cmd_alloc(CMD_DELETE, CMD_OBJ_LIMIT, &$2, &@$, NULL);
- }
- | SECMARK obj_spec
- {
- $$ = cmd_alloc(CMD_DELETE, CMD_OBJ_SECMARK, &$2, &@$, NULL);
- }
- | SECMARK objid_spec
+ | SECMARK obj_or_id_spec
{
$$ = cmd_alloc(CMD_DELETE, CMD_OBJ_SECMARK, &$2, &@$, NULL);
}
- | SYNPROXY obj_spec
- {
- $$ = cmd_alloc(CMD_DELETE, CMD_OBJ_SYNPROXY, &$2, &@$, NULL);
- }
- | SYNPROXY objid_spec
+ | SYNPROXY obj_or_id_spec
{
$$ = cmd_alloc(CMD_DELETE, CMD_OBJ_SYNPROXY, &$2, &@$, NULL);
}
--
2.26.2
^ permalink raw reply related [flat|nested] 4+ messages in thread
* [PATCH nft 2/3] parser: compact map RHS type
2021-03-04 1:07 [PATCH nft 1/3] parser: squash duplicated spec/specid rules Florian Westphal
@ 2021-03-04 1:07 ` Florian Westphal
2021-03-05 20:16 ` Pablo Neira Ayuso
2021-03-04 1:07 ` [PATCH nft 3/3] parser: compact ct obj list types Florian Westphal
1 sibling, 1 reply; 4+ messages in thread
From: Florian Westphal @ 2021-03-04 1:07 UTC (permalink / raw)
To: netfilter-devel; +Cc: Florian Westphal
Similar to previous patch, we can avoid duplication.
Signed-off-by: Florian Westphal <fw@strlen.de>
---
src/parser_bison.y | 38 +++++++++-----------------------------
1 file changed, 9 insertions(+), 29 deletions(-)
diff --git a/src/parser_bison.y b/src/parser_bison.y
index 363569ffacb6..c4f3e341333d 100644
--- a/src/parser_bison.y
+++ b/src/parser_bison.y
@@ -627,6 +627,7 @@ int nft_lex(void *, void *, void *);
%type <set> map_block_alloc map_block
%destructor { set_free($$); } map_block_alloc
+%type <val> map_block_obj_type
%type <flowtable> flowtable_block_alloc flowtable_block
%destructor { flowtable_free($$); } flowtable_block_alloc
@@ -1877,6 +1878,12 @@ map_block_alloc : /* empty */
}
;
+map_block_obj_type : COUNTER { $$ = NFT_OBJECT_COUNTER; }
+ | QUOTA { $$ = NFT_OBJECT_QUOTA; }
+ | LIMIT { $$ = NFT_OBJECT_LIMIT; }
+ | SECMARK { $$ = NFT_OBJECT_SECMARK; }
+ ;
+
map_block : /* empty */ { $$ = $<set>-1; }
| map_block common_block
| map_block stmt_separator
@@ -1930,38 +1937,11 @@ map_block : /* empty */ { $$ = $<set>-1; }
$$ = $1;
}
| map_block TYPE
- data_type_expr COLON COUNTER
- stmt_separator
- {
- $1->key = $3;
- $1->objtype = NFT_OBJECT_COUNTER;
- $1->flags |= NFT_SET_OBJECT;
- $$ = $1;
- }
- | map_block TYPE
- data_type_expr COLON QUOTA
- stmt_separator
- {
- $1->key = $3;
- $1->objtype = NFT_OBJECT_QUOTA;
- $1->flags |= NFT_SET_OBJECT;
- $$ = $1;
- }
- | map_block TYPE
- data_type_expr COLON LIMIT
- stmt_separator
- {
- $1->key = $3;
- $1->objtype = NFT_OBJECT_LIMIT;
- $1->flags |= NFT_SET_OBJECT;
- $$ = $1;
- }
- | map_block TYPE
- data_type_expr COLON SECMARK
+ data_type_expr COLON map_block_obj_type
stmt_separator
{
$1->key = $3;
- $1->objtype = NFT_OBJECT_SECMARK;
+ $1->objtype = $5;
$1->flags |= NFT_SET_OBJECT;
$$ = $1;
}
--
2.26.2
^ permalink raw reply related [flat|nested] 4+ messages in thread
* [PATCH nft 3/3] parser: compact ct obj list types
2021-03-04 1:07 [PATCH nft 1/3] parser: squash duplicated spec/specid rules Florian Westphal
2021-03-04 1:07 ` [PATCH nft 2/3] parser: compact map RHS type Florian Westphal
@ 2021-03-04 1:07 ` Florian Westphal
1 sibling, 0 replies; 4+ messages in thread
From: Florian Westphal @ 2021-03-04 1:07 UTC (permalink / raw)
To: netfilter-devel; +Cc: Florian Westphal
Add new ct_cmd_type and avoid copypaste of the ct cmd_list rules.
Signed-off-by: Florian Westphal <fw@strlen.de>
---
src/parser_bison.y | 19 ++++++++-----------
1 file changed, 8 insertions(+), 11 deletions(-)
diff --git a/src/parser_bison.y b/src/parser_bison.y
index c4f3e341333d..bfb181747ca1 100644
--- a/src/parser_bison.y
+++ b/src/parser_bison.y
@@ -838,7 +838,7 @@ int nft_lex(void *, void *, void *);
%destructor { expr_free($$); } exthdr_exists_expr
%type <val> exthdr_key
-%type <val> ct_l4protoname ct_obj_type
+%type <val> ct_l4protoname ct_obj_type ct_cmd_type
%type <list> timeout_states timeout_state
%destructor { xfree($$); } timeout_states timeout_state
@@ -1393,17 +1393,9 @@ list_cmd : TABLE table_spec
{
$$ = cmd_alloc_obj_ct(CMD_LIST, $2, &$3, &@$, NULL);
}
- | CT HELPERS TABLE table_spec
+ | CT ct_cmd_type TABLE table_spec
{
- $$ = cmd_alloc(CMD_LIST, CMD_OBJ_CT_HELPERS, &$4, &@$, NULL);
- }
- | CT TIMEOUT TABLE table_spec
- {
- $$ = cmd_alloc(CMD_LIST, CMD_OBJ_CT_TIMEOUT, &$4, &@$, NULL);
- }
- | CT EXPECTATION TABLE table_spec
- {
- $$ = cmd_alloc(CMD_LIST, CMD_OBJ_CT_EXPECT, &$4, &@$, NULL);
+ $$ = cmd_alloc(CMD_LIST, $2, &$4, &@$, NULL);
}
;
@@ -4292,6 +4284,11 @@ ct_obj_type : HELPER { $$ = NFT_OBJECT_CT_HELPER; }
| EXPECTATION { $$ = NFT_OBJECT_CT_EXPECT; }
;
+ct_cmd_type : HELPERS { $$ = CMD_OBJ_CT_HELPERS; }
+ | TIMEOUT { $$ = CMD_OBJ_CT_TIMEOUT; }
+ | EXPECTATION { $$ = CMD_OBJ_CT_EXPECT; }
+ ;
+
ct_l4protoname : TCP { $$ = IPPROTO_TCP; }
| UDP { $$ = IPPROTO_UDP; }
;
--
2.26.2
^ permalink raw reply related [flat|nested] 4+ messages in thread
* Re: [PATCH nft 2/3] parser: compact map RHS type
2021-03-04 1:07 ` [PATCH nft 2/3] parser: compact map RHS type Florian Westphal
@ 2021-03-05 20:16 ` Pablo Neira Ayuso
0 siblings, 0 replies; 4+ messages in thread
From: Pablo Neira Ayuso @ 2021-03-05 20:16 UTC (permalink / raw)
To: Florian Westphal; +Cc: netfilter-devel
On Thu, Mar 04, 2021 at 02:07:34AM +0100, Florian Westphal wrote:
> Similar to previous patch, we can avoid duplication.
LGTM
^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2021-03-05 20:16 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-03-04 1:07 [PATCH nft 1/3] parser: squash duplicated spec/specid rules Florian Westphal
2021-03-04 1:07 ` [PATCH nft 2/3] parser: compact map RHS type Florian Westphal
2021-03-05 20:16 ` Pablo Neira Ayuso
2021-03-04 1:07 ` [PATCH nft 3/3] parser: compact ct obj list types Florian Westphal
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.