]> git.ipfire.org Git - thirdparty/nftables.git/commitdiff
netlink: delinearize: copy set keytype if needed
authorFlorian Westphal <fw@strlen.de>
Tue, 25 Jul 2023 16:51:34 +0000 (18:51 +0200)
committerPablo Neira Ayuso <pablo@netfilter.org>
Thu, 2 Nov 2023 10:56:20 +0000 (11:56 +0100)
commit 52c200b490d806da47d1f30448470e202e97f635 upstream.

Output before:
add @dynmark { 0xa020304 [invalid type] timeout 1s : 0x00000002 } comment "also check timeout-gc"

after:
add @dynmark { 10.2.3.4 timeout 1s : 0x00000002 } comment "also check timeout-gc"

This is a followup to 76c358ccfea0 ("src: maps: update data expression dtype based on set"),
which did fix the map expression, but not the key.

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

index e6c9fa6599502c41d80fd18241931ad9fbd048ec..efb3fe6a27da41c476707c949a91aa95983a0b19 100644 (file)
@@ -1631,6 +1631,8 @@ static void netlink_parse_dynset(struct netlink_parse_ctx *ctx,
                expr = netlink_parse_concat_key(ctx, loc, sreg, set->key);
                if (expr == NULL)
                        return;
+       } else if (expr->dtype == &invalid_type) {
+               expr_set_type(expr, datatype_get(set->key->dtype), set->key->byteorder);
        }
 
        expr = set_elem_expr_alloc(&expr->location, expr);