]> git.ipfire.org Git - thirdparty/nftables.git/commitdiff
trace: do not remove icmp type from packet dump
authorFlorian Westphal <fw@strlen.de>
Mon, 8 Feb 2021 14:54:44 +0000 (15:54 +0100)
committerFlorian Westphal <fw@strlen.de>
Mon, 8 Feb 2021 15:06:09 +0000 (16:06 +0100)
As of 0.9.8 the icmp type is marked as a protocol field, so its
elided in 'nft monitor trace' output:

   icmp code 0 icmp id 44380 ..

Restore it.  Unlike tcp, where 'tcp sport' et. al in the dump
will make the 'ip protocol tcp' redundant this case isn't obvious
in the icmp case:

  icmp type 8 code 0 id ...

Reported-by: Martin Gignac <martin.gignac@gmail.com>
Fixes: 98b871512c4677 ("src: add auto-dependencies for ipv4 icmp")
Signed-off-by: Florian Westphal <fw@strlen.de>
src/netlink.c

index ec2dad29ace1cc5b9b269671ba2c091433b55260..c3887d5b6662ed57456ec475cbfda2624e7fa3a3 100644 (file)
@@ -1859,7 +1859,9 @@ next:
                    pctx->pbase == PROTO_BASE_INVALID) {
                        payload_dependency_store(pctx, stmt, base - stacked);
                } else {
-                       payload_dependency_kill(pctx, lhs, ctx->family);
+                       /* Don't strip 'icmp type' from payload dump. */
+                       if (pctx->icmp_type == 0)
+                               payload_dependency_kill(pctx, lhs, ctx->family);
                        if (lhs->flags & EXPR_F_PROTOCOL)
                                payload_dependency_store(pctx, stmt, base - stacked);
                }