mirror of https://gitee.com/openkylin/linux.git
netfilter: nf_tables: move nft_expr_clone() to nf_tables_api.c
Move the nft_expr_clone() helper function to the core. Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
This commit is contained in:
parent
79e28519ac
commit
c604cc691c
|
@ -846,6 +846,7 @@ static inline void *nft_expr_priv(const struct nft_expr *expr)
|
|||
return (void *)expr->data;
|
||||
}
|
||||
|
||||
int nft_expr_clone(struct nft_expr *dst, struct nft_expr *src);
|
||||
void nft_expr_destroy(const struct nft_ctx *ctx, struct nft_expr *expr);
|
||||
int nft_expr_dump(struct sk_buff *skb, unsigned int attr,
|
||||
const struct nft_expr *expr);
|
||||
|
|
|
@ -2557,6 +2557,24 @@ static struct nft_expr *nft_expr_init(const struct nft_ctx *ctx,
|
|||
return ERR_PTR(err);
|
||||
}
|
||||
|
||||
int nft_expr_clone(struct nft_expr *dst, struct nft_expr *src)
|
||||
{
|
||||
int err;
|
||||
|
||||
if (src->ops->clone) {
|
||||
dst->ops = src->ops;
|
||||
err = src->ops->clone(dst, src);
|
||||
if (err < 0)
|
||||
return err;
|
||||
} else {
|
||||
memcpy(dst, src, src->ops->size);
|
||||
}
|
||||
|
||||
__module_get(src->ops->type->owner);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
void nft_expr_destroy(const struct nft_ctx *ctx, struct nft_expr *expr)
|
||||
{
|
||||
nf_tables_expr_destroy(ctx, expr);
|
||||
|
|
|
@ -24,23 +24,6 @@ struct nft_dynset {
|
|||
struct nft_set_binding binding;
|
||||
};
|
||||
|
||||
static int nft_expr_clone(struct nft_expr *dst, struct nft_expr *src)
|
||||
{
|
||||
int err;
|
||||
|
||||
if (src->ops->clone) {
|
||||
dst->ops = src->ops;
|
||||
err = src->ops->clone(dst, src);
|
||||
if (err < 0)
|
||||
return err;
|
||||
} else {
|
||||
memcpy(dst, src, src->ops->size);
|
||||
}
|
||||
|
||||
__module_get(src->ops->type->owner);
|
||||
return 0;
|
||||
}
|
||||
|
||||
static void *nft_dynset_new(struct nft_set *set, const struct nft_expr *expr,
|
||||
struct nft_regs *regs)
|
||||
{
|
||||
|
|
Loading…
Reference in New Issue