From a61df019861997df76159b780070e2a09038798f Mon Sep 17 00:00:00 2001 From: Pablo Neira Ayuso Date: Sat, 5 Nov 2022 16:51:10 +0100 Subject: 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 --- src/optimize.c | 2 ++ 1 file changed, 2 insertions(+) (limited to 'src') 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; -- cgit v1.2.3