From pfhunt on SourceForge:
authorguy <guy>
Fri, 14 Sep 2007 00:39:22 +0000 (00:39 +0000)
committerguy <guy>
Fri, 14 Sep 2007 00:39:22 +0000 (00:39 +0000)
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

CREDITS
print-ip6.c

diff --git a/CREDITS b/CREDITS
index 470c2ab4a31d009025cde500550c148a1e64b23f..da8534b04ef63ee4b89c9f99e6c40a79dea91a4c 100644 (file)
--- 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>
index 6294a13238b8b62f7185eca3c91a1384630eb73d..b9e9983d275e3bf9b99caa1615175a8857bace60 100644 (file)
@@ -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;
                }
        }