netfilter: nf_tables: add NFT_CHAIN_BINDING
This new chain flag specifies that: * the kernel dynamically allocates the chain name, if no chain name is specified. * If the immediate expression that refers to this chain is removed, then this bound chain (and its content) is destroyed. Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
This commit is contained in:
@@ -899,6 +899,8 @@ static inline struct nft_userdata *nft_userdata(const struct nft_rule *rule)
|
||||
return (void *)&rule->data[rule->dlen];
|
||||
}
|
||||
|
||||
void nf_tables_rule_release(const struct nft_ctx *ctx, struct nft_rule *rule);
|
||||
|
||||
static inline void nft_set_elem_update_expr(const struct nft_set_ext *ext,
|
||||
struct nft_regs *regs,
|
||||
const struct nft_pktinfo *pkt)
|
||||
@@ -944,7 +946,8 @@ struct nft_chain {
|
||||
struct nft_table *table;
|
||||
u64 handle;
|
||||
u32 use;
|
||||
u8 flags:6,
|
||||
u8 flags:5,
|
||||
bound:1,
|
||||
genmask:2;
|
||||
char *name;
|
||||
|
||||
@@ -989,6 +992,14 @@ int nft_chain_validate_dependency(const struct nft_chain *chain,
|
||||
int nft_chain_validate_hooks(const struct nft_chain *chain,
|
||||
unsigned int hook_flags);
|
||||
|
||||
static inline bool nft_chain_is_bound(struct nft_chain *chain)
|
||||
{
|
||||
return (chain->flags & NFT_CHAIN_BINDING) && chain->bound;
|
||||
}
|
||||
|
||||
void nft_chain_del(struct nft_chain *chain);
|
||||
void nf_tables_chain_destroy(struct nft_ctx *ctx);
|
||||
|
||||
struct nft_stats {
|
||||
u64 bytes;
|
||||
u64 pkts;
|
||||
|
Reference in New Issue
Block a user