summaryrefslogtreecommitdiff
path: root/net/netfilter/nft_dynset.c
diff options
context:
space:
mode:
authorPablo Neira Ayuso <pablo@netfilter.org>2021-01-16 12:26:46 +0100
committerPablo Neira Ayuso <pablo@netfilter.org>2021-01-16 18:57:26 +0100
commitfca05d4d61e65fa573a3768f9019a42143c03349 (patch)
treeeaa0f40aca7c42e0ed2f9ebb655ba4fcdfdfa07e /net/netfilter/nft_dynset.c
parentc8a8ead01736419a14c3106e1f26a79d74fc84c7 (diff)
netfilter: nft_dynset: honor stateful expressions in set definition
If the set definition contains stateful expressions, allocate them for the newly added entries from the packet path. Fixes: 65038428b2c6 ("netfilter: nf_tables: allow to specify stateful expression in set definition") Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
Diffstat (limited to 'net/netfilter/nft_dynset.c')
-rw-r--r--net/netfilter/nft_dynset.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/net/netfilter/nft_dynset.c b/net/netfilter/nft_dynset.c
index 0b053f75cd60..86204740f6c7 100644
--- a/net/netfilter/nft_dynset.c
+++ b/net/netfilter/nft_dynset.c
@@ -295,6 +295,12 @@ static int nft_dynset_init(const struct nft_ctx *ctx,
err = -EOPNOTSUPP;
goto err_expr_free;
}
+ } else if (set->num_exprs > 0) {
+ err = nft_set_elem_expr_clone(ctx, set, priv->expr_array);
+ if (err < 0)
+ return err;
+
+ priv->num_exprs = set->num_exprs;
}
nft_set_ext_prepare(&priv->tmpl);