From a8425f1504e17492aef664bd9fe290d82dcfe7b1 Mon Sep 17 00:00:00 2001 From: Pablo Neira Ayuso Date: Sun, 7 May 2023 19:34:19 +0200 Subject: evaluate: skip optimization if anonymous set uses stateful statement commit 033a664e89362e8c0c191a823bc37a6f92e8c89e upstream. fee6bda06403 ("evaluate: remove anon sets with exactly one element") introduces an optimization to remove use of sets with single element. Skip this optimization if set element contains stateful statements. Signed-off-by: Pablo Neira Ayuso --- src/evaluate.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src') diff --git a/src/evaluate.c b/src/evaluate.c index 85e607f1..e9133eab 100644 --- a/src/evaluate.c +++ b/src/evaluate.c @@ -1669,7 +1669,7 @@ static int expr_evaluate_set(struct eval_ctx *ctx, struct expr **expr) set->set_flags |= NFT_SET_CONCAT; } else if (set->size == 1) { i = list_first_entry(&set->expressions, struct expr, list); - if (i->etype == EXPR_SET_ELEM) { + if (i->etype == EXPR_SET_ELEM && list_empty(&i->stmt_list)) { switch (i->key->etype) { case EXPR_PREFIX: case EXPR_RANGE: -- cgit v1.2.3