1511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall/*-
2511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * Copyright (c) 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997
3511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall *	The Regents of the University of California.  All rights reserved.
4511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall *
5511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * This code is derived from the Stanford/CMU enet packet filter,
6511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * (net/enet.c) distributed as part of 4.3BSD, and code contributed
7511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * to Berkeley by Steven McCanne and Van Jacobson both of Lawrence
8511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * Berkeley Laboratory.
9511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall *
10511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * Redistribution and use in source and binary forms, with or without
11511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * modification, are permitted provided that the following conditions
12511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * are met:
13511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * 1. Redistributions of source code must retain the above copyright
14511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall *    notice, this list of conditions and the following disclaimer.
15511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * 2. Redistributions in binary form must reproduce the above copyright
16511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall *    notice, this list of conditions and the following disclaimer in the
17511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall *    documentation and/or other materials provided with the distribution.
18511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * 3. All advertising materials mentioning features or use of this software
19511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall *    must display the following acknowledgement:
20511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall *      This product includes software developed by the University of
21511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall *      California, Berkeley and its contributors.
22511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * 4. Neither the name of the University nor the names of its contributors
23511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall *    may be used to endorse or promote products derived from this software
24511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall *    without specific prior written permission.
25511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall *
26511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
27511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
28511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
29511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
30511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
31511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
32511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
33511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
34511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
35511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
36511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * SUCH DAMAGE.
37511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall *
38511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall *      @(#)bpf.h       7.1 (Berkeley) 5/7/91
39511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall *
40511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * @(#) $Header: /tcpdump/master/libpcap/pcap/bpf.h,v 1.32 2008-12-23 20:13:29 guy Exp $ (LBL)
41511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall */
42511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall
43511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall/*
44511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * This is libpcap's cut-down version of bpf.h; it includes only
45511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * the stuff needed for the code generator and the userland BPF
46511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * interpreter, and the libpcap APIs for setting filters, etc..
47511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall *
48511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * "pcap-bpf.c" will include the native OS version, as it deals with
49511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * the OS's BPF implementation.
50511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall *
51511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * At least two programs found by Google Code Search explicitly includes
52511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * <pcap/bpf.h> (even though <pcap.h>/<pcap/pcap.h> includes it for you),
53511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * so moving that stuff to <pcap/pcap.h> would break the build for some
54511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * programs.
55511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall */
56511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall
57511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall/*
58511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * If we've already included <net/bpf.h>, don't re-define this stuff.
59511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * We assume BSD-style multiple-include protection in <net/bpf.h>,
60511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * which is true of all but the oldest versions of FreeBSD and NetBSD,
61511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * or Tru64 UNIX-style multiple-include protection (or, at least,
62511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * Tru64 UNIX 5.x-style; I don't have earlier versions available to check),
63511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * or AIX-style multiple-include protection (or, at least, AIX 5.x-style;
64511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * I don't have earlier versions available to check).
65511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall *
66511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * We do not check for BPF_MAJOR_VERSION, as that's defined by
67511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * <linux/filter.h>, which is directly or indirectly included in some
68511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * programs that also include pcap.h, and <linux/filter.h> doesn't
69511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * define stuff we need.
70511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall *
71511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * This also provides our own multiple-include protection.
72511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall */
73511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall#if !defined(_NET_BPF_H_) && !defined(_BPF_H_) && !defined(_H_BPF) && !defined(lib_pcap_bpf_h)
74511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall#define lib_pcap_bpf_h
75511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall
76511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall#ifdef __cplusplus
77511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrallextern "C" {
78511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall#endif
79511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall
80511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall/* BSD style release date */
81511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall#define BPF_RELEASE 199606
82511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall
83511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall#ifdef MSDOS /* must be 32-bit */
84511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgralltypedef long          bpf_int32;
85511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgralltypedef unsigned long bpf_u_int32;
86511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall#else
87511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgralltypedef	int bpf_int32;
88511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgralltypedef	u_int bpf_u_int32;
89511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall#endif
90511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall
91511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall/*
92511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * Alignment macros.  BPF_WORDALIGN rounds up to the next
93511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * even multiple of BPF_ALIGNMENT.
94511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall *
95511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * Tcpdump's print-pflog.c uses this, so we define it here.
96511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall */
97511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall#ifndef __NetBSD__
98511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall#define BPF_ALIGNMENT sizeof(bpf_int32)
99511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall#else
100511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall#define BPF_ALIGNMENT sizeof(long)
101511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall#endif
102511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall#define BPF_WORDALIGN(x) (((x)+(BPF_ALIGNMENT-1))&~(BPF_ALIGNMENT-1))
103511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall
104511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall/*
105511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * Structure for "pcap_compile()", "pcap_setfilter()", etc..
106511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall */
107511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrallstruct bpf_program {
108511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall	u_int bf_len;
109511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall	struct bpf_insn *bf_insns;
110511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall};
111511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall
112511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall/*
113511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * Link-layer header type codes.
114511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall *
115511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * Do *NOT* add new values to this list without asking
116511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * "tcpdump-workers@lists.tcpdump.org" for a value.  Otherwise, you run
117511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * the risk of using a value that's already being used for some other
118511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * purpose, and of having tools that read libpcap-format captures not
119511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * being able to handle captures with your new DLT_ value, with no hope
120511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * that they will ever be changed to do so (as that would destroy their
121511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * ability to read captures using that value for that other purpose).
122511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall *
123511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * See
124511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall *
125511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall *	http://www.tcpdump.org/linktypes.html
126511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall *
127511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * for detailed descriptions of some of these link-layer header types.
128511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall */
129511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall
130511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall/*
131511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * These are the types that are the same on all platforms, and that
132511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * have been defined by <net/bpf.h> for ages.
133511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall */
134511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall#define DLT_NULL	0	/* BSD loopback encapsulation */
135511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall#define DLT_EN10MB	1	/* Ethernet (10Mb) */
136511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall#define DLT_EN3MB	2	/* Experimental Ethernet (3Mb) */
137511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall#define DLT_AX25	3	/* Amateur Radio AX.25 */
138511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall#define DLT_PRONET	4	/* Proteon ProNET Token Ring */
139511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall#define DLT_CHAOS	5	/* Chaos */
140511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall#define DLT_IEEE802	6	/* 802.5 Token Ring */
141511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall#define DLT_ARCNET	7	/* ARCNET, with BSD-style header */
142511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall#define DLT_SLIP	8	/* Serial Line IP */
143511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall#define DLT_PPP		9	/* Point-to-point Protocol */
144511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall#define DLT_FDDI	10	/* FDDI */
145511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall
146511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall/*
147511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * These are types that are different on some platforms, and that
148511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * have been defined by <net/bpf.h> for ages.  We use #ifdefs to
149511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * detect the BSDs that define them differently from the traditional
150511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * libpcap <net/bpf.h>
151511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall *
152511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * XXX - DLT_ATM_RFC1483 is 13 in BSD/OS, and DLT_RAW is 14 in BSD/OS,
153511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * but I don't know what the right #define is for BSD/OS.
154511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall */
155511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall#define DLT_ATM_RFC1483	11	/* LLC-encapsulated ATM */
156511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall
157511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall#ifdef __OpenBSD__
158511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall#define DLT_RAW		14	/* raw IP */
159511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall#else
160511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall#define DLT_RAW		12	/* raw IP */
161511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall#endif
162511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall
163511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall/*
164511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * Given that the only OS that currently generates BSD/OS SLIP or PPP
165511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * is, well, BSD/OS, arguably everybody should have chosen its values
166511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * for DLT_SLIP_BSDOS and DLT_PPP_BSDOS, which are 15 and 16, but they
167511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * didn't.  So it goes.
168511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall */
169511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall#if defined(__NetBSD__) || defined(__FreeBSD__)
170511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall#ifndef DLT_SLIP_BSDOS
171511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall#define DLT_SLIP_BSDOS	13	/* BSD/OS Serial Line IP */
172511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall#define DLT_PPP_BSDOS	14	/* BSD/OS Point-to-point Protocol */
173511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall#endif
174511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall#else
175511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall#define DLT_SLIP_BSDOS	15	/* BSD/OS Serial Line IP */
176511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall#define DLT_PPP_BSDOS	16	/* BSD/OS Point-to-point Protocol */
177511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall#endif
178511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall
179511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall/*
180511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * 17 was used for DLT_PFLOG in OpenBSD; it no longer is.
181511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall *
182511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * It was DLT_LANE8023 in SuSE 6.3, so we defined LINKTYPE_PFLOG
183511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * as 117 so that pflog captures would use a link-layer header type
184511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * value that didn't collide with any other values.  On all
185511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * platforms other than OpenBSD, we defined DLT_PFLOG as 117,
186511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * and we mapped between LINKTYPE_PFLOG and DLT_PFLOG.
187511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall *
188511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * OpenBSD eventually switched to using 117 for DLT_PFLOG as well.
189511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall *
190511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * Don't use 17 for anything else.
191511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall */
192511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall
193511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall/*
194511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * 18 is used for DLT_PFSYNC in OpenBSD, NetBSD, DragonFly BSD and
195511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * Mac OS X; don't use it for anything else.  (FreeBSD uses 121,
196511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * which collides with DLT_HHDLC, even though it doesn't use 18
197511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * for anything and doesn't appear to have ever used it for anything.)
198511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall *
199511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * We define it as 18 on those platforms; it is, unfortunately, used
200511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * for DLT_CIP in Suse 6.3, so we don't define it as DLT_PFSYNC
201511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * in general.  As the packet format for it, like that for
202511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * DLT_PFLOG, is not only OS-dependent but OS-version-dependent,
203511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * we don't support printing it in tcpdump except on OSes that
204511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * have the relevant header files, so it's not that useful on
205511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * other platforms.
206511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall */
207511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall#if defined(__OpenBSD__) || defined(__NetBSD__) || defined(__DragonFly__) || defined(__APPLE__)
208511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall#define DLT_PFSYNC	18
209511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall#endif
210511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall
211511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall#define DLT_ATM_CLIP	19	/* Linux Classical-IP over ATM */
212511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall
213511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall/*
214511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * Apparently Redback uses this for its SmartEdge 400/800.  I hope
215511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * nobody else decided to use it, too.
216511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall */
217511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall#define DLT_REDBACK_SMARTEDGE	32
218511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall
219511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall/*
220511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * These values are defined by NetBSD; other platforms should refrain from
221511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * using them for other purposes, so that NetBSD savefiles with link
222511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * types of 50 or 51 can be read as this type on all platforms.
223511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall */
224511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall#define DLT_PPP_SERIAL	50	/* PPP over serial with HDLC encapsulation */
225511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall#define DLT_PPP_ETHER	51	/* PPP over Ethernet */
226511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall
227511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall/*
228511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * The Axent Raptor firewall - now the Symantec Enterprise Firewall - uses
229511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * a link-layer type of 99 for the tcpdump it supplies.  The link-layer
230511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * header has 6 bytes of unknown data, something that appears to be an
231511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * Ethernet type, and 36 bytes that appear to be 0 in at least one capture
232511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * I've seen.
233511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall */
234511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall#define DLT_SYMANTEC_FIREWALL	99
235511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall
236511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall/*
237511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * Values between 100 and 103 are used in capture file headers as
238511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * link-layer header type LINKTYPE_ values corresponding to DLT_ types
239511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * that differ between platforms; don't use those values for new DLT_
240511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * new types.
241511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall */
242511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall
243511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall/*
244511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * Values starting with 104 are used for newly-assigned link-layer
245511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * header type values; for those link-layer header types, the DLT_
246511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * value returned by pcap_datalink() and passed to pcap_open_dead(),
247511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * and the LINKTYPE_ value that appears in capture files, are the
248511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * same.
249511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall *
250511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * DLT_MATCHING_MIN is the lowest such value; DLT_MATCHING_MAX is
251511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * the highest such value.
252511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall */
253511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall#define DLT_MATCHING_MIN	104
254511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall
255511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall/*
256511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * This value was defined by libpcap 0.5; platforms that have defined
257511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * it with a different value should define it here with that value -
258511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * a link type of 104 in a save file will be mapped to DLT_C_HDLC,
259511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * whatever value that happens to be, so programs will correctly
260511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * handle files with that link type regardless of the value of
261511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * DLT_C_HDLC.
262511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall *
263511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * The name DLT_C_HDLC was used by BSD/OS; we use that name for source
264511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * compatibility with programs written for BSD/OS.
265511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall *
266511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * libpcap 0.5 defined it as DLT_CHDLC; we define DLT_CHDLC as well,
267511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * for source compatibility with programs written for libpcap 0.5.
268511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall */
269511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall#define DLT_C_HDLC	104	/* Cisco HDLC */
270511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall#define DLT_CHDLC	DLT_C_HDLC
271511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall
272511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall#define DLT_IEEE802_11	105	/* IEEE 802.11 wireless */
273511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall
274511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall/*
275511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * 106 is reserved for Linux Classical IP over ATM; it's like DLT_RAW,
276511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * except when it isn't.  (I.e., sometimes it's just raw IP, and
277511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * sometimes it isn't.)  We currently handle it as DLT_LINUX_SLL,
278511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * so that we don't have to worry about the link-layer header.)
279511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall */
280511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall
281511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall/*
282511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * Frame Relay; BSD/OS has a DLT_FR with a value of 11, but that collides
283511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * with other values.
284511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * DLT_FR and DLT_FRELAY packets start with the Q.922 Frame Relay header
285511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * (DLCI, etc.).
286511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall */
287511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall#define DLT_FRELAY	107
288511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall
289511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall/*
290511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * OpenBSD DLT_LOOP, for loopback devices; it's like DLT_NULL, except
291511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * that the AF_ type in the link-layer header is in network byte order.
292511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall *
293511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * DLT_LOOP is 12 in OpenBSD, but that's DLT_RAW in other OSes, so
294511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * we don't use 12 for it in OSes other than OpenBSD.
295511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall */
296511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall#ifdef __OpenBSD__
297511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall#define DLT_LOOP	12
298511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall#else
299511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall#define DLT_LOOP	108
300511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall#endif
301511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall
302511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall/*
303511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * Encapsulated packets for IPsec; DLT_ENC is 13 in OpenBSD, but that's
304511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * DLT_SLIP_BSDOS in NetBSD, so we don't use 13 for it in OSes other
305511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * than OpenBSD.
306511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall */
307511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall#ifdef __OpenBSD__
308511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall#define DLT_ENC		13
309511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall#else
310511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall#define DLT_ENC		109
311511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall#endif
312511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall
313511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall/*
314511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * Values between 110 and 112 are reserved for use in capture file headers
315511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * as link-layer types corresponding to DLT_ types that might differ
316511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * between platforms; don't use those values for new DLT_ types
317511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * other than the corresponding DLT_ types.
318511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall */
319511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall
320511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall/*
321511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * This is for Linux cooked sockets.
322511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall */
323511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall#define DLT_LINUX_SLL	113
324511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall
325511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall/*
326511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * Apple LocalTalk hardware.
327511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall */
328511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall#define DLT_LTALK	114
329511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall
330511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall/*
331511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * Acorn Econet.
332511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall */
333511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall#define DLT_ECONET	115
334511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall
335511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall/*
336511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * Reserved for use with OpenBSD ipfilter.
337511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall */
338511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall#define DLT_IPFILTER	116
339511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall
340511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall/*
341511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * OpenBSD DLT_PFLOG.
342511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall */
343511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall#define DLT_PFLOG	117
344511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall
345511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall/*
346511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * Registered for Cisco-internal use.
347511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall */
348511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall#define DLT_CISCO_IOS	118
349511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall
350511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall/*
351511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * For 802.11 cards using the Prism II chips, with a link-layer
352511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * header including Prism monitor mode information plus an 802.11
353511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * header.
354511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall */
355511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall#define DLT_PRISM_HEADER	119
356511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall
357511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall/*
358511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * Reserved for Aironet 802.11 cards, with an Aironet link-layer header
359511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * (see Doug Ambrisko's FreeBSD patches).
360511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall */
361511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall#define DLT_AIRONET_HEADER	120
362511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall
363511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall/*
364511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * Sigh.
365511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall *
366511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * This was reserved for Siemens HiPath HDLC on 2002-01-25, as
367511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * requested by Tomas Kukosa.
368511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall *
369511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * On 2004-02-25, a FreeBSD checkin to sys/net/bpf.h was made that
370511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * assigned 121 as DLT_PFSYNC.  Its libpcap does DLT_ <-> LINKTYPE_
371511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * mapping, so it probably supports capturing on the pfsync device
372511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * but not saving the captured data to a pcap file.
373511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall *
374511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * OpenBSD, from which pf came, however, uses 18 for DLT_PFSYNC;
375511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * their libpcap does no DLT_ <-> LINKTYPE_ mapping, so it would
376511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * use 18 in pcap files as well.
377511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall *
378511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * NetBSD and DragonFly BSD also use 18 for DLT_PFSYNC; their
379511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * libpcaps do DLT_ <-> LINKTYPE_ mapping, and neither has an entry
380511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * for DLT_PFSYNC, so it might not be able to write out dump files
381511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * with 18 as the link-layer header type.  (Earlier versions might
382511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * not have done mapping, in which case they'd work the same way
383511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * OpenBSD does.)
384511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall *
385511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * Mac OS X defines it as 18, but doesn't appear to use it as of
386511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * Mac OS X 10.7.3.  Its libpcap does DLT_ <-> LINKTYPE_ mapping.
387511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall *
388511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * We'll define DLT_PFSYNC as 121 on FreeBSD and define it as 18 on
389511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * all other platforms.  We'll define DLT_HHDLC as 121 on everything
390511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * except for FreeBSD; anybody who wants to compile, on FreeBSD, code
391511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * that uses DLT_HHDLC is out of luck.
392511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall *
393511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * We'll define LINKTYPE_PFSYNC as 18, *even on FreeBSD*, and map
394511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * it, so that savefiles won't use 121 for PFSYNC - they'll all
395511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * use 18.  Code that uses pcap_datalink() to determine the link-layer
396511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * header type of a savefile won't, when built and run on FreeBSD,
397511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * be able to distinguish between LINKTYPE_PFSYNC and LINKTYPE_HHDLC
398511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * capture files; code that doesn't, such as the code in Wireshark,
399511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * will be able to distinguish between them.
400511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall */
401511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall#ifdef __FreeBSD__
402511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall#define DLT_PFSYNC		121
403511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall#else
404511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall#define DLT_HHDLC		121
405511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall#endif
406511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall
407511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall/*
408511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * This is for RFC 2625 IP-over-Fibre Channel.
409511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall *
410511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * This is not for use with raw Fibre Channel, where the link-layer
411511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * header starts with a Fibre Channel frame header; it's for IP-over-FC,
412511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * where the link-layer header starts with an RFC 2625 Network_Header
413511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * field.
414511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall */
415511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall#define DLT_IP_OVER_FC		122
416511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall
417511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall/*
418511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * This is for Full Frontal ATM on Solaris with SunATM, with a
419511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * pseudo-header followed by an AALn PDU.
420511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall *
421511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * There may be other forms of Full Frontal ATM on other OSes,
422511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * with different pseudo-headers.
423511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall *
424511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * If ATM software returns a pseudo-header with VPI/VCI information
425511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * (and, ideally, packet type information, e.g. signalling, ILMI,
426511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * LANE, LLC-multiplexed traffic, etc.), it should not use
427511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * DLT_ATM_RFC1483, but should get a new DLT_ value, so tcpdump
428511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * and the like don't have to infer the presence or absence of a
429511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * pseudo-header and the form of the pseudo-header.
430511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall */
431511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall#define DLT_SUNATM		123	/* Solaris+SunATM */
432511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall
433511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall/*
434511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * Reserved as per request from Kent Dahlgren <kent@praesum.com>
435511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * for private use.
436511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall */
437511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall#define DLT_RIO                 124     /* RapidIO */
438511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall#define DLT_PCI_EXP             125     /* PCI Express */
439511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall#define DLT_AURORA              126     /* Xilinx Aurora link layer */
440511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall
441511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall/*
442511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * Header for 802.11 plus a number of bits of link-layer information
443511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * including radio information, used by some recent BSD drivers as
444511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * well as the madwifi Atheros driver for Linux.
445511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall */
446511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall#define DLT_IEEE802_11_RADIO	127	/* 802.11 plus radiotap radio header */
447511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall
448511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall/*
449511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * Reserved for the TZSP encapsulation, as per request from
450511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * Chris Waters <chris.waters@networkchemistry.com>
451511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * TZSP is a generic encapsulation for any other link type,
452511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * which includes a means to include meta-information
453511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * with the packet, e.g. signal strength and channel
454511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * for 802.11 packets.
455511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall */
456511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall#define DLT_TZSP                128     /* Tazmen Sniffer Protocol */
457511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall
458511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall/*
459511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * BSD's ARCNET headers have the source host, destination host,
460511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * and type at the beginning of the packet; that's what's handed
461511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * up to userland via BPF.
462511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall *
463511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * Linux's ARCNET headers, however, have a 2-byte offset field
464511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * between the host IDs and the type; that's what's handed up
465511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * to userland via PF_PACKET sockets.
466511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall *
467511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * We therefore have to have separate DLT_ values for them.
468511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall */
469511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall#define DLT_ARCNET_LINUX	129	/* ARCNET */
470511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall
471511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall/*
472511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * Juniper-private data link types, as per request from
473511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * Hannes Gredler <hannes@juniper.net>.  The DLT_s are used
474511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * for passing on chassis-internal metainformation such as
475511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * QOS profiles, etc..
476511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall */
477511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall#define DLT_JUNIPER_MLPPP       130
478511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall#define DLT_JUNIPER_MLFR        131
479511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall#define DLT_JUNIPER_ES          132
480511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall#define DLT_JUNIPER_GGSN        133
481511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall#define DLT_JUNIPER_MFR         134
482511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall#define DLT_JUNIPER_ATM2        135
483511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall#define DLT_JUNIPER_SERVICES    136
484511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall#define DLT_JUNIPER_ATM1        137
485511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall
486511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall/*
487511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * Apple IP-over-IEEE 1394, as per a request from Dieter Siegmund
488511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * <dieter@apple.com>.  The header that's presented is an Ethernet-like
489511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * header:
490511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall *
491511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall *	#define FIREWIRE_EUI64_LEN	8
492511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall *	struct firewire_header {
493511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall *		u_char  firewire_dhost[FIREWIRE_EUI64_LEN];
494511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall *		u_char  firewire_shost[FIREWIRE_EUI64_LEN];
495511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall *		u_short firewire_type;
496511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall *	};
497511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall *
498511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * with "firewire_type" being an Ethernet type value, rather than,
499511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * for example, raw GASP frames being handed up.
500511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall */
501511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall#define DLT_APPLE_IP_OVER_IEEE1394	138
502511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall
503511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall/*
504511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * Various SS7 encapsulations, as per a request from Jeff Morriss
505511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * <jeff.morriss[AT]ulticom.com> and subsequent discussions.
506511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall */
507511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall#define DLT_MTP2_WITH_PHDR	139	/* pseudo-header with various info, followed by MTP2 */
508511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall#define DLT_MTP2		140	/* MTP2, without pseudo-header */
509511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall#define DLT_MTP3		141	/* MTP3, without pseudo-header or MTP2 */
510511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall#define DLT_SCCP		142	/* SCCP, without pseudo-header or MTP2 or MTP3 */
511511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall
512511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall/*
513511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * DOCSIS MAC frames.
514511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall */
515511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall#define DLT_DOCSIS		143
516511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall
517511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall/*
518511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * Linux-IrDA packets. Protocol defined at http://www.irda.org.
519511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * Those packets include IrLAP headers and above (IrLMP...), but
520511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * don't include Phy framing (SOF/EOF/CRC & byte stuffing), because Phy
521511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * framing can be handled by the hardware and depend on the bitrate.
522511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * This is exactly the format you would get capturing on a Linux-IrDA
523511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * interface (irdaX), but not on a raw serial port.
524511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * Note the capture is done in "Linux-cooked" mode, so each packet include
525511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * a fake packet header (struct sll_header). This is because IrDA packet
526511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * decoding is dependant on the direction of the packet (incomming or
527511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * outgoing).
528511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * When/if other platform implement IrDA capture, we may revisit the
529511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * issue and define a real DLT_IRDA...
530511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * Jean II
531511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall */
532511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall#define DLT_LINUX_IRDA		144
533511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall
534511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall/*
535511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * Reserved for IBM SP switch and IBM Next Federation switch.
536511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall */
537511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall#define DLT_IBM_SP		145
538511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall#define DLT_IBM_SN		146
539511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall
540511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall/*
541511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * Reserved for private use.  If you have some link-layer header type
542511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * that you want to use within your organization, with the capture files
543511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * using that link-layer header type not ever be sent outside your
544511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * organization, you can use these values.
545511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall *
546511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * No libpcap release will use these for any purpose, nor will any
547511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * tcpdump release use them, either.
548511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall *
549511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * Do *NOT* use these in capture files that you expect anybody not using
550511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * your private versions of capture-file-reading tools to read; in
551511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * particular, do *NOT* use them in products, otherwise you may find that
552511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * people won't be able to use tcpdump, or snort, or Ethereal, or... to
553511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * read capture files from your firewall/intrusion detection/traffic
554511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * monitoring/etc. appliance, or whatever product uses that DLT_ value,
555511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * and you may also find that the developers of those applications will
556511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * not accept patches to let them read those files.
557511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall *
558511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * Also, do not use them if somebody might send you a capture using them
559511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * for *their* private type and tools using them for *your* private type
560511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * would have to read them.
561511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall *
562511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * Instead, ask "tcpdump-workers@lists.tcpdump.org" for a new DLT_ value,
563511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * as per the comment above, and use the type you're given.
564511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall */
565511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall#define DLT_USER0		147
566511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall#define DLT_USER1		148
567511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall#define DLT_USER2		149
568511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall#define DLT_USER3		150
569511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall#define DLT_USER4		151
570511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall#define DLT_USER5		152
571511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall#define DLT_USER6		153
572511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall#define DLT_USER7		154
573511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall#define DLT_USER8		155
574511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall#define DLT_USER9		156
575511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall#define DLT_USER10		157
576511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall#define DLT_USER11		158
577511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall#define DLT_USER12		159
578511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall#define DLT_USER13		160
579511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall#define DLT_USER14		161
580511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall#define DLT_USER15		162
581511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall
582511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall/*
583511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * For future use with 802.11 captures - defined by AbsoluteValue
584511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * Systems to store a number of bits of link-layer information
585511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * including radio information:
586511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall *
587511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall *	http://www.shaftnet.org/~pizza/software/capturefrm.txt
588511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall *
589511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * but it might be used by some non-AVS drivers now or in the
590511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * future.
591511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall */
592511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall#define DLT_IEEE802_11_RADIO_AVS 163	/* 802.11 plus AVS radio header */
593511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall
594511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall/*
595511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * Juniper-private data link type, as per request from
596511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * Hannes Gredler <hannes@juniper.net>.  The DLT_s are used
597511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * for passing on chassis-internal metainformation such as
598511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * QOS profiles, etc..
599511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall */
600511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall#define DLT_JUNIPER_MONITOR     164
601511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall
602511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall/*
603511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * BACnet MS/TP frames.
604511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall */
605511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall#define DLT_BACNET_MS_TP	165
606511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall
607511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall/*
608511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * Another PPP variant as per request from Karsten Keil <kkeil@suse.de>.
609511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall *
610511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * This is used in some OSes to allow a kernel socket filter to distinguish
611511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * between incoming and outgoing packets, on a socket intended to
612511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * supply pppd with outgoing packets so it can do dial-on-demand and
613511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * hangup-on-lack-of-demand; incoming packets are filtered out so they
614511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * don't cause pppd to hold the connection up (you don't want random
615511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * input packets such as port scans, packets from old lost connections,
616511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * etc. to force the connection to stay up).
617511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall *
618511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * The first byte of the PPP header (0xff03) is modified to accomodate
619511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * the direction - 0x00 = IN, 0x01 = OUT.
620511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall */
621511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall#define DLT_PPP_PPPD		166
622511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall
623511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall/*
624511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * Names for backwards compatibility with older versions of some PPP
625511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * software; new software should use DLT_PPP_PPPD.
626511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall */
627511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall#define DLT_PPP_WITH_DIRECTION	DLT_PPP_PPPD
628511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall#define DLT_LINUX_PPP_WITHDIRECTION	DLT_PPP_PPPD
629511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall
630511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall/*
631511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * Juniper-private data link type, as per request from
632511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * Hannes Gredler <hannes@juniper.net>.  The DLT_s are used
633511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * for passing on chassis-internal metainformation such as
634511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * QOS profiles, cookies, etc..
635511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall */
636511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall#define DLT_JUNIPER_PPPOE       167
637511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall#define DLT_JUNIPER_PPPOE_ATM   168
638511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall
639511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall#define DLT_GPRS_LLC		169	/* GPRS LLC */
640511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall#define DLT_GPF_T		170	/* GPF-T (ITU-T G.7041/Y.1303) */
641511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall#define DLT_GPF_F		171	/* GPF-F (ITU-T G.7041/Y.1303) */
642511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall
643511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall/*
644511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * Requested by Oolan Zimmer <oz@gcom.com> for use in Gcom's T1/E1 line
645511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * monitoring equipment.
646511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall */
647511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall#define DLT_GCOM_T1E1		172
648511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall#define DLT_GCOM_SERIAL		173
649511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall
650511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall/*
651511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * Juniper-private data link type, as per request from
652511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * Hannes Gredler <hannes@juniper.net>.  The DLT_ is used
653511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * for internal communication to Physical Interface Cards (PIC)
654511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall */
655511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall#define DLT_JUNIPER_PIC_PEER    174
656511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall
657511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall/*
658511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * Link types requested by Gregor Maier <gregor@endace.com> of Endace
659511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * Measurement Systems.  They add an ERF header (see
660511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * http://www.endace.com/support/EndaceRecordFormat.pdf) in front of
661511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * the link-layer header.
662511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall */
663511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall#define DLT_ERF_ETH		175	/* Ethernet */
664511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall#define DLT_ERF_POS		176	/* Packet-over-SONET */
665511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall
666511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall/*
667511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * Requested by Daniele Orlandi <daniele@orlandi.com> for raw LAPD
668511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * for vISDN (http://www.orlandi.com/visdn/).  Its link-layer header
669511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * includes additional information before the LAPD header, so it's
670511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * not necessarily a generic LAPD header.
671511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall */
672511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall#define DLT_LINUX_LAPD		177
673511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall
674511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall/*
675511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * Juniper-private data link type, as per request from
676511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * Hannes Gredler <hannes@juniper.net>.
677511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * The DLT_ are used for prepending meta-information
678511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * like interface index, interface name
679511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * before standard Ethernet, PPP, Frelay & C-HDLC Frames
680511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall */
681511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall#define DLT_JUNIPER_ETHER       178
682511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall#define DLT_JUNIPER_PPP         179
683511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall#define DLT_JUNIPER_FRELAY      180
684511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall#define DLT_JUNIPER_CHDLC       181
685511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall
686511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall/*
687511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * Multi Link Frame Relay (FRF.16)
688511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall */
689511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall#define DLT_MFR                 182
690511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall
691511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall/*
692511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * Juniper-private data link type, as per request from
693511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * Hannes Gredler <hannes@juniper.net>.
694511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * The DLT_ is used for internal communication with a
695511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * voice Adapter Card (PIC)
696511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall */
697511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall#define DLT_JUNIPER_VP          183
698511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall
699511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall/*
700511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * Arinc 429 frames.
701511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * DLT_ requested by Gianluca Varenni <gianluca.varenni@cacetech.com>.
702511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * Every frame contains a 32bit A429 label.
703511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * More documentation on Arinc 429 can be found at
704511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * http://www.condoreng.com/support/downloads/tutorials/ARINCTutorial.pdf
705511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall */
706511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall#define DLT_A429                184
707511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall
708511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall/*
709511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * Arinc 653 Interpartition Communication messages.
710511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * DLT_ requested by Gianluca Varenni <gianluca.varenni@cacetech.com>.
711511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * Please refer to the A653-1 standard for more information.
712511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall */
713511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall#define DLT_A653_ICM            185
714511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall
715511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall/*
716511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * USB packets, beginning with a USB setup header; requested by
717511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * Paolo Abeni <paolo.abeni@email.it>.
718511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall */
719511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall#define DLT_USB			186
720511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall
721511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall/*
722511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * Bluetooth HCI UART transport layer (part H:4); requested by
723511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * Paolo Abeni.
724511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall */
725511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall#define DLT_BLUETOOTH_HCI_H4	187
726511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall
727511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall/*
728511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * IEEE 802.16 MAC Common Part Sublayer; requested by Maria Cruz
729511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * <cruz_petagay@bah.com>.
730511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall */
731511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall#define DLT_IEEE802_16_MAC_CPS	188
732511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall
733511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall/*
734511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * USB packets, beginning with a Linux USB header; requested by
735511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * Paolo Abeni <paolo.abeni@email.it>.
736511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall */
737511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall#define DLT_USB_LINUX		189
738511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall
739511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall/*
740511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * Controller Area Network (CAN) v. 2.0B packets.
741511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * DLT_ requested by Gianluca Varenni <gianluca.varenni@cacetech.com>.
742511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * Used to dump CAN packets coming from a CAN Vector board.
743511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * More documentation on the CAN v2.0B frames can be found at
744511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * http://www.can-cia.org/downloads/?269
745511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall */
746511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall#define DLT_CAN20B              190
747511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall
748511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall/*
749511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * IEEE 802.15.4, with address fields padded, as is done by Linux
750511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * drivers; requested by Juergen Schimmer.
751511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall */
752511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall#define DLT_IEEE802_15_4_LINUX	191
753511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall
754511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall/*
755511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * Per Packet Information encapsulated packets.
756511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * DLT_ requested by Gianluca Varenni <gianluca.varenni@cacetech.com>.
757511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall */
758511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall#define DLT_PPI			192
759511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall
760511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall/*
761511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * Header for 802.16 MAC Common Part Sublayer plus a radiotap radio header;
762511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * requested by Charles Clancy.
763511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall */
764511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall#define DLT_IEEE802_16_MAC_CPS_RADIO	193
765511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall
766511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall/*
767511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * Juniper-private data link type, as per request from
768511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * Hannes Gredler <hannes@juniper.net>.
769511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * The DLT_ is used for internal communication with a
770511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * integrated service module (ISM).
771511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall */
772511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall#define DLT_JUNIPER_ISM         194
773511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall
774511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall/*
775511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * IEEE 802.15.4, exactly as it appears in the spec (no padding, no
776511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * nothing); requested by Mikko Saarnivala <mikko.saarnivala@sensinode.com>.
777511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * For this one, we expect the FCS to be present at the end of the frame;
778511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * if the frame has no FCS, DLT_IEEE802_15_4_NOFCS should be used.
779511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall */
780511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall#define DLT_IEEE802_15_4	195
781511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall
782511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall/*
783511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * Various link-layer types, with a pseudo-header, for SITA
784511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * (http://www.sita.aero/); requested by Fulko Hew (fulko.hew@gmail.com).
785511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall */
786511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall#define DLT_SITA		196
787511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall
788511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall/*
789511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * Various link-layer types, with a pseudo-header, for Endace DAG cards;
790511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * encapsulates Endace ERF records.  Requested by Stephen Donnelly
791511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * <stephen@endace.com>.
792511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall */
793511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall#define DLT_ERF			197
794511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall
795511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall/*
796511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * Special header prepended to Ethernet packets when capturing from a
797511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * u10 Networks board.  Requested by Phil Mulholland
798511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * <phil@u10networks.com>.
799511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall */
800511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall#define DLT_RAIF1		198
801511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall
802511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall/*
803511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * IPMB packet for IPMI, beginning with the I2C slave address, followed
804511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * by the netFn and LUN, etc..  Requested by Chanthy Toeung
805511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * <chanthy.toeung@ca.kontron.com>.
806511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall */
807511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall#define DLT_IPMB		199
808511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall
809511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall/*
810511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * Juniper-private data link type, as per request from
811511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * Hannes Gredler <hannes@juniper.net>.
812511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * The DLT_ is used for capturing data on a secure tunnel interface.
813511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall */
814511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall#define DLT_JUNIPER_ST          200
815511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall
816511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall/*
817511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * Bluetooth HCI UART transport layer (part H:4), with pseudo-header
818511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * that includes direction information; requested by Paolo Abeni.
819511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall */
820511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall#define DLT_BLUETOOTH_HCI_H4_WITH_PHDR	201
821511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall
822511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall/*
823511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * AX.25 packet with a 1-byte KISS header; see
824511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall *
825511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall *	http://www.ax25.net/kiss.htm
826511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall *
827511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * as per Richard Stearn <richard@rns-stearn.demon.co.uk>.
828511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall */
829511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall#define DLT_AX25_KISS		202
830511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall
831511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall/*
832511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * LAPD packets from an ISDN channel, starting with the address field,
833511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * with no pseudo-header.
834511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * Requested by Varuna De Silva <varunax@gmail.com>.
835511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall */
836511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall#define DLT_LAPD		203
837511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall
838511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall/*
839511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * Variants of various link-layer headers, with a one-byte direction
840511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * pseudo-header prepended - zero means "received by this host",
841511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * non-zero (any non-zero value) means "sent by this host" - as per
842511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * Will Barker <w.barker@zen.co.uk>.
843511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall */
844511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall#define DLT_PPP_WITH_DIR	204	/* PPP - don't confuse with DLT_PPP_WITH_DIRECTION */
845511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall#define DLT_C_HDLC_WITH_DIR	205	/* Cisco HDLC */
846511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall#define DLT_FRELAY_WITH_DIR	206	/* Frame Relay */
847511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall#define DLT_LAPB_WITH_DIR	207	/* LAPB */
848511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall
849511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall/*
850511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * 208 is reserved for an as-yet-unspecified proprietary link-layer
851511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * type, as requested by Will Barker.
852511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall */
853511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall
854511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall/*
855511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * IPMB with a Linux-specific pseudo-header; as requested by Alexey Neyman
856511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * <avn@pigeonpoint.com>.
857511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall */
858511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall#define DLT_IPMB_LINUX		209
859511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall
860511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall/*
861511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * FlexRay automotive bus - http://www.flexray.com/ - as requested
862511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * by Hannes Kaelber <hannes.kaelber@x2e.de>.
863511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall */
864511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall#define DLT_FLEXRAY		210
865511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall
866511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall/*
867511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * Media Oriented Systems Transport (MOST) bus for multimedia
868511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * transport - http://www.mostcooperation.com/ - as requested
869511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * by Hannes Kaelber <hannes.kaelber@x2e.de>.
870511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall */
871511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall#define DLT_MOST		211
872511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall
873511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall/*
874511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * Local Interconnect Network (LIN) bus for vehicle networks -
875511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * http://www.lin-subbus.org/ - as requested by Hannes Kaelber
876511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * <hannes.kaelber@x2e.de>.
877511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall */
878511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall#define DLT_LIN			212
879511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall
880511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall/*
881511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * X2E-private data link type used for serial line capture,
882511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * as requested by Hannes Kaelber <hannes.kaelber@x2e.de>.
883511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall */
884511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall#define DLT_X2E_SERIAL		213
885511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall
886511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall/*
887511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * X2E-private data link type used for the Xoraya data logger
888511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * family, as requested by Hannes Kaelber <hannes.kaelber@x2e.de>.
889511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall */
890511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall#define DLT_X2E_XORAYA		214
891511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall
892511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall/*
893511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * IEEE 802.15.4, exactly as it appears in the spec (no padding, no
894511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * nothing), but with the PHY-level data for non-ASK PHYs (4 octets
895511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * of 0 as preamble, one octet of SFD, one octet of frame length+
896511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * reserved bit, and then the MAC-layer data, starting with the
897511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * frame control field).
898511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall *
899511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * Requested by Max Filippov <jcmvbkbc@gmail.com>.
900511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall */
901511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall#define DLT_IEEE802_15_4_NONASK_PHY	215
902511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall
903511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall/*
904511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * David Gibson <david@gibson.dropbear.id.au> requested this for
905511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * captures from the Linux kernel /dev/input/eventN devices. This
906511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * is used to communicate keystrokes and mouse movements from the
907511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * Linux kernel to display systems, such as Xorg.
908511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall */
909511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall#define DLT_LINUX_EVDEV		216
910511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall
911511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall/*
912511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * GSM Um and Abis interfaces, preceded by a "gsmtap" header.
913511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall *
914511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * Requested by Harald Welte <laforge@gnumonks.org>.
915511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall */
916511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall#define DLT_GSMTAP_UM		217
917511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall#define DLT_GSMTAP_ABIS		218
918511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall
919511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall/*
920511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * MPLS, with an MPLS label as the link-layer header.
921511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * Requested by Michele Marchetto <michele@openbsd.org> on behalf
922511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * of OpenBSD.
923511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall */
924511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall#define DLT_MPLS		219
925511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall
926511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall/*
927511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * USB packets, beginning with a Linux USB header, with the USB header
928511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * padded to 64 bytes; required for memory-mapped access.
929511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall */
930511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall#define DLT_USB_LINUX_MMAPPED	220
931511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall
932511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall/*
933511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * DECT packets, with a pseudo-header; requested by
934511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * Matthias Wenzel <tcpdump@mazzoo.de>.
935511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall */
936511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall#define DLT_DECT		221
937511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall
938511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall/*
939511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * From: "Lidwa, Eric (GSFC-582.0)[SGT INC]" <eric.lidwa-1@nasa.gov>
940511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * Date: Mon, 11 May 2009 11:18:30 -0500
941511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall *
942511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * DLT_AOS. We need it for AOS Space Data Link Protocol.
943511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall *   I have already written dissectors for but need an OK from
944511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall *   legal before I can submit a patch.
945511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall *
946511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall */
947511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall#define DLT_AOS                 222
948511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall
949511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall/*
950511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * Wireless HART (Highway Addressable Remote Transducer)
951511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * From the HART Communication Foundation
952511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * IES/PAS 62591
953511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall *
954511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * Requested by Sam Roberts <vieuxtech@gmail.com>.
955511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall */
956511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall#define DLT_WIHART		223
957511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall
958511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall/*
959511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * Fibre Channel FC-2 frames, beginning with a Frame_Header.
960511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * Requested by Kahou Lei <kahou82@gmail.com>.
961511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall */
962511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall#define DLT_FC_2		224
963511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall
964511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall/*
965511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * Fibre Channel FC-2 frames, beginning with an encoding of the
966511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * SOF, and ending with an encoding of the EOF.
967511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall *
968511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * The encodings represent the frame delimiters as 4-byte sequences
969511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * representing the corresponding ordered sets, with K28.5
970511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * represented as 0xBC, and the D symbols as the corresponding
971511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * byte values; for example, SOFi2, which is K28.5 - D21.5 - D1.2 - D21.2,
972511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * is represented as 0xBC 0xB5 0x55 0x55.
973511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall *
974511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * Requested by Kahou Lei <kahou82@gmail.com>.
975511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall */
976511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall#define DLT_FC_2_WITH_FRAME_DELIMS	225
977511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall
978511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall/*
979511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * Solaris ipnet pseudo-header; requested by Darren Reed <Darren.Reed@Sun.COM>.
980511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall *
981511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * The pseudo-header starts with a one-byte version number; for version 2,
982511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * the pseudo-header is:
983511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall *
984511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * struct dl_ipnetinfo {
985511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall *     u_int8_t   dli_version;
986511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall *     u_int8_t   dli_family;
987511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall *     u_int16_t  dli_htype;
988511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall *     u_int32_t  dli_pktlen;
989511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall *     u_int32_t  dli_ifindex;
990511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall *     u_int32_t  dli_grifindex;
991511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall *     u_int32_t  dli_zsrc;
992511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall *     u_int32_t  dli_zdst;
993511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * };
994511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall *
995511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * dli_version is 2 for the current version of the pseudo-header.
996511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall *
997511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * dli_family is a Solaris address family value, so it's 2 for IPv4
998511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * and 26 for IPv6.
999511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall *
1000511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * dli_htype is a "hook type" - 0 for incoming packets, 1 for outgoing
1001511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * packets, and 2 for packets arriving from another zone on the same
1002511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * machine.
1003511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall *
1004511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * dli_pktlen is the length of the packet data following the pseudo-header
1005511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * (so the captured length minus dli_pktlen is the length of the
1006511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * pseudo-header, assuming the entire pseudo-header was captured).
1007511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall *
1008511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * dli_ifindex is the interface index of the interface on which the
1009511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * packet arrived.
1010511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall *
1011511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * dli_grifindex is the group interface index number (for IPMP interfaces).
1012511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall *
1013511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * dli_zsrc is the zone identifier for the source of the packet.
1014511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall *
1015511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * dli_zdst is the zone identifier for the destination of the packet.
1016511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall *
1017511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * A zone number of 0 is the global zone; a zone number of 0xffffffff
1018511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * means that the packet arrived from another host on the network, not
1019511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * from another zone on the same machine.
1020511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall *
1021511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * An IPv4 or IPv6 datagram follows the pseudo-header; dli_family indicates
1022511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * which of those it is.
1023511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall */
1024511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall#define DLT_IPNET		226
1025511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall
1026511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall/*
1027511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * CAN (Controller Area Network) frames, with a pseudo-header as supplied
1028511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * by Linux SocketCAN.  See Documentation/networking/can.txt in the Linux
1029511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * source.
1030511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall *
1031511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * Requested by Felix Obenhuber <felix@obenhuber.de>.
1032511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall */
1033511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall#define DLT_CAN_SOCKETCAN	227
1034511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall
1035511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall/*
1036511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * Raw IPv4/IPv6; different from DLT_RAW in that the DLT_ value specifies
1037511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * whether it's v4 or v6.  Requested by Darren Reed <Darren.Reed@Sun.COM>.
1038511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall */
1039511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall#define DLT_IPV4		228
1040511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall#define DLT_IPV6		229
1041511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall
1042511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall/*
1043511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * IEEE 802.15.4, exactly as it appears in the spec (no padding, no
1044511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * nothing), and with no FCS at the end of the frame; requested by
1045511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * Jon Smirl <jonsmirl@gmail.com>.
1046511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall */
1047511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall#define DLT_IEEE802_15_4_NOFCS	230
1048511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall
1049511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall/*
1050511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * Raw D-Bus:
1051511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall *
1052511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall *	http://www.freedesktop.org/wiki/Software/dbus
1053511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall *
1054511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * messages:
1055511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall *
1056511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall *	http://dbus.freedesktop.org/doc/dbus-specification.html#message-protocol-messages
1057511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall *
1058511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * starting with the endianness flag, followed by the message type, etc.,
1059511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * but without the authentication handshake before the message sequence:
1060511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall *
1061511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall *	http://dbus.freedesktop.org/doc/dbus-specification.html#auth-protocol
1062511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall *
1063511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * Requested by Martin Vidner <martin@vidner.net>.
1064511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall */
1065511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall#define DLT_DBUS		231
1066511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall
1067511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall/*
1068511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * Juniper-private data link type, as per request from
1069511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * Hannes Gredler <hannes@juniper.net>.
1070511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall */
1071511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall#define DLT_JUNIPER_VS			232
1072511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall#define DLT_JUNIPER_SRX_E2E		233
1073511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall#define DLT_JUNIPER_FIBRECHANNEL	234
1074511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall
1075511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall/*
1076511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * DVB-CI (DVB Common Interface for communication between a PC Card
1077511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * module and a DVB receiver).  See
1078511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall *
1079511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall *	http://www.kaiser.cx/pcap-dvbci.html
1080511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall *
1081511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * for the specification.
1082511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall *
1083511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * Requested by Martin Kaiser <martin@kaiser.cx>.
1084511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall */
1085511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall#define DLT_DVB_CI		235
1086511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall
1087511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall/*
1088511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * Variant of 3GPP TS 27.010 multiplexing protocol (similar to, but
1089511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * *not* the same as, 27.010).  Requested by Hans-Christoph Schemmel
1090511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * <hans-christoph.schemmel@cinterion.com>.
1091511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall */
1092511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall#define DLT_MUX27010		236
1093511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall
1094511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall/*
1095511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * STANAG 5066 D_PDUs.  Requested by M. Baris Demiray
1096511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * <barisdemiray@gmail.com>.
1097511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall */
1098511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall#define DLT_STANAG_5066_D_PDU	237
1099511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall
1100511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall/*
1101511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * Juniper-private data link type, as per request from
1102511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * Hannes Gredler <hannes@juniper.net>.
1103511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall */
1104511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall#define DLT_JUNIPER_ATM_CEMIC	238
1105511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall
1106511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall/*
1107511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * NetFilter LOG messages
1108511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * (payload of netlink NFNL_SUBSYS_ULOG/NFULNL_MSG_PACKET packets)
1109511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall *
1110511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * Requested by Jakub Zawadzki <darkjames-ws@darkjames.pl>
1111511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall */
1112511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall#define DLT_NFLOG		239
1113511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall
1114511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall/*
1115511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * Hilscher Gesellschaft fuer Systemautomation mbH link-layer type
1116511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * for Ethernet packets with a 4-byte pseudo-header and always
1117511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * with the payload including the FCS, as supplied by their
1118511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * netANALYZER hardware and software.
1119511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall *
1120511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * Requested by Holger P. Frommer <HPfrommer@hilscher.com>
1121511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall */
1122511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall#define DLT_NETANALYZER		240
1123511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall
1124511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall/*
1125511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * Hilscher Gesellschaft fuer Systemautomation mbH link-layer type
1126511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * for Ethernet packets with a 4-byte pseudo-header and FCS and
1127511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * with the Ethernet header preceded by 7 bytes of preamble and
1128511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * 1 byte of SFD, as supplied by their netANALYZER hardware and
1129511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * software.
1130511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall *
1131511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * Requested by Holger P. Frommer <HPfrommer@hilscher.com>
1132511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall */
1133511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall#define DLT_NETANALYZER_TRANSPARENT	241
1134511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall
1135511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall/*
1136511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * IP-over-InfiniBand, as specified by RFC 4391.
1137511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall *
1138511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * Requested by Petr Sumbera <petr.sumbera@oracle.com>.
1139511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall */
1140511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall#define DLT_IPOIB		242
1141511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall
1142511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall/*
1143511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * MPEG-2 transport stream (ISO 13818-1/ITU-T H.222.0).
1144511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall *
1145511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * Requested by Guy Martin <gmsoft@tuxicoman.be>.
1146511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall */
1147511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall#define DLT_MPEG_2_TS		243
1148511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall
1149511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall/*
1150511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * ng4T GmbH's UMTS Iub/Iur-over-ATM and Iub/Iur-over-IP format as
1151511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * used by their ng40 protocol tester.
1152511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall *
1153511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * Requested by Jens Grimmer <jens.grimmer@ng4t.com>.
1154511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall */
1155511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall#define DLT_NG40		244
1156511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall
1157511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall/*
1158511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * Pseudo-header giving adapter number and flags, followed by an NFC
1159511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * (Near-Field Communications) Logical Link Control Protocol (LLCP) PDU,
1160511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * as specified by NFC Forum Logical Link Control Protocol Technical
1161511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * Specification LLCP 1.1.
1162511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall *
1163511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * Requested by Mike Wakerly <mikey@google.com>.
1164511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall */
1165511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall#define DLT_NFC_LLCP		245
1166511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall
1167511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall/*
1168511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * 245 is used as LINKTYPE_PFSYNC; do not use it for any other purpose.
1169511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall *
1170511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * DLT_PFSYNC has different values on different platforms, and all of
1171511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * them collide with something used elsewhere.  On platforms that
1172511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * don't already define it, define it as 245.
1173511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall */
1174511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall#if !defined(__FreeBSD__) && !defined(__OpenBSD__) && !defined(__NetBSD__) && !defined(__DragonFly__) && !defined(__APPLE__)
1175511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall#define DLT_PFSYNC		246
1176511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall#endif
1177511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall
1178511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall/*
1179511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * Raw InfiniBand packets, starting with the Local Routing Header.
1180511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall *
1181511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * Requested by Oren Kladnitsky <orenk@mellanox.com>.
1182511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall */
1183511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall#define DLT_INFINIBAND		247
1184511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall
1185511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall/*
1186511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * SCTP, with no lower-level protocols (i.e., no IPv4 or IPv6).
1187511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall *
1188511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * Requested by Michael Tuexen <Michael.Tuexen@lurchi.franken.de>.
1189511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall */
1190511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall#define DLT_SCTP		248
1191511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall
1192511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall/*
1193511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * USB packets, beginning with a USBPcap header.
1194511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall *
1195511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * Requested by Tomasz Mon <desowin@gmail.com>
1196511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall */
1197511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall#define DLT_USBPCAP		249
1198511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall
1199511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall/*
1200511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * Schweitzer Engineering Laboratories "RTAC" product serial-line
1201511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * packets.
1202511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall *
1203511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * Requested by Chris Bontje <chris_bontje@selinc.com>.
1204511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall */
1205511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall#define DLT_RTAC_SERIAL		250
1206511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall
1207511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall/*
1208511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * Bluetooth Low Energy air interface link-layer packets.
1209511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall *
1210511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * Requested by Mike Kershaw <dragorn@kismetwireless.net>.
1211511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall */
1212511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall#define DLT_BLUETOOTH_LE_LL	251
1213511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall
1214511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall/*
1215511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * DLT type for upper-protocol layer PDU saves from wireshark.
1216511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall *
1217511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * the actual contents are determined by two TAGs stored with each
1218511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * packet:
1219511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall *   EXP_PDU_TAG_LINKTYPE          the link type (LINKTYPE_ value) of the
1220511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall *				   original packet.
1221511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall *
1222511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall *   EXP_PDU_TAG_PROTO_NAME        the name of the wireshark dissector
1223511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * 				   that can make sense of the data stored.
1224511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall */
1225511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall#define DLT_WIRESHARK_UPPER_PDU	252
1226511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall
1227511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall#define DLT_MATCHING_MAX	252	/* highest value in the "matching" range */
1228511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall
1229511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall/*
1230511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * DLT and savefile link type values are split into a class and
1231511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * a member of that class.  A class value of 0 indicates a regular
1232511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * DLT_/LINKTYPE_ value.
1233511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall */
1234511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall#define DLT_CLASS(x)		((x) & 0x03ff0000)
1235511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall
1236511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall/*
1237511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * NetBSD-specific generic "raw" link type.  The class value indicates
1238511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * that this is the generic raw type, and the lower 16 bits are the
1239511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * address family we're dealing with.  Those values are NetBSD-specific;
1240511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * do not assume that they correspond to AF_ values for your operating
1241511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * system.
1242511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall */
1243511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall#define	DLT_CLASS_NETBSD_RAWAF	0x02240000
1244511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall#define	DLT_NETBSD_RAWAF(af)	(DLT_CLASS_NETBSD_RAWAF | (af))
1245511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall#define	DLT_NETBSD_RAWAF_AF(x)	((x) & 0x0000ffff)
1246511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall#define	DLT_IS_NETBSD_RAWAF(x)	(DLT_CLASS(x) == DLT_CLASS_NETBSD_RAWAF)
1247511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall
1248511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall
1249511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall/*
1250511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * The instruction encodings.
1251511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall */
1252511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall/* instruction classes */
1253511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall#define BPF_CLASS(code) ((code) & 0x07)
1254511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall#define		BPF_LD		0x00
1255511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall#define		BPF_LDX		0x01
1256511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall#define		BPF_ST		0x02
1257511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall#define		BPF_STX		0x03
1258511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall#define		BPF_ALU		0x04
1259511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall#define		BPF_JMP		0x05
1260511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall#define		BPF_RET		0x06
1261511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall#define		BPF_MISC	0x07
1262511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall
1263511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall/* ld/ldx fields */
1264511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall#define BPF_SIZE(code)	((code) & 0x18)
1265511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall#define		BPF_W		0x00
1266511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall#define		BPF_H		0x08
1267511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall#define		BPF_B		0x10
1268511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall#define BPF_MODE(code)	((code) & 0xe0)
1269511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall#define		BPF_IMM 	0x00
1270511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall#define		BPF_ABS		0x20
1271511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall#define		BPF_IND		0x40
1272511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall#define		BPF_MEM		0x60
1273511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall#define		BPF_LEN		0x80
1274511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall#define		BPF_MSH		0xa0
1275511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall
1276511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall/* alu/jmp fields */
1277511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall#define BPF_OP(code)	((code) & 0xf0)
1278511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall#define		BPF_ADD		0x00
1279511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall#define		BPF_SUB		0x10
1280511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall#define		BPF_MUL		0x20
1281511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall#define		BPF_DIV		0x30
1282511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall#define		BPF_OR		0x40
1283511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall#define		BPF_AND		0x50
1284511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall#define		BPF_LSH		0x60
1285511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall#define		BPF_RSH		0x70
1286511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall#define		BPF_NEG		0x80
1287511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall#define		BPF_JA		0x00
1288511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall#define		BPF_JEQ		0x10
1289511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall#define		BPF_JGT		0x20
1290511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall#define		BPF_JGE		0x30
1291511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall#define		BPF_JSET	0x40
1292511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall#define BPF_SRC(code)	((code) & 0x08)
1293511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall#define		BPF_K		0x00
1294511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall#define		BPF_X		0x08
1295511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall
1296511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall/* ret - BPF_K and BPF_X also apply */
1297511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall#define BPF_RVAL(code)	((code) & 0x18)
1298511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall#define		BPF_A		0x10
1299511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall
1300511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall/* misc */
1301511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall#define BPF_MISCOP(code) ((code) & 0xf8)
1302511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall#define		BPF_TAX		0x00
1303511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall#define		BPF_TXA		0x80
1304511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall
1305511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall/*
1306511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * The instruction data structure.
1307511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall */
1308511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrallstruct bpf_insn {
1309511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall	u_short	code;
1310511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall	u_char 	jt;
1311511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall	u_char 	jf;
1312511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall	bpf_u_int32 k;
1313511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall};
1314511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall
1315511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall/*
1316511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * Macros for insn array initializers.
1317511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall */
1318511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall#define BPF_STMT(code, k) { (u_short)(code), 0, 0, k }
1319511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall#define BPF_JUMP(code, k, jt, jf) { (u_short)(code), jt, jf, k }
1320511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall
1321511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall#if __STDC__ || defined(__cplusplus)
1322511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrallextern int bpf_validate(const struct bpf_insn *, int);
1323511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrallextern u_int bpf_filter(const struct bpf_insn *, const u_char *, u_int, u_int);
1324511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall#else
1325511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrallextern int bpf_validate();
1326511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrallextern u_int bpf_filter();
1327511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall#endif
1328511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall
1329511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall/*
1330511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * Number of scratch memory words (for BPF_LD|BPF_MEM and BPF_ST).
1331511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall */
1332511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall#define BPF_MEMWORDS 16
1333511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall
1334511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall#ifdef __cplusplus
1335511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall}
1336511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall#endif
1337511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall
1338511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall#endif /* !defined(_NET_BPF_H_) && !defined(_BPF_H_) && !defined(_H_BPF) && !defined(lib_pcap_bpf_h) */
1339