From 08bc04a81ecd9cfdae1022bfe4b5f9507d3cd882 Mon Sep 17 00:00:00 2001 From: Patrick McHardy Date: Mon, 12 Jan 2015 11:13:44 +0000 Subject: 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: :1:24-41: Error: datatype mismatch: expected packet mark, expression has type IPv4 address filter output mark set ip daddr map @test ~~~~~~~~~^^^^^^^^^^^^^^^^^^ After: :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 --- src/evaluate.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src') 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 */ -- cgit v1.2.3