summaryrefslogtreecommitdiffstats
path: root/src/evaluate.c
diff options
context:
space:
mode:
authorPatrick McHardy <kaber@trash.net>2014-07-02 09:42:30 +0200
committerPatrick McHardy <kaber@trash.net>2014-07-10 12:21:50 +0200
commit74ba8966a7706a23f89184b6de68d1546e0bba44 (patch)
treed9a1189f70bbaeac4653146611b109604c438a46 /src/evaluate.c
parentccf47494f9ec7c7a8188466cc1dbc170b8dceed0 (diff)
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 } <cmdline>: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 <kaber@trash.net>
Diffstat (limited to 'src/evaluate.c')
-rw-r--r--src/evaluate.c1
1 files changed, 1 insertions, 0 deletions
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))