summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorguy <guy>2007-09-14 00:39:22 +0000
committerguy <guy>2007-09-14 00:39:22 +0000
commitaa1be4ccc7b6055a5f3037a0a4190053231cae5a (patch)
tree56ea53082a4a59024bafd4e020fb5567ae7898fb
parent34c7c2ecfac5a9bd0058b90d58cce3069564a31f (diff)
downloadtcpdump-aa1be4ccc7b6055a5f3037a0a4190053231cae5a.tar.gz
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
-rw-r--r--CREDITS1
-rw-r--r--print-ip6.c4
2 files changed, 3 insertions, 2 deletions
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 <pekkas@netcore.fi>
Peter Fales <peter@fales-lorenz.net>
Peter Jeremy <peter.jeremy@alcatel.com.au>
+ <pfhunt@users.sourceforge.net>
Phil Wood <cpw@lanl.gov>
Rafal Maszkowski <rzm@icm.edu.pl>
Raphael Raimbault <raphael.raimbault@netasq.com>
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;
}
}