Skip to content

Commit e6ba7cb

Browse files
committed
netfilter: nftables: add helper function to flush set elements
This patch adds nft_set_flush() which prepares for the catch-all element support. Signed-off-by: Pablo Neira Ayuso <[email protected]>
1 parent 6387aa6 commit e6ba7cb

File tree

1 file changed

+18
-13
lines changed

1 file changed

+18
-13
lines changed

net/netfilter/nf_tables_api.c

Lines changed: 18 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -5839,10 +5839,10 @@ static int nft_del_setelem(struct nft_ctx *ctx, struct nft_set *set,
58395839
return err;
58405840
}
58415841

5842-
static int nft_flush_set(const struct nft_ctx *ctx,
5843-
struct nft_set *set,
5844-
const struct nft_set_iter *iter,
5845-
struct nft_set_elem *elem)
5842+
static int nft_setelem_flush(const struct nft_ctx *ctx,
5843+
struct nft_set *set,
5844+
const struct nft_set_iter *iter,
5845+
struct nft_set_elem *elem)
58465846
{
58475847
struct nft_trans *trans;
58485848
int err;
@@ -5869,6 +5869,18 @@ static int nft_flush_set(const struct nft_ctx *ctx,
58695869
return err;
58705870
}
58715871

5872+
static int nft_set_flush(struct nft_ctx *ctx, struct nft_set *set, u8 genmask)
5873+
{
5874+
struct nft_set_iter iter = {
5875+
.genmask = genmask,
5876+
.fn = nft_setelem_flush,
5877+
};
5878+
5879+
set->ops->walk(ctx, set, &iter);
5880+
5881+
return iter.err;
5882+
}
5883+
58725884
static int nf_tables_delsetelem(struct sk_buff *skb,
58735885
const struct nfnl_info *info,
58745886
const struct nlattr * const nla[])
@@ -5892,15 +5904,8 @@ static int nf_tables_delsetelem(struct sk_buff *skb,
58925904
if (!list_empty(&set->bindings) && set->flags & NFT_SET_CONSTANT)
58935905
return -EBUSY;
58945906

5895-
if (nla[NFTA_SET_ELEM_LIST_ELEMENTS] == NULL) {
5896-
struct nft_set_iter iter = {
5897-
.genmask = genmask,
5898-
.fn = nft_flush_set,
5899-
};
5900-
set->ops->walk(&ctx, set, &iter);
5901-
5902-
return iter.err;
5903-
}
5907+
if (!nla[NFTA_SET_ELEM_LIST_ELEMENTS])
5908+
return nft_set_flush(&ctx, set, genmask);
59045909

59055910
nla_for_each_nested(attr, nla[NFTA_SET_ELEM_LIST_ELEMENTS], rem) {
59065911
err = nft_del_setelem(&ctx, set, attr);

0 commit comments

Comments
 (0)