mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-11-23 20:24:12 +08:00
netfilter: nft_dynset: dump expressions when set definition contains no expressions
If the set definition provides no stateful expressions, then include the
stateful expression in the ruleset listing. Without this fix, the dynset
rule listing shows the stateful expressions provided by the set
definition.
Fixes: 65038428b2
("netfilter: nf_tables: allow to specify stateful expression in set definition")
Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
This commit is contained in:
parent
0c5b7a501e
commit
ce5379963b
@ -384,22 +384,25 @@ static int nft_dynset_dump(struct sk_buff *skb, const struct nft_expr *expr)
|
||||
nf_jiffies64_to_msecs(priv->timeout),
|
||||
NFTA_DYNSET_PAD))
|
||||
goto nla_put_failure;
|
||||
if (priv->num_exprs == 1) {
|
||||
if (nft_expr_dump(skb, NFTA_DYNSET_EXPR, priv->expr_array[0]))
|
||||
goto nla_put_failure;
|
||||
} else if (priv->num_exprs > 1) {
|
||||
struct nlattr *nest;
|
||||
|
||||
nest = nla_nest_start_noflag(skb, NFTA_DYNSET_EXPRESSIONS);
|
||||
if (!nest)
|
||||
goto nla_put_failure;
|
||||
|
||||
for (i = 0; i < priv->num_exprs; i++) {
|
||||
if (nft_expr_dump(skb, NFTA_LIST_ELEM,
|
||||
priv->expr_array[i]))
|
||||
if (priv->set->num_exprs == 0) {
|
||||
if (priv->num_exprs == 1) {
|
||||
if (nft_expr_dump(skb, NFTA_DYNSET_EXPR,
|
||||
priv->expr_array[0]))
|
||||
goto nla_put_failure;
|
||||
} else if (priv->num_exprs > 1) {
|
||||
struct nlattr *nest;
|
||||
|
||||
nest = nla_nest_start_noflag(skb, NFTA_DYNSET_EXPRESSIONS);
|
||||
if (!nest)
|
||||
goto nla_put_failure;
|
||||
|
||||
for (i = 0; i < priv->num_exprs; i++) {
|
||||
if (nft_expr_dump(skb, NFTA_LIST_ELEM,
|
||||
priv->expr_array[i]))
|
||||
goto nla_put_failure;
|
||||
}
|
||||
nla_nest_end(skb, nest);
|
||||
}
|
||||
nla_nest_end(skb, nest);
|
||||
}
|
||||
if (nla_put_be32(skb, NFTA_DYNSET_FLAGS, htonl(flags)))
|
||||
goto nla_put_failure;
|
||||
|
Loading…
Reference in New Issue
Block a user