components/tcpdump/patches/10-arphrd-infiniband.patch
author Petr Sumbera <petr.sumbera@oracle.com>
Wed, 24 Feb 2016 05:57:34 -0800
branchs11u3-sru
changeset 5534 9ed0c2ef463d
parent 4488 e2da640985f1
child 7674 e5be4a3b0c32
permissions -rw-r--r--
22538532 solaris11.2/11.3 tcpdump can't analyze IPoIB packets
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
4488
e2da640985f1 20852967 update to tcpdump 4.7.4
Stacy Yeh <stacy.yeh@oracle.com>
parents: 2905
diff changeset
     1
InfiniBand support for tcpdump. 
e2da640985f1 20852967 update to tcpdump 4.7.4
Stacy Yeh <stacy.yeh@oracle.com>
parents: 2905
diff changeset
     2
This is an in-house patch. Sent upstream for potential inclusion in future 
e2da640985f1 20852967 update to tcpdump 4.7.4
Stacy Yeh <stacy.yeh@oracle.com>
parents: 2905
diff changeset
     3
versions of tcpdump.
e2da640985f1 20852967 update to tcpdump 4.7.4
Stacy Yeh <stacy.yeh@oracle.com>
parents: 2905
diff changeset
     4
5534
9ed0c2ef463d 22538532 solaris11.2/11.3 tcpdump can't analyze IPoIB packets
Petr Sumbera <petr.sumbera@oracle.com>
parents: 4488
diff changeset
     5
Using DLT value 162 is Solaris specific.
9ed0c2ef463d 22538532 solaris11.2/11.3 tcpdump can't analyze IPoIB packets
Petr Sumbera <petr.sumbera@oracle.com>
parents: 4488
diff changeset
     6
4488
e2da640985f1 20852967 update to tcpdump 4.7.4
Stacy Yeh <stacy.yeh@oracle.com>
parents: 2905
diff changeset
     7
diff -rupN tcpdump-4.7.4-orig/Makefile.in tcpdump-4.7.4/Makefile.in
e2da640985f1 20852967 update to tcpdump 4.7.4
Stacy Yeh <stacy.yeh@oracle.com>
parents: 2905
diff changeset
     8
--- tcpdump-4.7.4-orig/Makefile.in	2015-05-26 14:13:17.000000000 -0700
e2da640985f1 20852967 update to tcpdump 4.7.4
Stacy Yeh <stacy.yeh@oracle.com>
parents: 2905
diff changeset
     9
+++ tcpdump-4.7.4/Makefile.in	2015-05-26 15:12:05.727800640 -0700
e2da640985f1 20852967 update to tcpdump 4.7.4
Stacy Yeh <stacy.yeh@oracle.com>
parents: 2905
diff changeset
    10
@@ -138,6 +138,7 @@ LIBNETDISSECT_SRC=\
e2da640985f1 20852967 update to tcpdump 4.7.4
Stacy Yeh <stacy.yeh@oracle.com>
parents: 2905
diff changeset
    11
 	print-ipcomp.c \
e2da640985f1 20852967 update to tcpdump 4.7.4
Stacy Yeh <stacy.yeh@oracle.com>
parents: 2905
diff changeset
    12
 	print-ipfc.c \
e2da640985f1 20852967 update to tcpdump 4.7.4
Stacy Yeh <stacy.yeh@oracle.com>
parents: 2905
diff changeset
    13
 	print-ipnet.c \
2905
8c0fb29f2a1e 17868656 Update tcpdump to 4.5.1
Norm Jacobs <Norm.Jacobs@Oracle.COM>
parents: 2413
diff changeset
    14
+	print-ipoib.c \
4488
e2da640985f1 20852967 update to tcpdump 4.7.4
Stacy Yeh <stacy.yeh@oracle.com>
parents: 2905
diff changeset
    15
 	print-ipx.c \
e2da640985f1 20852967 update to tcpdump 4.7.4
Stacy Yeh <stacy.yeh@oracle.com>
parents: 2905
diff changeset
    16
 	print-isakmp.c \
e2da640985f1 20852967 update to tcpdump 4.7.4
Stacy Yeh <stacy.yeh@oracle.com>
parents: 2905
diff changeset
    17
 	print-isoclns.c \
e2da640985f1 20852967 update to tcpdump 4.7.4
Stacy Yeh <stacy.yeh@oracle.com>
parents: 2905
diff changeset
    18
diff -rupN tcpdump-4.7.4-orig/netdissect.h tcpdump-4.7.4/netdissect.h
e2da640985f1 20852967 update to tcpdump 4.7.4
Stacy Yeh <stacy.yeh@oracle.com>
parents: 2905
diff changeset
    19
--- tcpdump-4.7.4-orig/netdissect.h	2015-05-26 14:13:17.000000000 -0700
e2da640985f1 20852967 update to tcpdump 4.7.4
Stacy Yeh <stacy.yeh@oracle.com>
parents: 2905
diff changeset
    20
+++ tcpdump-4.7.4/netdissect.h	2015-04-22 13:32:16.000000000 -0700
5534
9ed0c2ef463d 22538532 solaris11.2/11.3 tcpdump can't analyze IPoIB packets
Petr Sumbera <petr.sumbera@oracle.com>
parents: 4488
diff changeset
    21
@@ -395,6 +395,8 @@ extern void ether_print(netdissect_optio
442
d0e244fcfff1 7003338 infiniband adapters do not work with tcpdump
Darren Reed <Darren.Reed@Oracle.COM>
parents:
diff changeset
    22
 
2905
8c0fb29f2a1e 17868656 Update tcpdump to 4.5.1
Norm Jacobs <Norm.Jacobs@Oracle.COM>
parents: 2413
diff changeset
    23
 extern u_int ether_if_print(netdissect_options *,
2413
8ca25f425497 7196707 update tcpdump to 4.3.0
Rich Burridge <rich.burridge@oracle.com>
parents: 442
diff changeset
    24
                             const struct pcap_pkthdr *,const u_char *);
5534
9ed0c2ef463d 22538532 solaris11.2/11.3 tcpdump can't analyze IPoIB packets
Petr Sumbera <petr.sumbera@oracle.com>
parents: 4488
diff changeset
    25
+extern u_int ipoib_if_print(netdissect_options *,
9ed0c2ef463d 22538532 solaris11.2/11.3 tcpdump can't analyze IPoIB packets
Petr Sumbera <petr.sumbera@oracle.com>
parents: 4488
diff changeset
    26
+                            const struct pcap_pkthdr *, const u_char *);
2905
8c0fb29f2a1e 17868656 Update tcpdump to 4.5.1
Norm Jacobs <Norm.Jacobs@Oracle.COM>
parents: 2413
diff changeset
    27
 extern u_int netanalyzer_if_print(netdissect_options *,
2413
8ca25f425497 7196707 update tcpdump to 4.3.0
Rich Burridge <rich.burridge@oracle.com>
parents: 442
diff changeset
    28
                                   const struct pcap_pkthdr *,const u_char *);
2905
8c0fb29f2a1e 17868656 Update tcpdump to 4.5.1
Norm Jacobs <Norm.Jacobs@Oracle.COM>
parents: 2413
diff changeset
    29
 extern u_int netanalyzer_transparent_if_print(netdissect_options *,
4488
e2da640985f1 20852967 update to tcpdump 4.7.4
Stacy Yeh <stacy.yeh@oracle.com>
parents: 2905
diff changeset
    30
diff -rupN tcpdump-4.7.4-orig/print-arp.c tcpdump-4.7.4/print-arp.c
e2da640985f1 20852967 update to tcpdump 4.7.4
Stacy Yeh <stacy.yeh@oracle.com>
parents: 2905
diff changeset
    31
--- tcpdump-4.7.4-orig/print-arp.c	2015-05-26 14:13:17.000000000 -0700
e2da640985f1 20852967 update to tcpdump 4.7.4
Stacy Yeh <stacy.yeh@oracle.com>
parents: 2905
diff changeset
    32
+++ tcpdump-4.7.4/print-arp.c	2015-03-09 12:07:00.000000000 -0700
e2da640985f1 20852967 update to tcpdump 4.7.4
Stacy Yeh <stacy.yeh@oracle.com>
parents: 2905
diff changeset
    33
@@ -55,6 +55,7 @@ struct  arp_pkthdr {
2905
8c0fb29f2a1e 17868656 Update tcpdump to 4.5.1
Norm Jacobs <Norm.Jacobs@Oracle.COM>
parents: 2413
diff changeset
    34
 #define ARPHRD_ATM2225  19      /* ATM (RFC 2225) */
8c0fb29f2a1e 17868656 Update tcpdump to 4.5.1
Norm Jacobs <Norm.Jacobs@Oracle.COM>
parents: 2413
diff changeset
    35
 #define ARPHRD_STRIP    23      /* Ricochet Starmode Radio hardware format */
8c0fb29f2a1e 17868656 Update tcpdump to 4.5.1
Norm Jacobs <Norm.Jacobs@Oracle.COM>
parents: 2413
diff changeset
    36
 #define ARPHRD_IEEE1394 24      /* IEEE 1394 (FireWire) hardware format */
4488
e2da640985f1 20852967 update to tcpdump 4.7.4
Stacy Yeh <stacy.yeh@oracle.com>
parents: 2905
diff changeset
    37
+#define ARPHRD_INFINIBAND 32   /* InfiniBand RFC 4391 */
2905
8c0fb29f2a1e 17868656 Update tcpdump to 4.5.1
Norm Jacobs <Norm.Jacobs@Oracle.COM>
parents: 2413
diff changeset
    38
         u_short ar_pro;         /* format of protocol address */
442
d0e244fcfff1 7003338 infiniband adapters do not work with tcpdump
Darren Reed <Darren.Reed@Oracle.COM>
parents:
diff changeset
    39
         u_char  ar_hln;         /* length of hardware address */
d0e244fcfff1 7003338 infiniband adapters do not work with tcpdump
Darren Reed <Darren.Reed@Oracle.COM>
parents:
diff changeset
    40
         u_char  ar_pln;         /* length of protocol address */
4488
e2da640985f1 20852967 update to tcpdump 4.7.4
Stacy Yeh <stacy.yeh@oracle.com>
parents: 2905
diff changeset
    41
@@ -115,6 +115,7 @@ static const struct tok arphrd_values[]
442
d0e244fcfff1 7003338 infiniband adapters do not work with tcpdump
Darren Reed <Darren.Reed@Oracle.COM>
parents:
diff changeset
    42
     { ARPHRD_STRIP, "Strip" },
d0e244fcfff1 7003338 infiniband adapters do not work with tcpdump
Darren Reed <Darren.Reed@Oracle.COM>
parents:
diff changeset
    43
     { ARPHRD_IEEE1394, "IEEE 1394" },
d0e244fcfff1 7003338 infiniband adapters do not work with tcpdump
Darren Reed <Darren.Reed@Oracle.COM>
parents:
diff changeset
    44
     { ARPHRD_ATM2225, "ATM" },
2905
8c0fb29f2a1e 17868656 Update tcpdump to 4.5.1
Norm Jacobs <Norm.Jacobs@Oracle.COM>
parents: 2413
diff changeset
    45
+    { ARPHRD_INFINIBAND, "InfiniBand" },
442
d0e244fcfff1 7003338 infiniband adapters do not work with tcpdump
Darren Reed <Darren.Reed@Oracle.COM>
parents:
diff changeset
    46
     { 0, NULL }
d0e244fcfff1 7003338 infiniband adapters do not work with tcpdump
Darren Reed <Darren.Reed@Oracle.COM>
parents:
diff changeset
    47
 };
d0e244fcfff1 7003338 infiniband adapters do not work with tcpdump
Darren Reed <Darren.Reed@Oracle.COM>
parents:
diff changeset
    48
 
4488
e2da640985f1 20852967 update to tcpdump 4.7.4
Stacy Yeh <stacy.yeh@oracle.com>
parents: 2905
diff changeset
    49
diff -rupN tcpdump-4.7.4-orig/print-ipoib.c tcpdump-4.7.4/print-ipoib.c
e2da640985f1 20852967 update to tcpdump 4.7.4
Stacy Yeh <stacy.yeh@oracle.com>
parents: 2905
diff changeset
    50
--- tcpdump-4.7.4-orig/print-ipoib.c	1969-12-31 16:00:00.000000000 -0800
e2da640985f1 20852967 update to tcpdump 4.7.4
Stacy Yeh <stacy.yeh@oracle.com>
parents: 2905
diff changeset
    51
+++ tcpdump-4.7.4/print-ipoib.c	2015-05-26 14:13:17.000000000 -0700
e2da640985f1 20852967 update to tcpdump 4.7.4
Stacy Yeh <stacy.yeh@oracle.com>
parents: 2905
diff changeset
    52
@@ -0,0 +1,132 @@
442
d0e244fcfff1 7003338 infiniband adapters do not work with tcpdump
Darren Reed <Darren.Reed@Oracle.COM>
parents:
diff changeset
    53
+/*
2413
8ca25f425497 7196707 update tcpdump to 4.3.0
Rich Burridge <rich.burridge@oracle.com>
parents: 442
diff changeset
    54
+ * Copyright (c) 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 
8ca25f425497 7196707 update tcpdump to 4.3.0
Rich Burridge <rich.burridge@oracle.com>
parents: 442
diff changeset
    55
+ *	1997, 2000, 2011, 2012
442
d0e244fcfff1 7003338 infiniband adapters do not work with tcpdump
Darren Reed <Darren.Reed@Oracle.COM>
parents:
diff changeset
    56
+ *	The Regents of the University of California.  All rights reserved.
d0e244fcfff1 7003338 infiniband adapters do not work with tcpdump
Darren Reed <Darren.Reed@Oracle.COM>
parents:
diff changeset
    57
+ *
d0e244fcfff1 7003338 infiniband adapters do not work with tcpdump
Darren Reed <Darren.Reed@Oracle.COM>
parents:
diff changeset
    58
+ * Redistribution and use in source and binary forms, with or without
d0e244fcfff1 7003338 infiniband adapters do not work with tcpdump
Darren Reed <Darren.Reed@Oracle.COM>
parents:
diff changeset
    59
+ * modification, are permitted provided that: (1) source code distributions
d0e244fcfff1 7003338 infiniband adapters do not work with tcpdump
Darren Reed <Darren.Reed@Oracle.COM>
parents:
diff changeset
    60
+ * retain the above copyright notice and this paragraph in its entirety, (2)
d0e244fcfff1 7003338 infiniband adapters do not work with tcpdump
Darren Reed <Darren.Reed@Oracle.COM>
parents:
diff changeset
    61
+ * distributions including binary code include the above copyright notice and
d0e244fcfff1 7003338 infiniband adapters do not work with tcpdump
Darren Reed <Darren.Reed@Oracle.COM>
parents:
diff changeset
    62
+ * this paragraph in its entirety in the documentation or other materials
d0e244fcfff1 7003338 infiniband adapters do not work with tcpdump
Darren Reed <Darren.Reed@Oracle.COM>
parents:
diff changeset
    63
+ * provided with the distribution, and (3) all advertising materials mentioning
d0e244fcfff1 7003338 infiniband adapters do not work with tcpdump
Darren Reed <Darren.Reed@Oracle.COM>
parents:
diff changeset
    64
+ * features or use of this software display the following acknowledgement:
d0e244fcfff1 7003338 infiniband adapters do not work with tcpdump
Darren Reed <Darren.Reed@Oracle.COM>
parents:
diff changeset
    65
+ * ``This product includes software developed by the University of California,
d0e244fcfff1 7003338 infiniband adapters do not work with tcpdump
Darren Reed <Darren.Reed@Oracle.COM>
parents:
diff changeset
    66
+ * Lawrence Berkeley Laboratory and its contributors.'' Neither the name of
d0e244fcfff1 7003338 infiniband adapters do not work with tcpdump
Darren Reed <Darren.Reed@Oracle.COM>
parents:
diff changeset
    67
+ * the University nor the names of its contributors may be used to endorse
d0e244fcfff1 7003338 infiniband adapters do not work with tcpdump
Darren Reed <Darren.Reed@Oracle.COM>
parents:
diff changeset
    68
+ * or promote products derived from this software without specific prior
d0e244fcfff1 7003338 infiniband adapters do not work with tcpdump
Darren Reed <Darren.Reed@Oracle.COM>
parents:
diff changeset
    69
+ * written permission.
d0e244fcfff1 7003338 infiniband adapters do not work with tcpdump
Darren Reed <Darren.Reed@Oracle.COM>
parents:
diff changeset
    70
+ * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED
d0e244fcfff1 7003338 infiniband adapters do not work with tcpdump
Darren Reed <Darren.Reed@Oracle.COM>
parents:
diff changeset
    71
+ * WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
d0e244fcfff1 7003338 infiniband adapters do not work with tcpdump
Darren Reed <Darren.Reed@Oracle.COM>
parents:
diff changeset
    72
+ * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
d0e244fcfff1 7003338 infiniband adapters do not work with tcpdump
Darren Reed <Darren.Reed@Oracle.COM>
parents:
diff changeset
    73
+ */
d0e244fcfff1 7003338 infiniband adapters do not work with tcpdump
Darren Reed <Darren.Reed@Oracle.COM>
parents:
diff changeset
    74
+/*
5534
9ed0c2ef463d 22538532 solaris11.2/11.3 tcpdump can't analyze IPoIB packets
Petr Sumbera <petr.sumbera@oracle.com>
parents: 4488
diff changeset
    75
+ * Copyright (c) 2011, 2016, Oracle and/or its affiliates. All rights reserved.
442
d0e244fcfff1 7003338 infiniband adapters do not work with tcpdump
Darren Reed <Darren.Reed@Oracle.COM>
parents:
diff changeset
    76
+ */
d0e244fcfff1 7003338 infiniband adapters do not work with tcpdump
Darren Reed <Darren.Reed@Oracle.COM>
parents:
diff changeset
    77
+#ifndef lint
d0e244fcfff1 7003338 infiniband adapters do not work with tcpdump
Darren Reed <Darren.Reed@Oracle.COM>
parents:
diff changeset
    78
+static const char rcsid[] _U_ =
d0e244fcfff1 7003338 infiniband adapters do not work with tcpdump
Darren Reed <Darren.Reed@Oracle.COM>
parents:
diff changeset
    79
+    "@(#) $Header$";
d0e244fcfff1 7003338 infiniband adapters do not work with tcpdump
Darren Reed <Darren.Reed@Oracle.COM>
parents:
diff changeset
    80
+#endif
d0e244fcfff1 7003338 infiniband adapters do not work with tcpdump
Darren Reed <Darren.Reed@Oracle.COM>
parents:
diff changeset
    81
+
d0e244fcfff1 7003338 infiniband adapters do not work with tcpdump
Darren Reed <Darren.Reed@Oracle.COM>
parents:
diff changeset
    82
+#ifdef HAVE_CONFIG_H
d0e244fcfff1 7003338 infiniband adapters do not work with tcpdump
Darren Reed <Darren.Reed@Oracle.COM>
parents:
diff changeset
    83
+#include "config.h"
d0e244fcfff1 7003338 infiniband adapters do not work with tcpdump
Darren Reed <Darren.Reed@Oracle.COM>
parents:
diff changeset
    84
+#endif
d0e244fcfff1 7003338 infiniband adapters do not work with tcpdump
Darren Reed <Darren.Reed@Oracle.COM>
parents:
diff changeset
    85
+
d0e244fcfff1 7003338 infiniband adapters do not work with tcpdump
Darren Reed <Darren.Reed@Oracle.COM>
parents:
diff changeset
    86
+#include <tcpdump-stdinc.h>
d0e244fcfff1 7003338 infiniband adapters do not work with tcpdump
Darren Reed <Darren.Reed@Oracle.COM>
parents:
diff changeset
    87
+
d0e244fcfff1 7003338 infiniband adapters do not work with tcpdump
Darren Reed <Darren.Reed@Oracle.COM>
parents:
diff changeset
    88
+#include <stdio.h>
d0e244fcfff1 7003338 infiniband adapters do not work with tcpdump
Darren Reed <Darren.Reed@Oracle.COM>
parents:
diff changeset
    89
+#include <pcap.h>
d0e244fcfff1 7003338 infiniband adapters do not work with tcpdump
Darren Reed <Darren.Reed@Oracle.COM>
parents:
diff changeset
    90
+
d0e244fcfff1 7003338 infiniband adapters do not work with tcpdump
Darren Reed <Darren.Reed@Oracle.COM>
parents:
diff changeset
    91
+#include "interface.h"
d0e244fcfff1 7003338 infiniband adapters do not work with tcpdump
Darren Reed <Darren.Reed@Oracle.COM>
parents:
diff changeset
    92
+#include "extract.h"
d0e244fcfff1 7003338 infiniband adapters do not work with tcpdump
Darren Reed <Darren.Reed@Oracle.COM>
parents:
diff changeset
    93
+#include "addrtoname.h"
d0e244fcfff1 7003338 infiniband adapters do not work with tcpdump
Darren Reed <Darren.Reed@Oracle.COM>
parents:
diff changeset
    94
+
4488
e2da640985f1 20852967 update to tcpdump 4.7.4
Stacy Yeh <stacy.yeh@oracle.com>
parents: 2905
diff changeset
    95
+
442
d0e244fcfff1 7003338 infiniband adapters do not work with tcpdump
Darren Reed <Darren.Reed@Oracle.COM>
parents:
diff changeset
    96
+extern const struct tok ethertype_values[];
2413
8ca25f425497 7196707 update tcpdump to 4.3.0
Rich Burridge <rich.burridge@oracle.com>
parents: 442
diff changeset
    97
+extern int ethertype_print(netdissect_options *, u_short, const u_char *, u_int, u_int );
442
d0e244fcfff1 7003338 infiniband adapters do not work with tcpdump
Darren Reed <Darren.Reed@Oracle.COM>
parents:
diff changeset
    98
+
d0e244fcfff1 7003338 infiniband adapters do not work with tcpdump
Darren Reed <Darren.Reed@Oracle.COM>
parents:
diff changeset
    99
+#define	IPOIB_HDRLEN	44
d0e244fcfff1 7003338 infiniband adapters do not work with tcpdump
Darren Reed <Darren.Reed@Oracle.COM>
parents:
diff changeset
   100
+
d0e244fcfff1 7003338 infiniband adapters do not work with tcpdump
Darren Reed <Darren.Reed@Oracle.COM>
parents:
diff changeset
   101
+static inline void
d0e244fcfff1 7003338 infiniband adapters do not work with tcpdump
Darren Reed <Darren.Reed@Oracle.COM>
parents:
diff changeset
   102
+ipoib_hdr_print(register const u_char *bp, u_int length)
d0e244fcfff1 7003338 infiniband adapters do not work with tcpdump
Darren Reed <Darren.Reed@Oracle.COM>
parents:
diff changeset
   103
+{
d0e244fcfff1 7003338 infiniband adapters do not work with tcpdump
Darren Reed <Darren.Reed@Oracle.COM>
parents:
diff changeset
   104
+	u_int16_t ether_type;
d0e244fcfff1 7003338 infiniband adapters do not work with tcpdump
Darren Reed <Darren.Reed@Oracle.COM>
parents:
diff changeset
   105
+	char abuf[40];
d0e244fcfff1 7003338 infiniband adapters do not work with tcpdump
Darren Reed <Darren.Reed@Oracle.COM>
parents:
diff changeset
   106
+
d0e244fcfff1 7003338 infiniband adapters do not work with tcpdump
Darren Reed <Darren.Reed@Oracle.COM>
parents:
diff changeset
   107
+	ether_type = EXTRACT_16BITS(&bp[40]);
d0e244fcfff1 7003338 infiniband adapters do not work with tcpdump
Darren Reed <Darren.Reed@Oracle.COM>
parents:
diff changeset
   108
+	if (!qflag) {
d0e244fcfff1 7003338 infiniband adapters do not work with tcpdump
Darren Reed <Darren.Reed@Oracle.COM>
parents:
diff changeset
   109
+		(void)printf(", ethertype %s (0x%04x)",
d0e244fcfff1 7003338 infiniband adapters do not work with tcpdump
Darren Reed <Darren.Reed@Oracle.COM>
parents:
diff changeset
   110
+			     tok2str(ethertype_values,"Unknown", ether_type),
d0e244fcfff1 7003338 infiniband adapters do not work with tcpdump
Darren Reed <Darren.Reed@Oracle.COM>
parents:
diff changeset
   111
+			     ether_type);
d0e244fcfff1 7003338 infiniband adapters do not work with tcpdump
Darren Reed <Darren.Reed@Oracle.COM>
parents:
diff changeset
   112
+	} else {
d0e244fcfff1 7003338 infiniband adapters do not work with tcpdump
Darren Reed <Darren.Reed@Oracle.COM>
parents:
diff changeset
   113
+		(void)printf(", ethertype %s",
d0e244fcfff1 7003338 infiniband adapters do not work with tcpdump
Darren Reed <Darren.Reed@Oracle.COM>
parents:
diff changeset
   114
+			     tok2str(ethertype_values,"Unknown", ether_type));
d0e244fcfff1 7003338 infiniband adapters do not work with tcpdump
Darren Reed <Darren.Reed@Oracle.COM>
parents:
diff changeset
   115
+	}
d0e244fcfff1 7003338 infiniband adapters do not work with tcpdump
Darren Reed <Darren.Reed@Oracle.COM>
parents:
diff changeset
   116
+
d0e244fcfff1 7003338 infiniband adapters do not work with tcpdump
Darren Reed <Darren.Reed@Oracle.COM>
parents:
diff changeset
   117
+	(void)printf(", length %u: ", length);
d0e244fcfff1 7003338 infiniband adapters do not work with tcpdump
Darren Reed <Darren.Reed@Oracle.COM>
parents:
diff changeset
   118
+}
d0e244fcfff1 7003338 infiniband adapters do not work with tcpdump
Darren Reed <Darren.Reed@Oracle.COM>
parents:
diff changeset
   119
+
d0e244fcfff1 7003338 infiniband adapters do not work with tcpdump
Darren Reed <Darren.Reed@Oracle.COM>
parents:
diff changeset
   120
+/*
2905
8c0fb29f2a1e 17868656 Update tcpdump to 4.5.1
Norm Jacobs <Norm.Jacobs@Oracle.COM>
parents: 2413
diff changeset
   121
+ * Print an InfiniBand frame.
442
d0e244fcfff1 7003338 infiniband adapters do not work with tcpdump
Darren Reed <Darren.Reed@Oracle.COM>
parents:
diff changeset
   122
+ * This might be encapsulated within another frame; we might be passed
d0e244fcfff1 7003338 infiniband adapters do not work with tcpdump
Darren Reed <Darren.Reed@Oracle.COM>
parents:
diff changeset
   123
+ * a pointer to a function that can print header information for that
d0e244fcfff1 7003338 infiniband adapters do not work with tcpdump
Darren Reed <Darren.Reed@Oracle.COM>
parents:
diff changeset
   124
+ * frame's protocol, and an argument to pass to that function.
d0e244fcfff1 7003338 infiniband adapters do not work with tcpdump
Darren Reed <Darren.Reed@Oracle.COM>
parents:
diff changeset
   125
+ */
d0e244fcfff1 7003338 infiniband adapters do not work with tcpdump
Darren Reed <Darren.Reed@Oracle.COM>
parents:
diff changeset
   126
+static void
d0e244fcfff1 7003338 infiniband adapters do not work with tcpdump
Darren Reed <Darren.Reed@Oracle.COM>
parents:
diff changeset
   127
+ipoib_print(const u_char *p, u_int length, u_int caplen,
d0e244fcfff1 7003338 infiniband adapters do not work with tcpdump
Darren Reed <Darren.Reed@Oracle.COM>
parents:
diff changeset
   128
+    void (*print_encap_header)(const u_char *), const u_char *encap_header_arg)
d0e244fcfff1 7003338 infiniband adapters do not work with tcpdump
Darren Reed <Darren.Reed@Oracle.COM>
parents:
diff changeset
   129
+{
d0e244fcfff1 7003338 infiniband adapters do not work with tcpdump
Darren Reed <Darren.Reed@Oracle.COM>
parents:
diff changeset
   130
+	const u_char *orig_hdr = p;
d0e244fcfff1 7003338 infiniband adapters do not work with tcpdump
Darren Reed <Darren.Reed@Oracle.COM>
parents:
diff changeset
   131
+	u_int orig_length;
d0e244fcfff1 7003338 infiniband adapters do not work with tcpdump
Darren Reed <Darren.Reed@Oracle.COM>
parents:
diff changeset
   132
+	u_short ether_type;
d0e244fcfff1 7003338 infiniband adapters do not work with tcpdump
Darren Reed <Darren.Reed@Oracle.COM>
parents:
diff changeset
   133
+	u_short extracted_ether_type;
d0e244fcfff1 7003338 infiniband adapters do not work with tcpdump
Darren Reed <Darren.Reed@Oracle.COM>
parents:
diff changeset
   134
+
d0e244fcfff1 7003338 infiniband adapters do not work with tcpdump
Darren Reed <Darren.Reed@Oracle.COM>
parents:
diff changeset
   135
+	if (caplen < IPOIB_HDRLEN || length < IPOIB_HDRLEN) {
d0e244fcfff1 7003338 infiniband adapters do not work with tcpdump
Darren Reed <Darren.Reed@Oracle.COM>
parents:
diff changeset
   136
+		printf("[|ipoib]");
d0e244fcfff1 7003338 infiniband adapters do not work with tcpdump
Darren Reed <Darren.Reed@Oracle.COM>
parents:
diff changeset
   137
+		return;
d0e244fcfff1 7003338 infiniband adapters do not work with tcpdump
Darren Reed <Darren.Reed@Oracle.COM>
parents:
diff changeset
   138
+	}
d0e244fcfff1 7003338 infiniband adapters do not work with tcpdump
Darren Reed <Darren.Reed@Oracle.COM>
parents:
diff changeset
   139
+
d0e244fcfff1 7003338 infiniband adapters do not work with tcpdump
Darren Reed <Darren.Reed@Oracle.COM>
parents:
diff changeset
   140
+	if (eflag) {
d0e244fcfff1 7003338 infiniband adapters do not work with tcpdump
Darren Reed <Darren.Reed@Oracle.COM>
parents:
diff changeset
   141
+		if (print_encap_header != NULL)
d0e244fcfff1 7003338 infiniband adapters do not work with tcpdump
Darren Reed <Darren.Reed@Oracle.COM>
parents:
diff changeset
   142
+			(*print_encap_header)(encap_header_arg);
d0e244fcfff1 7003338 infiniband adapters do not work with tcpdump
Darren Reed <Darren.Reed@Oracle.COM>
parents:
diff changeset
   143
+		ipoib_hdr_print(p, length);
d0e244fcfff1 7003338 infiniband adapters do not work with tcpdump
Darren Reed <Darren.Reed@Oracle.COM>
parents:
diff changeset
   144
+	}
d0e244fcfff1 7003338 infiniband adapters do not work with tcpdump
Darren Reed <Darren.Reed@Oracle.COM>
parents:
diff changeset
   145
+	orig_length = length;
d0e244fcfff1 7003338 infiniband adapters do not work with tcpdump
Darren Reed <Darren.Reed@Oracle.COM>
parents:
diff changeset
   146
+
d0e244fcfff1 7003338 infiniband adapters do not work with tcpdump
Darren Reed <Darren.Reed@Oracle.COM>
parents:
diff changeset
   147
+	length -= IPOIB_HDRLEN;
d0e244fcfff1 7003338 infiniband adapters do not work with tcpdump
Darren Reed <Darren.Reed@Oracle.COM>
parents:
diff changeset
   148
+	caplen -= IPOIB_HDRLEN;
d0e244fcfff1 7003338 infiniband adapters do not work with tcpdump
Darren Reed <Darren.Reed@Oracle.COM>
parents:
diff changeset
   149
+	ether_type = EXTRACT_16BITS(&p[40]);
d0e244fcfff1 7003338 infiniband adapters do not work with tcpdump
Darren Reed <Darren.Reed@Oracle.COM>
parents:
diff changeset
   150
+	p += IPOIB_HDRLEN;
d0e244fcfff1 7003338 infiniband adapters do not work with tcpdump
Darren Reed <Darren.Reed@Oracle.COM>
parents:
diff changeset
   151
+
2413
8ca25f425497 7196707 update tcpdump to 4.3.0
Rich Burridge <rich.burridge@oracle.com>
parents: 442
diff changeset
   152
+	if (ethertype_print(gndo, ether_type, p, length, caplen) == 0) {
442
d0e244fcfff1 7003338 infiniband adapters do not work with tcpdump
Darren Reed <Darren.Reed@Oracle.COM>
parents:
diff changeset
   153
+		/* ether_type not known, print raw packet */
d0e244fcfff1 7003338 infiniband adapters do not work with tcpdump
Darren Reed <Darren.Reed@Oracle.COM>
parents:
diff changeset
   154
+		if (!eflag) {
d0e244fcfff1 7003338 infiniband adapters do not work with tcpdump
Darren Reed <Darren.Reed@Oracle.COM>
parents:
diff changeset
   155
+			if (print_encap_header != NULL)
d0e244fcfff1 7003338 infiniband adapters do not work with tcpdump
Darren Reed <Darren.Reed@Oracle.COM>
parents:
diff changeset
   156
+				(*print_encap_header)(encap_header_arg);
d0e244fcfff1 7003338 infiniband adapters do not work with tcpdump
Darren Reed <Darren.Reed@Oracle.COM>
parents:
diff changeset
   157
+			ipoib_hdr_print(orig_hdr , orig_length);
d0e244fcfff1 7003338 infiniband adapters do not work with tcpdump
Darren Reed <Darren.Reed@Oracle.COM>
parents:
diff changeset
   158
+		}
d0e244fcfff1 7003338 infiniband adapters do not work with tcpdump
Darren Reed <Darren.Reed@Oracle.COM>
parents:
diff changeset
   159
+
d0e244fcfff1 7003338 infiniband adapters do not work with tcpdump
Darren Reed <Darren.Reed@Oracle.COM>
parents:
diff changeset
   160
+		if (!suppress_default_print)
d0e244fcfff1 7003338 infiniband adapters do not work with tcpdump
Darren Reed <Darren.Reed@Oracle.COM>
parents:
diff changeset
   161
+			default_print(p, caplen);
d0e244fcfff1 7003338 infiniband adapters do not work with tcpdump
Darren Reed <Darren.Reed@Oracle.COM>
parents:
diff changeset
   162
+	}
d0e244fcfff1 7003338 infiniband adapters do not work with tcpdump
Darren Reed <Darren.Reed@Oracle.COM>
parents:
diff changeset
   163
+}
d0e244fcfff1 7003338 infiniband adapters do not work with tcpdump
Darren Reed <Darren.Reed@Oracle.COM>
parents:
diff changeset
   164
+
d0e244fcfff1 7003338 infiniband adapters do not work with tcpdump
Darren Reed <Darren.Reed@Oracle.COM>
parents:
diff changeset
   165
+/*
d0e244fcfff1 7003338 infiniband adapters do not work with tcpdump
Darren Reed <Darren.Reed@Oracle.COM>
parents:
diff changeset
   166
+ * This is the top level routine of the printer.  'p' points
d0e244fcfff1 7003338 infiniband adapters do not work with tcpdump
Darren Reed <Darren.Reed@Oracle.COM>
parents:
diff changeset
   167
+ * to the ether header of the packet, 'h->ts' is the timestamp,
d0e244fcfff1 7003338 infiniband adapters do not work with tcpdump
Darren Reed <Darren.Reed@Oracle.COM>
parents:
diff changeset
   168
+ * 'h->len' is the length of the packet off the wire, and 'h->caplen'
d0e244fcfff1 7003338 infiniband adapters do not work with tcpdump
Darren Reed <Darren.Reed@Oracle.COM>
parents:
diff changeset
   169
+ * is the number of bytes actually captured.
d0e244fcfff1 7003338 infiniband adapters do not work with tcpdump
Darren Reed <Darren.Reed@Oracle.COM>
parents:
diff changeset
   170
+ */
d0e244fcfff1 7003338 infiniband adapters do not work with tcpdump
Darren Reed <Darren.Reed@Oracle.COM>
parents:
diff changeset
   171
+u_int
5534
9ed0c2ef463d 22538532 solaris11.2/11.3 tcpdump can't analyze IPoIB packets
Petr Sumbera <petr.sumbera@oracle.com>
parents: 4488
diff changeset
   172
+ipoib_if_print(netdissect_options *ndo, const struct pcap_pkthdr *h, const u_char *p)
442
d0e244fcfff1 7003338 infiniband adapters do not work with tcpdump
Darren Reed <Darren.Reed@Oracle.COM>
parents:
diff changeset
   173
+{
d0e244fcfff1 7003338 infiniband adapters do not work with tcpdump
Darren Reed <Darren.Reed@Oracle.COM>
parents:
diff changeset
   174
+	ipoib_print(p, h->len, h->caplen, NULL, NULL);
d0e244fcfff1 7003338 infiniband adapters do not work with tcpdump
Darren Reed <Darren.Reed@Oracle.COM>
parents:
diff changeset
   175
+
d0e244fcfff1 7003338 infiniband adapters do not work with tcpdump
Darren Reed <Darren.Reed@Oracle.COM>
parents:
diff changeset
   176
+	return (IPOIB_HDRLEN);
d0e244fcfff1 7003338 infiniband adapters do not work with tcpdump
Darren Reed <Darren.Reed@Oracle.COM>
parents:
diff changeset
   177
+}
d0e244fcfff1 7003338 infiniband adapters do not work with tcpdump
Darren Reed <Darren.Reed@Oracle.COM>
parents:
diff changeset
   178
+
d0e244fcfff1 7003338 infiniband adapters do not work with tcpdump
Darren Reed <Darren.Reed@Oracle.COM>
parents:
diff changeset
   179
+/*
d0e244fcfff1 7003338 infiniband adapters do not work with tcpdump
Darren Reed <Darren.Reed@Oracle.COM>
parents:
diff changeset
   180
+ * Local Variables:
d0e244fcfff1 7003338 infiniband adapters do not work with tcpdump
Darren Reed <Darren.Reed@Oracle.COM>
parents:
diff changeset
   181
+ * c-style: whitesmith
d0e244fcfff1 7003338 infiniband adapters do not work with tcpdump
Darren Reed <Darren.Reed@Oracle.COM>
parents:
diff changeset
   182
+ * c-basic-offset: 8
d0e244fcfff1 7003338 infiniband adapters do not work with tcpdump
Darren Reed <Darren.Reed@Oracle.COM>
parents:
diff changeset
   183
+ * End:
d0e244fcfff1 7003338 infiniband adapters do not work with tcpdump
Darren Reed <Darren.Reed@Oracle.COM>
parents:
diff changeset
   184
+ */
4488
e2da640985f1 20852967 update to tcpdump 4.7.4
Stacy Yeh <stacy.yeh@oracle.com>
parents: 2905
diff changeset
   185
diff -rupN tcpdump-4.7.4-orig/tcpdump.c tcpdump-4.7.4/tcpdump.c
e2da640985f1 20852967 update to tcpdump 4.7.4
Stacy Yeh <stacy.yeh@oracle.com>
parents: 2905
diff changeset
   186
--- tcpdump-4.7.4-orig/tcpdump.c	2015-05-26 14:13:17.000000000 -0700
e2da640985f1 20852967 update to tcpdump 4.7.4
Stacy Yeh <stacy.yeh@oracle.com>
parents: 2905
diff changeset
   187
+++ tcpdump-4.7.4/tcpdump.c	2015-05-26 15:17:43.298240116 -0700
5534
9ed0c2ef463d 22538532 solaris11.2/11.3 tcpdump can't analyze IPoIB packets
Petr Sumbera <petr.sumbera@oracle.com>
parents: 4488
diff changeset
   188
@@ -264,6 +264,13 @@ static const struct ndo_printer ndo_prin
442
d0e244fcfff1 7003338 infiniband adapters do not work with tcpdump
Darren Reed <Darren.Reed@Oracle.COM>
parents:
diff changeset
   189
 #ifdef DLT_IPV6
d0e244fcfff1 7003338 infiniband adapters do not work with tcpdump
Darren Reed <Darren.Reed@Oracle.COM>
parents:
diff changeset
   190
 	{ raw_if_print,		DLT_IPV6 },
d0e244fcfff1 7003338 infiniband adapters do not work with tcpdump
Darren Reed <Darren.Reed@Oracle.COM>
parents:
diff changeset
   191
 #endif
d0e244fcfff1 7003338 infiniband adapters do not work with tcpdump
Darren Reed <Darren.Reed@Oracle.COM>
parents:
diff changeset
   192
+#ifdef DLT_IPOIB
5534
9ed0c2ef463d 22538532 solaris11.2/11.3 tcpdump can't analyze IPoIB packets
Petr Sumbera <petr.sumbera@oracle.com>
parents: 4488
diff changeset
   193
+	{ ipoib_if_print, 	DLT_IPOIB },
9ed0c2ef463d 22538532 solaris11.2/11.3 tcpdump can't analyze IPoIB packets
Petr Sumbera <petr.sumbera@oracle.com>
parents: 4488
diff changeset
   194
+	/* Following record is temporary at least till following bug is fixed in
9ed0c2ef463d 22538532 solaris11.2/11.3 tcpdump can't analyze IPoIB packets
Petr Sumbera <petr.sumbera@oracle.com>
parents: 4488
diff changeset
   195
+	   all relevant releases:
9ed0c2ef463d 22538532 solaris11.2/11.3 tcpdump can't analyze IPoIB packets
Petr Sumbera <petr.sumbera@oracle.com>
parents: 4488
diff changeset
   196
+	   22741013 - wrong value for DLT_IPOIB in dlt.h as in ON */
4488
e2da640985f1 20852967 update to tcpdump 4.7.4
Stacy Yeh <stacy.yeh@oracle.com>
parents: 2905
diff changeset
   197
+	{ ipoib_if_print, 	162 },
442
d0e244fcfff1 7003338 infiniband adapters do not work with tcpdump
Darren Reed <Darren.Reed@Oracle.COM>
parents:
diff changeset
   198
+#endif
4488
e2da640985f1 20852967 update to tcpdump 4.7.4
Stacy Yeh <stacy.yeh@oracle.com>
parents: 2905
diff changeset
   199
 #ifdef HAVE_PCAP_USB_H
e2da640985f1 20852967 update to tcpdump 4.7.4
Stacy Yeh <stacy.yeh@oracle.com>
parents: 2905
diff changeset
   200
 #ifdef DLT_USB_LINUX
e2da640985f1 20852967 update to tcpdump 4.7.4
Stacy Yeh <stacy.yeh@oracle.com>
parents: 2905
diff changeset
   201
 	{ usb_linux_48_byte_print, DLT_USB_LINUX},