]> git.ipfire.org Git - thirdparty/nftables.git/commitdiff
netfilter: support for element deletion
authorAnder Juaristi <a@juaristi.eus>
Tue, 9 Jul 2019 18:03:52 +0000 (20:03 +0200)
committerFlorian Westphal <fw@strlen.de>
Thu, 29 Aug 2019 09:10:47 +0000 (11:10 +0200)
This patch implements element deletion from ruleset.

Example:

table ip set-test {
set testset {
type ipv4_addr;
flags timeout;
}

chain outputchain {
policy accept;
type filter hook output priority filter;

delete @testset { ip saddr }
}
}

Signed-off-by: Ander Juaristi <a@juaristi.eus>
Signed-off-by: Florian Westphal <fw@strlen.de>
include/linux/netfilter/nf_tables.h
src/parser_bison.y
src/statement.c

index 82abaa183fc30623fac2edf08dbae404cbd3bb14..ec1533990b01d5ebdfa970ddd62bf1b8de4b679f 100644 (file)
@@ -636,6 +636,7 @@ enum nft_lookup_attributes {
 enum nft_dynset_ops {
        NFT_DYNSET_OP_ADD,
        NFT_DYNSET_OP_UPDATE,
+       NFT_DYNSET_OP_DELETE,
 };
 
 enum nft_dynset_flags {
index bff5e274c7872199d94dd96b424e9f2356d87864..5fb3a60ab5cf4ded9ea548b1f4803de5968cf1b2 100644 (file)
@@ -3134,6 +3134,7 @@ set_stmt          :       SET     set_stmt_op     set_elem_expr_stmt      symbol_expr
 
 set_stmt_op            :       ADD     { $$ = NFT_DYNSET_OP_ADD; }
                        |       UPDATE  { $$ = NFT_DYNSET_OP_UPDATE; }
+                       |       DELETE  { $$ = NFT_DYNSET_OP_DELETE; }
                        ;
 
 map_stmt               :       set_stmt_op     symbol_expr '{' set_elem_expr_stmt      COLON   set_elem_expr_stmt      '}'
index a9e72de3edfdcfa662468a55acd9748548d3a82a..12689ee51043652619e4a8511e34ba4da2106212 100644 (file)
@@ -665,6 +665,7 @@ struct stmt *nat_stmt_alloc(const struct location *loc,
 const char * const set_stmt_op_names[] = {
        [NFT_DYNSET_OP_ADD]     = "add",
        [NFT_DYNSET_OP_UPDATE]  = "update",
+       [NFT_DYNSET_OP_DELETE]  = "delete",
 };
 
 static void set_stmt_print(const struct stmt *stmt, struct output_ctx *octx)