Currently all implicitly declared sets are marked as constant. The flow
statement needs to implicitly declare non-constant sets, so instead of
unconditionally marking the set as constant, only do so if the declaring
expression is itself a constant set.

Signed-off-by: Patrick McHardy <[email protected]>
---
 src/evaluate.c | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/src/evaluate.c b/src/evaluate.c
index 63c0091..9c8add3 100644
--- a/src/evaluate.c
+++ b/src/evaluate.c
@@ -96,7 +96,7 @@ static struct expr *implicit_set_declaration(struct eval_ctx 
*ctx,
        struct handle h;
 
        set = set_alloc(&expr->location);
-       set->flags      = SET_F_CONSTANT | SET_F_ANONYMOUS | expr->set_flags;
+       set->flags      = SET_F_ANONYMOUS | expr->set_flags;
        set->handle.set = xstrdup(set->flags & SET_F_MAP ? "map%d" : "set%d");
        set->keytype    = keytype;
        set->keylen     = keylen;
@@ -963,6 +963,8 @@ static int expr_evaluate_set(struct eval_ctx *ctx, struct 
expr **expr)
                        set->set_flags |= SET_F_INTERVAL;
        }
 
+       set->set_flags |= SET_F_CONSTANT;
+
        set->dtype = ctx->ectx.dtype;
        set->len   = ctx->ectx.len;
        set->flags |= EXPR_F_CONSTANT;
-- 
2.5.5

--
To unsubscribe from this list: send the line "unsubscribe netfilter-devel" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to