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;
|
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);
|
void nft_expr_destroy(const struct nft_ctx *ctx, struct nft_expr *expr);
|
||||||
int nft_expr_dump(struct sk_buff *skb, unsigned int attr,
|
int nft_expr_dump(struct sk_buff *skb, unsigned int attr,
|
||||||
const struct nft_expr *expr);
|
const struct nft_expr *expr);
|
||||||
|
@ -2557,6 +2557,24 @@ err1:
|
|||||||
return ERR_PTR(err);
|
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)
|
void nft_expr_destroy(const struct nft_ctx *ctx, struct nft_expr *expr)
|
||||||
{
|
{
|
||||||
nf_tables_expr_destroy(ctx, expr);
|
nf_tables_expr_destroy(ctx, expr);
|
||||||
|
@ -24,23 +24,6 @@ struct nft_dynset {
|
|||||||
struct nft_set_binding binding;
|
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,
|
static void *nft_dynset_new(struct nft_set *set, const struct nft_expr *expr,
|
||||||
struct nft_regs *regs)
|
struct nft_regs *regs)
|
||||||
{
|
{
|
||||||
|
Loading…
x
Reference in New Issue
Block a user