diff options
author | Patrick McHardy <kaber@trash.net> | 2015-01-12 11:13:44 +0000 |
---|---|---|
committer | Patrick McHardy <kaber@trash.net> | 2015-01-12 13:21:24 +0000 |
commit | 08bc04a81ecd9cfdae1022bfe4b5f9507d3cd882 (patch) | |
tree | d63cdbfa6203281714c8b55d4d3b9c9131141cff /src | |
parent | 39d344742c1a4f9b94af0f659e63e0e4e1ffae4e (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>
Diffstat (limited to 'src')
-rw-r--r-- | src/evaluate.c | 2 |
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 */ |