]> git.ipfire.org Git - thirdparty/nftables.git/commitdiff
payload: skip templates with meta key set
authorFlorian Westphal <fw@strlen.de>
Tue, 30 Nov 2021 20:11:23 +0000 (21:11 +0100)
committerFlorian Westphal <fw@strlen.de>
Thu, 9 Dec 2021 10:12:32 +0000 (11:12 +0100)
meta templates are only there for ease of use (input/parsing).

When listing, they should be ignored:
 set s4 { typeof ip version elements = { 1, } }
 chain c4 { ip version @s4 accept }

gets listed as 'ip l4proto ...' which is nonsensical.

 after this patch we get:
in: ip version @s4
out: (@nh,0,8 & 0xf0) >> 4 == @s4

.. which is (marginally) better.

Next patch adds support for payload decoding.

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

index d9e0d4254f19557446a173cf68c2cb5e2cc31be8..79008762825f04f7153e0289fae8059c2e1b7c33 100644 (file)
@@ -811,6 +811,9 @@ void payload_expr_complete(struct expr *expr, const struct proto_ctx *ctx)
                    tmpl->len    != expr->len)
                        continue;
 
+               if (tmpl->meta_key && i == 0)
+                       continue;
+
                if (tmpl->icmp_dep && ctx->th_dep.icmp.type &&
                    ctx->th_dep.icmp.type != icmp_dep_to_type(tmpl->icmp_dep))
                        continue;