]> git.ipfire.org Git - thirdparty/nftables.git/commitdiff
parser_bison: delete table via table handle
authorHarsha Sharma <harshasharmaiitr@gmail.com>
Mon, 8 Jan 2018 17:57:07 +0000 (23:27 +0530)
committerPablo Neira Ayuso <pablo@netfilter.org>
Mon, 5 Mar 2018 15:39:35 +0000 (16:39 +0100)
This patch allows deletion of table via unique table handles and table
family which can be listed with '-a' option.
For.eg.
nft delete table [<family>] [handle <handle>]

Signed-off-by: Harsha Sharma <harshasharmaiitr@gmail.com>
Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
src/parser_bison.y

index b637ab0738c8960f205693c684c6d01a046b895f..49269b7b2c9e39d1be5bb5c99e66e4934700e146 100644 (file)
@@ -507,8 +507,8 @@ int nft_lex(void *, void *, void *);
 %type <cmd>                    base_cmd add_cmd replace_cmd create_cmd insert_cmd delete_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 list_cmd reset_cmd flush_cmd rename_cmd export_cmd monitor_cmd describe_cmd import_cmd
 
-%type <handle>                 table_spec chain_spec flowtable_spec chain_identifier ruleid_spec handle_spec position_spec rule_position ruleset_spec
-%destructor { handle_free(&$$); } table_spec chain_spec flowtable_spec chain_identifier ruleid_spec handle_spec position_spec rule_position ruleset_spec
+%type <handle>                 table_spec tableid_spec chain_spec flowtable_spec chain_identifier ruleid_spec handle_spec position_spec rule_position ruleset_spec
+%destructor { handle_free(&$$); } table_spec tableid_spec chain_spec flowtable_spec chain_identifier ruleid_spec handle_spec position_spec rule_position ruleset_spec
 %type <handle>                 set_spec set_identifier flowtable_identifier obj_spec obj_identifier
 %destructor { handle_free(&$$); } set_spec set_identifier obj_spec obj_identifier
 %type <val>                    family_spec family_spec_explicit chain_policy prio_spec
@@ -1025,6 +1025,10 @@ insert_cmd               :       RULE            rule_position   rule
                        ;
 
 delete_cmd             :       TABLE           table_spec
+                       {
+                               $$ = cmd_alloc(CMD_DELETE, CMD_OBJ_TABLE, &$2, &@$, NULL);
+                       }
+                       |       TABLE           tableid_spec
                        {
                                $$ = cmd_alloc(CMD_DELETE, CMD_OBJ_TABLE, &$2, &@$, NULL);
                        }
@@ -1810,6 +1814,15 @@ table_spec               :       family_spec     identifier
                        }
                        ;
 
+tableid_spec           :       family_spec     HANDLE NUM
+                       {
+                               memset(&$$, 0, sizeof($$));
+                               $$.family               = $1;
+                               $$.handle.id            = $3;
+                               $$.handle.location      = @$;
+                       }
+                       ;
+
 chain_spec             :       table_spec      identifier
                        {
                                $$              = $1;