summaryrefslogtreecommitdiffstats
path: root/src/optimize.c
diff options
context:
space:
mode:
authorPablo Neira Ayuso <pablo@netfilter.org>2022-11-05 16:51:10 +0100
committerPablo Neira Ayuso <pablo@netfilter.org>2022-11-05 16:54:26 +0100
commita61df019861997df76159b780070e2a09038798f (patch)
tree5ff3ec90af0b3eacdd6f74694618b2714bc50315 /src/optimize.c
parentc8a3c669499d169fef8c1e89b8d2d909e5ecd023 (diff)
optimize: handle prefix and range when merging into set + concatenation
The following ruleset fails to be merged using set + concatenation: meta iifname eth1 ip saddr 1.1.1.2 ip daddr 2.2.3.0/24 accept meta iifname eth1 ip saddr 1.1.1.2 ip daddr 2.2.4.0-2.2.4.10 accept hitting the following assertion: nft: optimize.c:585: __merge_concat_stmts: Assertion `0' failed. Abort This patch also updates tests/shell. Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
Diffstat (limited to 'src/optimize.c')
-rw-r--r--src/optimize.c2
1 files changed, 2 insertions, 0 deletions
diff --git a/src/optimize.c b/src/optimize.c
index 180a7d55..09013efc 100644
--- a/src/optimize.c
+++ b/src/optimize.c
@@ -578,6 +578,8 @@ static void __merge_concat_stmts(const struct optimize_ctx *ctx, uint32_t i,
break;
case EXPR_SYMBOL:
case EXPR_VALUE:
+ case EXPR_PREFIX:
+ case EXPR_RANGE:
clone = expr_clone(stmt_a->expr->right);
compound_expr_add(concat, clone);
break;