diff options
author | Patrick McHardy <kaber@trash.net> | 2014-07-02 09:42:30 +0200 |
---|---|---|
committer | Patrick McHardy <kaber@trash.net> | 2014-07-10 12:21:50 +0200 |
commit | 74ba8966a7706a23f89184b6de68d1546e0bba44 (patch) | |
tree | d9a1189f70bbaeac4653146611b109604c438a46 | |
parent | ccf47494f9ec7c7a8188466cc1dbc170b8dceed0 (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>
-rw-r--r-- | src/evaluate.c | 1 |
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)) |