]> git.ipfire.org Git - thirdparty/nftables.git/commitdiff
evaluate: permit get element on maps
authorFlorian Westphal <fw@strlen.de>
Tue, 21 Jul 2020 11:10:17 +0000 (13:10 +0200)
committerFlorian Westphal <fw@strlen.de>
Wed, 22 Jul 2020 00:33:13 +0000 (02:33 +0200)
Its possible to add an element to a map, but you can't read it back:

before:
nft add element inet filter test "{ 18.51.100.17 . ad:c1:ac:c0:ce:c0 . 3761 : 0x42 }"
nft get element inet filter test "{ 18.51.100.17 . ad:c1:ac:c0:ce:c0 . 3761 : 0x42 }"
Error: No such file or directory; did you mean map ‘test’ in table inet ‘filter’?
get element inet filter test { 18.51.100.17 . ad:c1:ac:c0:ce:c0 . 3761 : 0x42 }
                        ^^^^
after:
nft get element inet filter test "{ 18.51.100.17 . ad:c1:ac:c0:ce:c0 . 3761 : 0x42 }"
table inet filter {
        map test {
                type ipv4_addr . ether_addr . inet_service : mark
                flags interval,timeout
                elements = { 18.51.100.17 . ad:c1:ac:c0:ce:c0 . 3761 : 0x00000042 }
        }
}

Signed-off-by: Florian Westphal <fw@strlen.de>
src/evaluate.c

index 4ec91a1ce771256bcc92e59aad8fd4e41c4c9619..3e94e04790d077df8b2c58e9bd4e4aceafe970c2 100644 (file)
@@ -4188,20 +4188,8 @@ static int cmd_evaluate_delete(struct eval_ctx *ctx, struct cmd *cmd)
 
 static int cmd_evaluate_get(struct eval_ctx *ctx, struct cmd *cmd)
 {
-       struct table *table;
-       struct set *set;
-
        switch (cmd->obj) {
        case CMD_OBJ_ELEMENTS:
-               table = table_lookup(&cmd->handle, &ctx->nft->cache);
-               if (table == NULL)
-                       return table_not_found(ctx);
-
-               set = set_lookup(table, cmd->handle.set.name);
-               if (set == NULL || set_is_map(set->flags))
-                       return set_not_found(ctx, &ctx->cmd->handle.set.location,
-                                            ctx->cmd->handle.set.name);
-
                return setelem_evaluate(ctx, &cmd->expr);
        default:
                BUG("invalid command object type %u\n", cmd->obj);