summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPatrick McHardy <kaber@trash.net>2015-01-12 11:13:44 +0000
committerPatrick McHardy <kaber@trash.net>2015-01-12 13:21:24 +0000
commit08bc04a81ecd9cfdae1022bfe4b5f9507d3cd882 (patch)
treed63cdbfa6203281714c8b55d4d3b9c9131141cff
parent39d344742c1a4f9b94af0f659e63e0e4e1ffae4e (diff)
evaluate: properly set datatype of map expression
The datatype of the map expression is the datatype of the mappings. # nft add map filter test { type ipv4_addr : inet_service; } # nft filter output mark set ip daddr map @test Before: <cmdline>:1:24-41: Error: datatype mismatch: expected packet mark, expression has type IPv4 address filter output mark set ip daddr map @test ~~~~~~~~~^^^^^^^^^^^^^^^^^^ After: <cmdline>:1:24-41: Error: datatype mismatch: expected packet mark, expression has type internet network service filter output mark set ip daddr map @test ~~~~~~~~~^^^^^^^^^^^^^^^^^^ Signed-off-by: Patrick McHardy <kaber@trash.net>
-rw-r--r--src/evaluate.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/src/evaluate.c b/src/evaluate.c
index 651465aa..2067a011 100644
--- a/src/evaluate.c
+++ b/src/evaluate.c
@@ -748,7 +748,7 @@ static int expr_evaluate_map(struct eval_ctx *ctx, struct expr **expr)
map->mappings->ops->name);
}
- map->dtype = ctx->ectx.dtype;
+ map->dtype = map->mappings->set->datatype;
map->flags |= EXPR_F_CONSTANT;
/* Data for range lookups needs to be in big endian order */