summaryrefslogtreecommitdiffstats
path: root/src/netlink_delinearize.c
diff options
context:
space:
mode:
authorFlorian Westphal <fw@strlen.de>2017-06-07 17:13:24 +0200
committerFlorian Westphal <fw@strlen.de>2017-06-07 17:28:50 +0200
commitcb8f81ac3079a5bb4b9bf49215f24db10fd8914f (patch)
tree17d7e43d0653adf05be609a6ef9b2fe78b15398d /src/netlink_delinearize.c
parent87cd3bcd69d7ada1163a06a48307cd67d2ea216f (diff)
netlink_delinearize: prefer ct event set foo,bar over 'set foo|bar'
Translates binop representation to a list-based one, so nft prints "ct event destroy,new" instead of 'ct event destroy|new'. Signed-off-by: Florian Westphal <fw@strlen.de> Acked-by: Pablo Neira Ayuso <pablo@netfilter.org>
Diffstat (limited to 'src/netlink_delinearize.c')
-rw-r--r--src/netlink_delinearize.c7
1 files changed, 6 insertions, 1 deletions
diff --git a/src/netlink_delinearize.c b/src/netlink_delinearize.c
index b355eff4..3ee07c0a 100644
--- a/src/netlink_delinearize.c
+++ b/src/netlink_delinearize.c
@@ -2205,8 +2205,13 @@ static void rule_parse_postprocess(struct netlink_parse_ctx *ctx, struct rule *r
expr_postprocess(&rctx, &stmt->meta.expr);
break;
case STMT_CT:
- if (stmt->ct.expr != NULL)
+ if (stmt->ct.expr != NULL) {
expr_postprocess(&rctx, &stmt->ct.expr);
+
+ if (stmt->ct.expr->ops->type == EXPR_BINOP)
+ stmt->ct.expr = binop_tree_to_list(NULL,
+ stmt->ct.expr);
+ }
break;
case STMT_NAT:
if (stmt->nat.addr != NULL)