aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGuy Harris <guy@alum.mit.edu>1999-07-28 23:16:42 +0000
committerGuy Harris <guy@alum.mit.edu>1999-07-28 23:16:42 +0000
commit6f1d3a3be830da628246f7cea77fe9c491470d17 (patch)
treed81b8706a40ab7f86d03d16d6ae1b43855379906
parentc4717a95d96f719ba0969d640841d85c0ecdf0f8 (diff)
Patches from Thierry Andry to support Classical IP captures from systems
with the ATM on Linux software from <http://lrcwww.epfl.ch/linux-atm/>. svn path=/trunk/; revision=401
-rw-r--r--AUTHORS4
-rw-r--r--Makefile.am1
-rw-r--r--ethereal.c3
-rw-r--r--packet-clip.c77
-rw-r--r--packet.c5
-rw-r--r--packet.h5
-rw-r--r--wiretap/libpcap.c11
-rw-r--r--wiretap/wtap.h14
8 files changed, 112 insertions, 8 deletions
diff --git a/AUTHORS b/AUTHORS
index 87272c6878..650c31fb13 100644
--- a/AUTHORS
+++ b/AUTHORS
@@ -117,6 +117,10 @@ Olivier Abad <Olivier.Abad@capway.com> {
X.25 support in iptrace files
}
+Thierry Andry <Thierry.Andry@advalvas.be> {
+ Linux ATM Classical IP support
+}
+
Alain Magloire <alainm@rcsm.ece.mcgill.ca> was kind enough to
give his permission to use his version of snprintf.c.
diff --git a/Makefile.am b/Makefile.am
index 2a3ffac45e..990d54de17 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -37,6 +37,7 @@ ethereal_SOURCES = \
packet-atalk.c \
packet-bootp.c \
packet-cdp.c \
+ packet-clip.c \
packet-data.c \
packet-dns.c \
packet-dns.h \
diff --git a/ethereal.c b/ethereal.c
index bec02ff43d..98198d16e5 100644
--- a/ethereal.c
+++ b/ethereal.c
@@ -1,6 +1,6 @@
/* ethereal.c
*
- * $Id: ethereal.c,v 1.66 1999/07/28 03:29:01 guy Exp $
+ * $Id: ethereal.c,v 1.67 1999/07/28 23:16:32 guy Exp $
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@zing.org>
@@ -167,6 +167,7 @@ about_ethereal( GtkWidget *w, gpointer data ) {
"Jason Lango <jal@netapp.com>\n"
"Johan Feyaerts <Johan.Feyaerts@siemens.atea.be>\n"
"Olivier Abad <Olivier.Abad@capway.com>\n"
+ "Thierry Andry <Thierry.Andry@advalvas.be>\n"
"\nSee http://ethereal.zing.org for more information",
VERSION, comp_info_str);
diff --git a/packet-clip.c b/packet-clip.c
new file mode 100644
index 0000000000..47b8866999
--- /dev/null
+++ b/packet-clip.c
@@ -0,0 +1,77 @@
+/* packet-clip.c
+ * Routines for clip packet disassembly
+ *
+ * $Id: packet-clip.c,v 1.1 1999/07/28 23:16:34 guy Exp $
+ *
+ * Ethereal - Network traffic analyzer
+ * By Gerald Combs <gerald@zing.org>
+ *
+ * This file created by Thierry Andry <Thierry.Andry@advalvas.be>
+ * from nearly-the-same packet-raw.c created by Mike Hall <mlh@io.com>
+ * Copyright 1999
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ */
+
+#ifdef HAVE_CONFIG_H
+# include "config.h"
+#endif
+
+#ifdef HAVE_SYS_TYPES_H
+# include <sys/types.h>
+#endif
+
+#include <glib.h>
+#include "packet.h"
+
+void
+capture_clip( const u_char *pd, guint32 cap_len, packet_counts *ld ) {
+
+ capture_ip(pd, 0, cap_len, ld);
+}
+
+void
+dissect_clip( const u_char *pd, frame_data *fd, proto_tree *tree ) {
+ proto_tree *fh_tree;
+ proto_item *ti;
+
+ /* load the top pane info. This should be overwritten by
+ the next protocol in the stack */
+ if(check_col(fd, COL_RES_DL_SRC))
+ col_add_str(fd, COL_RES_DL_SRC, "N/A" );
+ if(check_col(fd, COL_RES_DL_DST))
+ col_add_str(fd, COL_RES_DL_DST, "N/A" );
+ if(check_col(fd, COL_PROTOCOL))
+ col_add_str(fd, COL_PROTOCOL, "N/A" );
+ if(check_col(fd, COL_INFO))
+ col_add_str(fd, COL_INFO, "Classical IP frame" );
+
+ /* populate a tree in the second pane with the status of the link
+ layer (ie none)
+
+ XXX - the ATM on Linux code includes a patch to "tcpdump"
+ that compares the first few bytes of the packet with the
+ LLC header that Classical IP frames may have and, if there's
+ a SNAP LLC header at the beginning of the packet, it gets
+ the packet type from that header and uses that, otherwise
+ it treats the packet as being raw IP with no link-level
+ header. */
+ if(tree) {
+ ti = proto_tree_add_text(tree, 0, 0, "Classical IP frame" );
+ fh_tree = proto_item_add_subtree(ti, ETT_CLIP);
+ proto_tree_add_text(fh_tree, 0, 0, "No link information available");
+ }
+ dissect_ip(pd, 0, fd, tree);
+}
diff --git a/packet.c b/packet.c
index 1914c736d9..ac5a670422 100644
--- a/packet.c
+++ b/packet.c
@@ -1,7 +1,7 @@
/* packet.c
* Routines for packet disassembly
*
- * $Id: packet.c,v 1.32 1999/07/22 16:03:51 gram Exp $
+ * $Id: packet.c,v 1.33 1999/07/28 23:16:33 guy Exp $
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@zing.org>
@@ -684,6 +684,9 @@ dissect_packet(const u_char *pd, frame_data *fd, proto_tree *tree)
case WTAP_ENCAP_RAW_IP :
dissect_raw(pd, fd, tree);
break;
+ case WTAP_ENCAP_LINUX_ATM_CLIP :
+ dissect_clip(pd, fd, tree);
+ break;
}
}
diff --git a/packet.h b/packet.h
index 8dfe99bd28..7b3fbb9d1b 100644
--- a/packet.h
+++ b/packet.h
@@ -1,7 +1,7 @@
/* packet.h
* Definitions for packet disassembly structures and routines
*
- * $Id: packet.h,v 1.74 1999/07/28 03:29:00 guy Exp $
+ * $Id: packet.h,v 1.75 1999/07/28 23:16:33 guy Exp $
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@zing.org>
@@ -203,6 +203,7 @@ enum {
ETT_OSPF_LSA,
ETT_LPD,
ETT_RAW,
+ ETT_CLIP,
ETT_BOOTP,
ETT_BOOTP_OPTION,
ETT_IPv6,
@@ -354,6 +355,7 @@ void dissect_packet(const u_char *, frame_data *, proto_tree *);
* Routines should take three args: packet data *, cap_len, packet_counts *
* They should never modify the packet data.
*/
+void capture_clip(const u_char *, guint32, packet_counts *);
void capture_eth(const u_char *, guint32, packet_counts *);
void capture_fddi(const u_char *, guint32, packet_counts *);
void capture_null(const u_char *, guint32, packet_counts *);
@@ -375,6 +377,7 @@ void capture_ip(const u_char *, int, guint32, packet_counts *);
* Routines should take three args: packet data *, frame_data *, tree *
* They should never modify the packet data.
*/
+void dissect_clip(const u_char *, frame_data *, proto_tree *);
void dissect_eth(const u_char *, frame_data *, proto_tree *);
void dissect_fddi(const u_char *, frame_data *, proto_tree *);
void dissect_null(const u_char *, frame_data *, proto_tree *);
diff --git a/wiretap/libpcap.c b/wiretap/libpcap.c
index 1287921f28..34232712de 100644
--- a/wiretap/libpcap.c
+++ b/wiretap/libpcap.c
@@ -1,6 +1,6 @@
/* libpcap.c
*
- * $Id: libpcap.c,v 1.5 1999/07/13 02:53:24 gram Exp $
+ * $Id: libpcap.c,v 1.6 1999/07/28 23:16:42 guy Exp $
*
* Wiretap Library
* Copyright (c) 1998 by Gilbert Ramirez <gram@verdict.uthscsa.edu>
@@ -87,7 +87,14 @@ int libpcap_open(wtap *wth)
WTAP_ENCAP_PPP,
WTAP_ENCAP_FDDI,
WTAP_ENCAP_ATM_RFC1483,
- WTAP_ENCAP_RAW_IP
+ WTAP_ENCAP_RAW_IP,
+ WTAP_ENCAP_NONE,
+ WTAP_ENCAP_NONE,
+ WTAP_ENCAP_NONE,
+ WTAP_ENCAP_NONE,
+ WTAP_ENCAP_NONE,
+ WTAP_ENCAP_NONE,
+ WTAP_ENCAP_LINUX_ATM_CLIP
};
#define NUM_PCAP_ENCAPS (sizeof pcap_encap / sizeof pcap_encap[0])
int byte_swapped = 0;
diff --git a/wiretap/wtap.h b/wiretap/wtap.h
index f09cca6ffb..a65e96c173 100644
--- a/wiretap/wtap.h
+++ b/wiretap/wtap.h
@@ -1,6 +1,6 @@
/* wtap.h
*
- * $Id: wtap.h,v 1.20 1999/07/13 02:53:26 gram Exp $
+ * $Id: wtap.h,v 1.21 1999/07/28 23:16:42 guy Exp $
*
* Wiretap Library
* Copyright (c) 1998 by Gilbert Ramirez <gram@verdict.uthscsa.edu>
@@ -25,7 +25,14 @@
#define __WTAP_H__
/* Encapsulation types. Choose names that truly reflect
- * what is contained in the packet trace file. */
+ * what is contained in the packet trace file.
+ *
+ * WTAP_ENCAP_LINUX_ATM_CLIP is the encapsulation you get with the
+ * ATM on Linux code from <http://lrcwww.epfl.ch/linux-atm/>;
+ * that code adds a DLT_ATM_CLIP DLT_ code of 19, and that
+ * encapsulation isn't the same as the DLT_ATM_RFC1483 encapsulation
+ * presumably used on some BSD systems, which we turn into
+ * WTAP_ENCAP_ATM_RFC1483. */
#define WTAP_ENCAP_NONE 0
#define WTAP_ENCAP_ETHERNET 1
#define WTAP_ENCAP_TR 2
@@ -35,9 +42,10 @@
#define WTAP_ENCAP_RAW_IP 6
#define WTAP_ENCAP_ARCNET 7
#define WTAP_ENCAP_ATM_RFC1483 8
+#define WTAP_ENCAP_LINUX_ATM_CLIP 9
/* last WTAP_ENCAP_ value + 1 */
-#define WTAP_NUM_ENCAP_TYPES 9
+#define WTAP_NUM_ENCAP_TYPES 10
/* File types that can be read by wiretap */
#define WTAP_FILE_UNKNOWN 0