summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorPablo Neira Ayuso <pablo@netfilter.org>2023-05-07 19:34:19 +0200
committerPablo Neira Ayuso <pablo@netfilter.org>2023-11-02 11:56:20 +0100
commita8425f1504e17492aef664bd9fe290d82dcfe7b1 (patch)
tree3206c4e863412f4bfd925e63b18f3cc6bb1024f5 /src
parentf3271ee5a509f9603bbd9cc55a900389db36817d (diff)
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 <pablo@netfilter.org>
Diffstat (limited to 'src')
-rw-r--r--src/evaluate.c2
1 files changed, 1 insertions, 1 deletions
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: