Source-Changes-HG archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

[src/trunk]: src/sys/net update from libpcap



details:   https://anonhg.NetBSD.org/src/rev/ed8f1d658f6e
branches:  trunk
changeset: 785942:ed8f1d658f6e
user:      christos <christos%NetBSD.org@localhost>
date:      Sat Apr 06 23:20:27 2013 +0000

description:
update from libpcap

diffstat:

 sys/net/dlt.h |  765 ++++++++++++++++++++++++++++++++++++++++++++++++++++-----
 1 files changed, 690 insertions(+), 75 deletions(-)

diffs (truncated from 904 to 300 lines):

diff -r 7937a0c421f2 -r ed8f1d658f6e sys/net/dlt.h
--- a/sys/net/dlt.h     Sat Apr 06 22:21:35 2013 +0000
+++ b/sys/net/dlt.h     Sat Apr 06 23:20:27 2013 +0000
@@ -1,7 +1,7 @@
-/*     $NetBSD: dlt.h,v 1.12 2011/12/21 19:04:18 christos Exp $        */
+/*     $NetBSD: dlt.h,v 1.13 2013/04/06 23:20:27 christos Exp $        */
 
-/*
- * Copyright (c) 1990, 1991, 1993
+/*-
+ * Copyright (c) 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997
  *     The Regents of the University of California.  All rights reserved.
  *
  * This code is derived from the Stanford/CMU enet packet filter,
@@ -17,7 +17,11 @@
  * 2. Redistributions in binary form must reproduce the above copyright
  *    notice, this list of conditions and the following disclaimer in the
  *    documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the University nor the names of its contributors
+ * 3. All advertising materials mentioning features or use of this software
+ *    must display the following acknowledgement:
+ *      This product includes software developed by the University of
+ *      California, Berkeley and its contributors.
+ * 4. Neither the name of the University nor the names of its contributors
  *    may be used to endorse or promote products derived from this software
  *    without specific prior written permission.
  *
@@ -33,66 +37,382 @@
  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  * SUCH DAMAGE.
  *
- *     @(#)bpf.h       8.2 (Berkeley) 1/9/95
- * @(#) Header: bpf.h,v 1.36 97/06/12 14:29:53 leres Exp  (LBL)
+ *      @(#)bpf.h       7.1 (Berkeley) 5/7/91
+ *
+ * @(#) Header: /tcpdump/master/libpcap/pcap/bpf.h,v 1.32 2008-12-23 20:13:29 guy Exp  (LBL)
  */
 
 #ifndef _NET_DLT_H_
 #define _NET_DLT_H_
+/*
+ * Link-layer header type codes.
+ *
+ * Do *NOT* add new values to this list without asking
+ * "tcpdump-workers%lists.tcpdump.org@localhost" for a value.  Otherwise, you run
+ * the risk of using a value that's already being used for some other
+ * purpose, and of having tools that read libpcap-format captures not
+ * being able to handle captures with your new DLT_ value, with no hope
+ * that they will ever be changed to do so (as that would destroy their
+ * ability to read captures using that value for that other purpose).
+ *
+ * See
+ *
+ *     http://www.tcpdump.org/linktypes.html
+ *
+ * for detailed descriptions of some of these link-layer header types.
+ */
 
 /*
- * Data-link level type codes.
+ * These are the types that are the same on all platforms, and that
+ * have been defined by <net/bpf.h> for ages.
  */
-#define DLT_NULL       0       /* no link-layer encapsulation */
+#define DLT_NULL       0       /* BSD loopback encapsulation */
 #define DLT_EN10MB     1       /* Ethernet (10Mb) */
 #define DLT_EN3MB      2       /* Experimental Ethernet (3Mb) */
 #define DLT_AX25       3       /* Amateur Radio AX.25 */
 #define DLT_PRONET     4       /* Proteon ProNET Token Ring */
 #define DLT_CHAOS      5       /* Chaos */
-#define DLT_IEEE802    6       /* IEEE 802 Networks */
-#define DLT_ARCNET     7       /* ARCNET */
+#define DLT_IEEE802    6       /* 802.5 Token Ring */
+#define DLT_ARCNET     7       /* ARCNET, with BSD-style header */
 #define DLT_SLIP       8       /* Serial Line IP */
 #define DLT_PPP                9       /* Point-to-point Protocol */
 #define DLT_FDDI       10      /* FDDI */
-#define DLT_ATM_RFC1483        11      /* LLC/SNAP encapsulated atm */
+
+/*
+ * These are types that are different on some platforms, and that
+ * have been defined by <net/bpf.h> for ages.  We use #ifdefs to
+ * detect the BSDs that define them differently from the traditional
+ * libpcap <net/bpf.h>
+ *
+ * XXX - DLT_ATM_RFC1483 is 13 in BSD/OS, and DLT_RAW is 14 in BSD/OS,
+ * but I don't know what the right #define is for BSD/OS.
+ */
+#define DLT_ATM_RFC1483        11      /* LLC-encapsulated ATM */
+
+#ifdef __OpenBSD__
+#define DLT_RAW                14      /* raw IP */
+#else
 #define DLT_RAW                12      /* raw IP */
+#endif
+
+/*
+ * Given that the only OS that currently generates BSD/OS SLIP or PPP
+ * is, well, BSD/OS, arguably everybody should have chosen its values
+ * for DLT_SLIP_BSDOS and DLT_PPP_BSDOS, which are 15 and 16, but they
+ * didn't.  So it goes.
+ */
+#if defined(__NetBSD__) || defined(__FreeBSD__)
+#ifndef DLT_SLIP_BSDOS
 #define DLT_SLIP_BSDOS 13      /* BSD/OS Serial Line IP */
 #define DLT_PPP_BSDOS  14      /* BSD/OS Point-to-point Protocol */
-#define DLT_HIPPI      15      /* HIPPI */
-#define DLT_HDLC       16      /* HDLC framing */
+#endif
+#else
+#define DLT_SLIP_BSDOS 15      /* BSD/OS Serial Line IP */
+#define DLT_PPP_BSDOS  16      /* BSD/OS Point-to-point Protocol */
+#endif
 
-#define DLT_PFSYNC     18      /* Packet filter state syncing */
+/*
+ * 17 was used for DLT_PFLOG in OpenBSD; it no longer is.
+ *
+ * It was DLT_LANE8023 in SuSE 6.3, so we defined LINKTYPE_PFLOG
+ * as 117 so that pflog captures would use a link-layer header type
+ * value that didn't collide with any other values.  On all
+ * platforms other than OpenBSD, we defined DLT_PFLOG as 117,
+ * and we mapped between LINKTYPE_PFLOG and DLT_PFLOG.
+ *
+ * OpenBSD eventually switched to using 117 for DLT_PFLOG as well.
+ *
+ * Don't use 17 for anything else.
+ */
+#if defined(__OpenBSD__) || defined(__NetBSD__)
+#define DLT_OLD_PFLOG  17
+#endif
+
+/*
+ * 18 is used for DLT_PFSYNC in OpenBSD, NetBSD, DragonFly BSD and
+ * Mac OS X; don't use it for anything else.  (FreeBSD uses 121,
+ * which collides with DLT_HHDLC, even though it doesn't use 18
+ * for anything and doesn't appear to have ever used it for anything.)
+ *
+ * We define it as 18 on those platforms; it is, unfortunately, used
+ * for DLT_CIP in Suse 6.3, so we don't define it as DLT_PFSYNC
+ * in general.  As the packet format for it, like that for
+ * DLT_PFLOG, is not only OS-dependent but OS-version-dependent,
+ * we don't support printing it in tcpdump except on OSes that
+ * have the relevant header files, so it's not that useful on
+ * other platforms.
+ */
+#if defined(__OpenBSD__) || defined(__NetBSD__) || defined(__DragonFly__) || defined(__APPLE__)
+#define DLT_PFSYNC     18
+#endif
+
 #define DLT_ATM_CLIP   19      /* Linux Classical-IP over ATM */
-#define DLT_ENC                109     /* Encapsulated packets for IPsec */
-#define DLT_LINUX_SLL  113     /* Linux cooked sockets */
-#define DLT_LTALK      114     /* Apple LocalTalk hardware */
-#define DLT_PFLOG      117     /* Packet filter logging, by pcap people */
-#define DLT_CISCO_IOS  118     /* Registered for Cisco-internal use */
+
+/*
+ * Apparently Redback uses this for its SmartEdge 400/800.  I hope
+ * nobody else decided to use it, too.
+ */
+#define DLT_REDBACK_SMARTEDGE  32
 
-/* NetBSD-specific types */
-#define        DLT_PPP_SERIAL  50      /* PPP over serial (async and sync) */
-#define        DLT_PPP_ETHER   51      /* XXX - deprecated! PPP over Ethernet; session only, w/o ether header */
+/*
+ * These values are defined by NetBSD; other platforms should refrain from
+ * using them for other purposes, so that NetBSD savefiles with link
+ * types of 50 or 51 can be read as this type on all platforms.
+ */
+#define DLT_PPP_SERIAL 50      /* PPP over serial with HDLC encapsulation */
+#define DLT_PPP_ETHER  51      /* PPP over Ethernet */
 
-/* Axent Raptor / Symantec Enterprise Firewall */
+/*
+ * The Axent Raptor firewall - now the Symantec Enterprise Firewall - uses
+ * a link-layer type of 99 for the tcpdump it supplies.  The link-layer
+ * header has 6 bytes of unknown data, something that appears to be an
+ * Ethernet type, and 36 bytes that appear to be 0 in at least one capture
+ * I've seen.
+ */
 #define DLT_SYMANTEC_FIREWALL  99
 
-#define DLT_C_HDLC             104     /* Cisco HDLC */
-#define DLT_IEEE802_11         105     /* IEEE 802.11 wireless */
-#define DLT_FRELAY             107     /* Frame Relay */
-#define DLT_LOOP               108     /* OpenBSD DLT_LOOP */
-#define DLT_ECONET             115     /* Acorn Econet */
-#define DLT_PRISM_HEADER       119     /* 802.11 header plus Prism II info. */
-#define DLT_AIRONET_HEADER     120     /* 802.11 header plus Aironet info. */
-#define DLT_HHDLC              121     /* Reserved for Siemens HiPath HDLC */
-#define DLT_IP_OVER_FC         122     /* RFC 2625 IP-over-Fibre Channel */
+/*
+ * Values between 100 and 103 are used in capture file headers as
+ * link-layer header type LINKTYPE_ values corresponding to DLT_ types
+ * that differ between platforms; don't use those values for new DLT_
+ * new types.
+ */
+
+/*
+ * Values starting with 104 are used for newly-assigned link-layer
+ * header type values; for those link-layer header types, the DLT_
+ * value returned by pcap_datalink() and passed to pcap_open_dead(),
+ * and the LINKTYPE_ value that appears in capture files, are the
+ * same.
+ *
+ * DLT_MATCHING_MIN is the lowest such value; DLT_MATCHING_MAX is
+ * the highest such value.
+ */
+#define DLT_MATCHING_MIN       104
+
+/*
+ * This value was defined by libpcap 0.5; platforms that have defined
+ * it with a different value should define it here with that value -
+ * a link type of 104 in a save file will be mapped to DLT_C_HDLC,
+ * whatever value that happens to be, so programs will correctly
+ * handle files with that link type regardless of the value of
+ * DLT_C_HDLC.
+ *
+ * The name DLT_C_HDLC was used by BSD/OS; we use that name for source
+ * compatibility with programs written for BSD/OS.
+ *
+ * libpcap 0.5 defined it as DLT_CHDLC; we define DLT_CHDLC as well,
+ * for source compatibility with programs written for libpcap 0.5.
+ */
+#define DLT_C_HDLC     104     /* Cisco HDLC */
+#define DLT_CHDLC      DLT_C_HDLC
+
+#define DLT_IEEE802_11 105     /* IEEE 802.11 wireless */
+
+/*
+ * 106 is reserved for Linux Classical IP over ATM; it's like DLT_RAW,
+ * except when it isn't.  (I.e., sometimes it's just raw IP, and
+ * sometimes it isn't.)  We currently handle it as DLT_LINUX_SLL,
+ * so that we don't have to worry about the link-layer header.)
+ */
+
+/*
+ * Frame Relay; BSD/OS has a DLT_FR with a value of 11, but that collides
+ * with other values.
+ * DLT_FR and DLT_FRELAY packets start with the Q.922 Frame Relay header
+ * (DLCI, etc.).
+ */
+#define DLT_FRELAY     107
+
+/*
+ * OpenBSD DLT_LOOP, for loopback devices; it's like DLT_NULL, except
+ * that the AF_ type in the link-layer header is in network byte order.
+ *
+ * DLT_LOOP is 12 in OpenBSD, but that's DLT_RAW in other OSes, so
+ * we don't use 12 for it in OSes other than OpenBSD.
+ */
+#ifdef __OpenBSD__
+#define DLT_LOOP       12
+#else
+#define DLT_LOOP       108
+#endif
+
+/*
+ * Encapsulated packets for IPsec; DLT_ENC is 13 in OpenBSD, but that's
+ * DLT_SLIP_BSDOS in NetBSD, so we don't use 13 for it in OSes other
+ * than OpenBSD.
+ */
+#ifdef __OpenBSD__
+#define DLT_ENC                13
+#else
+#define DLT_ENC                109
+#endif
+
+/*
+ * Values between 110 and 112 are reserved for use in capture file headers
+ * as link-layer types corresponding to DLT_ types that might differ
+ * between platforms; don't use those values for new DLT_ types
+ * other than the corresponding DLT_ types.
+ */
+
+/*
+ * This is for Linux cooked sockets.
+ */
+#define DLT_LINUX_SLL  113
+
+/*
+ * Apple LocalTalk hardware.
+ */
+#define DLT_LTALK      114
+
+/*
+ * Acorn Econet.
+ */
+#define DLT_ECONET     115
+
+/*
+ * Reserved for use with OpenBSD ipfilter.
+ */
+#define DLT_IPFILTER   116
+
+/*
+ * OpenBSD DLT_PFLOG.
+ */



Home | Main Index | Thread Index | Old Index