]> git.ipfire.org Git - thirdparty/nftables.git/commitdiff
evaluate: properly set datatype of map expression
authorPatrick McHardy <kaber@trash.net>
Mon, 12 Jan 2015 11:13:44 +0000 (11:13 +0000)
committerPatrick McHardy <kaber@trash.net>
Mon, 12 Jan 2015 13:21:24 +0000 (13:21 +0000)
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>
src/evaluate.c

index 651465aa4d04adfd82c692c5f4e67de6185cb723..2067a011c1a2b22c6d2ed29ffa887a71e3ca7ac8 100644 (file)
@@ -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 */