From: guy Date: Fri, 14 Sep 2007 00:39:22 +0000 (+0000) Subject: From pfhunt on SourceForge: X-Git-Tag: tcpdump-3.9.8~3 X-Git-Url: https://git.tcpdump.org/tcpdump/commitdiff_plain/aa1be4ccc7b6055a5f3037a0a4190053231cae5a From pfhunt on SourceForge: When a packet contains an IPv6 options header followed by an unknown IPv6 protocol payload, tcpdump displays the proto ID for the known option header, not for the unknown payload. For example, this is the output for an IPv6 packet containing a destination options header, followed by a payload of (unknown) protocol 138: # tcpdump -s 128 -i eth1 tcpdump: WARNING: addresses not searched tcpdump: verbose output suppressed, use -v or -vv for full protocol decode listening on eth1, link-type EN10MB (Ethernet), capture size 128 bytes 11:44:40.862572 I IP6 2007::10:5:2:163 > 2007::10:5:2:164: DSTOPT ip-proto-60 16 The ip-proto-60 refers to the destination option header (DSTOPT), rather than displaying the unknown option 138, which I think would be more informative. The attached patch fixes this problem. With the patch applied, the output for the packet is: # tcpdump -s 128 -i eth1 tcpdump: WARNING: addresses not searched tcpdump: verbose output suppressed, use -v or -vv for full protocol decode listening on eth1, link-type EN10MB (Ethernet), capture size 128 bytes 11:48:26.160462 I IP6 2007::10:5:2:163 > 2007::10:5:2:164: DSTOPT ip-proto-138 16 --- diff --git a/CREDITS b/CREDITS index 470c2ab4..da8534b0 100644 --- a/CREDITS +++ b/CREDITS @@ -116,6 +116,7 @@ Additional people who have contributed patches: Pekka Savola Peter Fales Peter Jeremy + Phil Wood Rafal Maszkowski Raphael Raimbault diff --git a/print-ip6.c b/print-ip6.c index 6294a132..b9e9983d 100644 --- a/print-ip6.c +++ b/print-ip6.c @@ -21,7 +21,7 @@ #ifndef lint static const char rcsid[] _U_ = - "@(#) $Header: /tcpdump/master/tcpdump/print-ip6.c,v 1.47.2.3 2005-09-20 06:05:38 guy Exp $"; + "@(#) $Header: /tcpdump/master/tcpdump/print-ip6.c,v 1.47.2.4 2007-09-14 00:39:22 guy Exp $"; #endif #ifdef HAVE_CONFIG_H @@ -225,7 +225,7 @@ ip6_print(register const u_char *bp, register u_int length) return; default: - (void)printf("ip-proto-%d %d", ip6->ip6_nxt, len); + (void)printf("ip-proto-%d %d", nh, len); return; } }