From: Florian Westphal Date: Tue, 30 Nov 2021 20:11:23 +0000 (+0100) Subject: payload: skip templates with meta key set X-Git-Tag: v1.0.2~58 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=9f204f7da605b9b41c3bef4533230e4cd52bba07;p=thirdparty%2Fnftables.git payload: skip templates with meta key set 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 --- diff --git a/src/payload.c b/src/payload.c index d9e0d425..79008762 100644 --- a/src/payload.c +++ b/src/payload.c @@ -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;