Commit c604cc69 authored by Pablo Neira Ayuso's avatar Pablo Neira Ayuso
Browse files

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: default avatarPablo Neira Ayuso <pablo@netfilter.org>
parent 79e28519
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -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);
+18 −0
Original line number Diff line number Diff line
@@ -2557,6 +2557,24 @@ err1:
	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);
+0 −17
Original line number Diff line number Diff line
@@ -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)
{