From 74ba8966a7706a23f89184b6de68d1546e0bba44 Mon Sep 17 00:00:00 2001 From: Patrick McHardy Date: Wed, 2 Jul 2014 09:42:30 +0200 Subject: evaluate: fix concat expressions as map arguments The type in the evaluation context needs to be reset to avoid treating the concatenation as a right hand side relational expression. # nft filter output mark set ip daddr . tcp dport map { 192.168.0.1 . 22 : 1 } :1:24-43: Error: datatype mismatch, expected packet mark, expression has type concatenation of (IPv4 address, internet network service) filter output mark set ip daddr . tcp dport map { 192.168.0.1 . 22 : 1 } ^^^^^^^^^^^^^^^^^^^^ Signed-off-by: Patrick McHardy --- src/evaluate.c | 1 + 1 file changed, 1 insertion(+) (limited to 'src/evaluate.c') diff --git a/src/evaluate.c b/src/evaluate.c index 2330bbb2..e05473a9 100644 --- a/src/evaluate.c +++ b/src/evaluate.c @@ -703,6 +703,7 @@ static int expr_evaluate_map(struct eval_ctx *ctx, struct expr **expr) struct expr_ctx ectx = ctx->ectx; struct expr *map = *expr, *mappings; + expr_set_context(&ctx->ectx, NULL, 0); if (expr_evaluate(ctx, &map->map) < 0) return -1; if (expr_is_constant(map->map)) -- cgit v1.2.3