* [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 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).