|
@@ -209,7 +209,7 @@ static int nft_nat_init(const struct nft_ctx *ctx, const struct nft_expr *expr,
|
|
|
return -EINVAL;
|
|
|
}
|
|
|
|
|
|
- return 0;
|
|
|
+ return nf_ct_netns_get(ctx->net, family);
|
|
|
}
|
|
|
|
|
|
static int nft_nat_dump(struct sk_buff *skb, const struct nft_expr *expr)
|
|
@@ -257,12 +257,21 @@ nla_put_failure:
|
|
|
return -1;
|
|
|
}
|
|
|
|
|
|
+static void
|
|
|
+nft_nat_destroy(const struct nft_ctx *ctx, const struct nft_expr *expr)
|
|
|
+{
|
|
|
+ const struct nft_nat *priv = nft_expr_priv(expr);
|
|
|
+
|
|
|
+ nf_ct_netns_put(ctx->net, priv->family);
|
|
|
+}
|
|
|
+
|
|
|
static struct nft_expr_type nft_nat_type;
|
|
|
static const struct nft_expr_ops nft_nat_ops = {
|
|
|
.type = &nft_nat_type,
|
|
|
.size = NFT_EXPR_SIZE(sizeof(struct nft_nat)),
|
|
|
.eval = nft_nat_eval,
|
|
|
.init = nft_nat_init,
|
|
|
+ .destroy = nft_nat_destroy,
|
|
|
.dump = nft_nat_dump,
|
|
|
.validate = nft_nat_validate,
|
|
|
};
|