1*aca3beaaSApple OSS Distributions /* 2*aca3beaaSApple OSS Distributions * Copyright (c) 2000-2022 Apple Inc. All rights reserved. 3*aca3beaaSApple OSS Distributions * 4*aca3beaaSApple OSS Distributions * @APPLE_OSREFERENCE_LICENSE_HEADER_START@ 5*aca3beaaSApple OSS Distributions * 6*aca3beaaSApple OSS Distributions * This file contains Original Code and/or Modifications of Original Code 7*aca3beaaSApple OSS Distributions * as defined in and that are subject to the Apple Public Source License 8*aca3beaaSApple OSS Distributions * Version 2.0 (the 'License'). You may not use this file except in 9*aca3beaaSApple OSS Distributions * compliance with the License. The rights granted to you under the License 10*aca3beaaSApple OSS Distributions * may not be used to create, or enable the creation or redistribution of, 11*aca3beaaSApple OSS Distributions * unlawful or unlicensed copies of an Apple operating system, or to 12*aca3beaaSApple OSS Distributions * circumvent, violate, or enable the circumvention or violation of, any 13*aca3beaaSApple OSS Distributions * terms of an Apple operating system software license agreement. 14*aca3beaaSApple OSS Distributions * 15*aca3beaaSApple OSS Distributions * Please obtain a copy of the License at 16*aca3beaaSApple OSS Distributions * http://www.opensource.apple.com/apsl/ and read it before using this file. 17*aca3beaaSApple OSS Distributions * 18*aca3beaaSApple OSS Distributions * The Original Code and all software distributed under the License are 19*aca3beaaSApple OSS Distributions * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER 20*aca3beaaSApple OSS Distributions * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES, 21*aca3beaaSApple OSS Distributions * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY, 22*aca3beaaSApple OSS Distributions * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT. 23*aca3beaaSApple OSS Distributions * Please see the License for the specific language governing rights and 24*aca3beaaSApple OSS Distributions * limitations under the License. 25*aca3beaaSApple OSS Distributions * 26*aca3beaaSApple OSS Distributions * @APPLE_OSREFERENCE_LICENSE_HEADER_END@ 27*aca3beaaSApple OSS Distributions */ 28*aca3beaaSApple OSS Distributions /* 29*aca3beaaSApple OSS Distributions * Copyright (c) 1990, 1991, 1993 30*aca3beaaSApple OSS Distributions * The Regents of the University of California. All rights reserved. 31*aca3beaaSApple OSS Distributions * 32*aca3beaaSApple OSS Distributions * This code is derived from the Stanford/CMU enet packet filter, 33*aca3beaaSApple OSS Distributions * (net/enet.c) distributed as part of 4.3BSD, and code contributed 34*aca3beaaSApple OSS Distributions * to Berkeley by Steven McCanne and Van Jacobson both of Lawrence 35*aca3beaaSApple OSS Distributions * Berkeley Laboratory. 36*aca3beaaSApple OSS Distributions * 37*aca3beaaSApple OSS Distributions * Redistribution and use in source and binary forms, with or without 38*aca3beaaSApple OSS Distributions * modification, are permitted provided that the following conditions 39*aca3beaaSApple OSS Distributions * are met: 40*aca3beaaSApple OSS Distributions * 1. Redistributions of source code must retain the above copyright 41*aca3beaaSApple OSS Distributions * notice, this list of conditions and the following disclaimer. 42*aca3beaaSApple OSS Distributions * 2. Redistributions in binary form must reproduce the above copyright 43*aca3beaaSApple OSS Distributions * notice, this list of conditions and the following disclaimer in the 44*aca3beaaSApple OSS Distributions * documentation and/or other materials provided with the distribution. 45*aca3beaaSApple OSS Distributions * 3. All advertising materials mentioning features or use of this software 46*aca3beaaSApple OSS Distributions * must display the following acknowledgement: 47*aca3beaaSApple OSS Distributions * This product includes software developed by the University of 48*aca3beaaSApple OSS Distributions * California, Berkeley and its contributors. 49*aca3beaaSApple OSS Distributions * 4. Neither the name of the University nor the names of its contributors 50*aca3beaaSApple OSS Distributions * may be used to endorse or promote products derived from this software 51*aca3beaaSApple OSS Distributions * without specific prior written permission. 52*aca3beaaSApple OSS Distributions * 53*aca3beaaSApple OSS Distributions * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND 54*aca3beaaSApple OSS Distributions * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 55*aca3beaaSApple OSS Distributions * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 56*aca3beaaSApple OSS Distributions * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE 57*aca3beaaSApple OSS Distributions * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 58*aca3beaaSApple OSS Distributions * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 59*aca3beaaSApple OSS Distributions * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 60*aca3beaaSApple OSS Distributions * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 61*aca3beaaSApple OSS Distributions * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 62*aca3beaaSApple OSS Distributions * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 63*aca3beaaSApple OSS Distributions * SUCH DAMAGE. 64*aca3beaaSApple OSS Distributions * 65*aca3beaaSApple OSS Distributions * @(#)bpf.h 8.1 (Berkeley) 6/10/93 66*aca3beaaSApple OSS Distributions * @(#)bpf.h 1.34 (LBL) 6/16/96 67*aca3beaaSApple OSS Distributions * 68*aca3beaaSApple OSS Distributions * $FreeBSD: src/sys/net/bpf.h,v 1.21.2.3 2001/08/01 00:23:13 fenner Exp $ 69*aca3beaaSApple OSS Distributions */ 70*aca3beaaSApple OSS Distributions /* 71*aca3beaaSApple OSS Distributions * NOTICE: This file was modified by SPARTA, Inc. in 2006 to introduce 72*aca3beaaSApple OSS Distributions * support for mandatory and extensible security protections. This notice 73*aca3beaaSApple OSS Distributions * is included in support of clause 2.2 (b) of the Apple Public License, 74*aca3beaaSApple OSS Distributions * Version 2.0. 75*aca3beaaSApple OSS Distributions */ 76*aca3beaaSApple OSS Distributions 77*aca3beaaSApple OSS Distributions #ifndef _NET_BPF_H_ 78*aca3beaaSApple OSS Distributions #define _NET_BPF_H_ 79*aca3beaaSApple OSS Distributions 80*aca3beaaSApple OSS Distributions #include <stdint.h> 81*aca3beaaSApple OSS Distributions 82*aca3beaaSApple OSS Distributions #if !defined(DRIVERKIT) 83*aca3beaaSApple OSS Distributions #include <sys/param.h> 84*aca3beaaSApple OSS Distributions #include <sys/appleapiopts.h> 85*aca3beaaSApple OSS Distributions #include <sys/types.h> 86*aca3beaaSApple OSS Distributions #include <sys/time.h> 87*aca3beaaSApple OSS Distributions #include <sys/cdefs.h> 88*aca3beaaSApple OSS Distributions 89*aca3beaaSApple OSS Distributions #ifdef PRIVATE 90*aca3beaaSApple OSS Distributions #include <net/if_var.h> 91*aca3beaaSApple OSS Distributions #include <uuid/uuid.h> 92*aca3beaaSApple OSS Distributions 93*aca3beaaSApple OSS Distributions struct bpf_setup_args { 94*aca3beaaSApple OSS Distributions uuid_t bsa_uuid; 95*aca3beaaSApple OSS Distributions char bsa_ifname[IFNAMSIZ]; 96*aca3beaaSApple OSS Distributions }; 97*aca3beaaSApple OSS Distributions #endif /* PRIVATE */ 98*aca3beaaSApple OSS Distributions 99*aca3beaaSApple OSS Distributions #ifdef KERNEL 100*aca3beaaSApple OSS Distributions #include <sys/kernel_types.h> 101*aca3beaaSApple OSS Distributions 102*aca3beaaSApple OSS Distributions #if !defined(__i386__) && !defined(__x86_64__) 103*aca3beaaSApple OSS Distributions #define BPF_ALIGN 1 104*aca3beaaSApple OSS Distributions #else /* defined(__i386__) || defined(__x86_64__) */ 105*aca3beaaSApple OSS Distributions #define BPF_ALIGN 0 106*aca3beaaSApple OSS Distributions #endif /* defined(__i386__) || defined(__x86_64__) */ 107*aca3beaaSApple OSS Distributions 108*aca3beaaSApple OSS Distributions #if !BPF_ALIGN 109*aca3beaaSApple OSS Distributions #define EXTRACT_SHORT(p) ((u_int16_t)ntohs(*(u_int16_t *)(void *)p)) 110*aca3beaaSApple OSS Distributions #define EXTRACT_LONG(p) (ntohl(*(u_int32_t *)(void *)p)) 111*aca3beaaSApple OSS Distributions #else 112*aca3beaaSApple OSS Distributions #define EXTRACT_SHORT(p) \ 113*aca3beaaSApple OSS Distributions ((u_int16_t)\ 114*aca3beaaSApple OSS Distributions ((u_int16_t)*((u_char *)p+0)<<8|\ 115*aca3beaaSApple OSS Distributions (u_int16_t)*((u_char *)p+1)<<0)) 116*aca3beaaSApple OSS Distributions #define EXTRACT_LONG(p) \ 117*aca3beaaSApple OSS Distributions ((u_int32_t)*((u_char *)p+0)<<24|\ 118*aca3beaaSApple OSS Distributions (u_int32_t)*((u_char *)p+1)<<16|\ 119*aca3beaaSApple OSS Distributions (u_int32_t)*((u_char *)p+2)<<8|\ 120*aca3beaaSApple OSS Distributions (u_int32_t)*((u_char *)p+3)<<0) 121*aca3beaaSApple OSS Distributions #endif 122*aca3beaaSApple OSS Distributions 123*aca3beaaSApple OSS Distributions #endif /* KERNEL */ 124*aca3beaaSApple OSS Distributions 125*aca3beaaSApple OSS Distributions /* BSD style release date */ 126*aca3beaaSApple OSS Distributions #define BPF_RELEASE 199606 127*aca3beaaSApple OSS Distributions 128*aca3beaaSApple OSS Distributions typedef int32_t bpf_int32; 129*aca3beaaSApple OSS Distributions typedef u_int32_t bpf_u_int32; 130*aca3beaaSApple OSS Distributions 131*aca3beaaSApple OSS Distributions /* 132*aca3beaaSApple OSS Distributions * Alignment macros. BPF_WORDALIGN rounds up to the next 133*aca3beaaSApple OSS Distributions * even multiple of BPF_ALIGNMENT. 134*aca3beaaSApple OSS Distributions */ 135*aca3beaaSApple OSS Distributions #define BPF_ALIGNMENT sizeof(int32_t) 136*aca3beaaSApple OSS Distributions #define BPF_WORDALIGN(x) (((x)+(BPF_ALIGNMENT-1))&~(BPF_ALIGNMENT-1)) 137*aca3beaaSApple OSS Distributions 138*aca3beaaSApple OSS Distributions #define BPF_MAXINSNS 512 139*aca3beaaSApple OSS Distributions #define BPF_MAXBUFSIZE 0x80000 140*aca3beaaSApple OSS Distributions #define BPF_MINBUFSIZE 32 141*aca3beaaSApple OSS Distributions 142*aca3beaaSApple OSS Distributions /* 143*aca3beaaSApple OSS Distributions * Structure for BIOCSETF. 144*aca3beaaSApple OSS Distributions */ 145*aca3beaaSApple OSS Distributions struct bpf_program { 146*aca3beaaSApple OSS Distributions u_int bf_len; 147*aca3beaaSApple OSS Distributions struct bpf_insn *bf_insns; 148*aca3beaaSApple OSS Distributions }; 149*aca3beaaSApple OSS Distributions 150*aca3beaaSApple OSS Distributions #ifdef KERNEL_PRIVATE 151*aca3beaaSApple OSS Distributions /* 152*aca3beaaSApple OSS Distributions * LP64 version of bpf_program. all pointers 153*aca3beaaSApple OSS Distributions * grow when we're dealing with a 64-bit process. 154*aca3beaaSApple OSS Distributions * WARNING - keep in sync with bpf_program 155*aca3beaaSApple OSS Distributions */ 156*aca3beaaSApple OSS Distributions struct bpf_program64 { 157*aca3beaaSApple OSS Distributions u_int bf_len; 158*aca3beaaSApple OSS Distributions user64_addr_t bf_insns __attribute__((aligned(8))); 159*aca3beaaSApple OSS Distributions }; 160*aca3beaaSApple OSS Distributions 161*aca3beaaSApple OSS Distributions struct bpf_program32 { 162*aca3beaaSApple OSS Distributions u_int bf_len; 163*aca3beaaSApple OSS Distributions user32_addr_t bf_insns; 164*aca3beaaSApple OSS Distributions }; 165*aca3beaaSApple OSS Distributions #endif /* KERNEL_PRIVATE */ 166*aca3beaaSApple OSS Distributions 167*aca3beaaSApple OSS Distributions /* 168*aca3beaaSApple OSS Distributions * Struct returned by BIOCGSTATS. 169*aca3beaaSApple OSS Distributions */ 170*aca3beaaSApple OSS Distributions struct bpf_stat { 171*aca3beaaSApple OSS Distributions u_int bs_recv; /* number of packets received */ 172*aca3beaaSApple OSS Distributions u_int bs_drop; /* number of packets dropped */ 173*aca3beaaSApple OSS Distributions }; 174*aca3beaaSApple OSS Distributions 175*aca3beaaSApple OSS Distributions /* 176*aca3beaaSApple OSS Distributions * Struct return by BIOCVERSION. This represents the version number of 177*aca3beaaSApple OSS Distributions * the filter language described by the instruction encodings below. 178*aca3beaaSApple OSS Distributions * bpf understands a program iff kernel_major == filter_major && 179*aca3beaaSApple OSS Distributions * kernel_minor >= filter_minor, that is, if the value returned by the 180*aca3beaaSApple OSS Distributions * running kernel has the same major number and a minor number equal 181*aca3beaaSApple OSS Distributions * equal to or less than the filter being downloaded. Otherwise, the 182*aca3beaaSApple OSS Distributions * results are undefined, meaning an error may be returned or packets 183*aca3beaaSApple OSS Distributions * may be accepted haphazardly. 184*aca3beaaSApple OSS Distributions * It has nothing to do with the source code version. 185*aca3beaaSApple OSS Distributions */ 186*aca3beaaSApple OSS Distributions struct bpf_version { 187*aca3beaaSApple OSS Distributions u_short bv_major; 188*aca3beaaSApple OSS Distributions u_short bv_minor; 189*aca3beaaSApple OSS Distributions }; 190*aca3beaaSApple OSS Distributions 191*aca3beaaSApple OSS Distributions #ifdef PRIVATE 192*aca3beaaSApple OSS Distributions struct bpf_comp_stats { 193*aca3beaaSApple OSS Distributions uint64_t bcs_total_read; /* number of packets read from device */ 194*aca3beaaSApple OSS Distributions uint64_t bcs_total_size; /* total size of filtered packets */ 195*aca3beaaSApple OSS Distributions uint64_t bcs_total_hdr_size; /* total header size of captured packets */ 196*aca3beaaSApple OSS Distributions uint64_t bcs_count_no_common_prefix; /* count of packets not compressible */ 197*aca3beaaSApple OSS Distributions uint64_t bcs_count_compressed_prefix; /* count of compressed packets */ 198*aca3beaaSApple OSS Distributions uint64_t bcs_total_compressed_prefix_size; /* total size of compressed data */ 199*aca3beaaSApple OSS Distributions uint64_t bcs_max_compressed_prefix_size; /* max compressed data size */ 200*aca3beaaSApple OSS Distributions }; 201*aca3beaaSApple OSS Distributions #endif /* PRIVATE */ 202*aca3beaaSApple OSS Distributions 203*aca3beaaSApple OSS Distributions #if defined(__LP64__) 204*aca3beaaSApple OSS Distributions #include <sys/_types/_timeval32.h> 205*aca3beaaSApple OSS Distributions 206*aca3beaaSApple OSS Distributions #define BPF_TIMEVAL timeval32 207*aca3beaaSApple OSS Distributions #else 208*aca3beaaSApple OSS Distributions #define BPF_TIMEVAL timeval 209*aca3beaaSApple OSS Distributions #endif /* __LP64__ */ 210*aca3beaaSApple OSS Distributions /* Current version number of filter architecture. */ 211*aca3beaaSApple OSS Distributions #define BPF_MAJOR_VERSION 1 212*aca3beaaSApple OSS Distributions #define BPF_MINOR_VERSION 1 213*aca3beaaSApple OSS Distributions 214*aca3beaaSApple OSS Distributions #define BIOCGBLEN _IOR('B',102, u_int) 215*aca3beaaSApple OSS Distributions #define BIOCSBLEN _IOWR('B',102, u_int) 216*aca3beaaSApple OSS Distributions #define BIOCSETF _IOW('B',103, struct bpf_program) 217*aca3beaaSApple OSS Distributions #ifdef KERNEL_PRIVATE 218*aca3beaaSApple OSS Distributions #define BIOCSETF64 _IOW('B',103, struct bpf_program64) 219*aca3beaaSApple OSS Distributions #define BIOCSETF32 _IOW('B',103, struct bpf_program32) 220*aca3beaaSApple OSS Distributions #endif /* KERNEL_PRIVATE */ 221*aca3beaaSApple OSS Distributions #define BIOCFLUSH _IO('B',104) 222*aca3beaaSApple OSS Distributions #define BIOCPROMISC _IO('B',105) 223*aca3beaaSApple OSS Distributions #define BIOCGDLT _IOR('B',106, u_int) 224*aca3beaaSApple OSS Distributions #define BIOCGETIF _IOR('B',107, struct ifreq) 225*aca3beaaSApple OSS Distributions #define BIOCSETIF _IOW('B',108, struct ifreq) 226*aca3beaaSApple OSS Distributions #define BIOCSRTIMEOUT _IOW('B',109, struct timeval) 227*aca3beaaSApple OSS Distributions #ifdef KERNEL_PRIVATE 228*aca3beaaSApple OSS Distributions #define BIOCSRTIMEOUT64 _IOW('B',109, struct user64_timeval) 229*aca3beaaSApple OSS Distributions #define BIOCSRTIMEOUT32 _IOW('B',109, struct user32_timeval) 230*aca3beaaSApple OSS Distributions #endif /* KERNEL_PRIVATE */ 231*aca3beaaSApple OSS Distributions #define BIOCGRTIMEOUT _IOR('B',110, struct timeval) 232*aca3beaaSApple OSS Distributions #ifdef KERNEL_PRIVATE 233*aca3beaaSApple OSS Distributions #define BIOCGRTIMEOUT64 _IOR('B',110, struct user64_timeval) 234*aca3beaaSApple OSS Distributions #define BIOCGRTIMEOUT32 _IOR('B',110, struct user32_timeval) 235*aca3beaaSApple OSS Distributions #endif /* KERNEL_PRIVATE */ 236*aca3beaaSApple OSS Distributions #define BIOCGSTATS _IOR('B',111, struct bpf_stat) 237*aca3beaaSApple OSS Distributions #define BIOCIMMEDIATE _IOW('B',112, u_int) 238*aca3beaaSApple OSS Distributions #define BIOCVERSION _IOR('B',113, struct bpf_version) 239*aca3beaaSApple OSS Distributions #define BIOCGRSIG _IOR('B',114, u_int) 240*aca3beaaSApple OSS Distributions #define BIOCSRSIG _IOW('B',115, u_int) 241*aca3beaaSApple OSS Distributions #define BIOCGHDRCMPLT _IOR('B',116, u_int) 242*aca3beaaSApple OSS Distributions #define BIOCSHDRCMPLT _IOW('B',117, u_int) 243*aca3beaaSApple OSS Distributions #define BIOCGSEESENT _IOR('B',118, u_int) 244*aca3beaaSApple OSS Distributions #define BIOCSSEESENT _IOW('B',119, u_int) 245*aca3beaaSApple OSS Distributions #define BIOCSDLT _IOW('B',120, u_int) 246*aca3beaaSApple OSS Distributions #define BIOCGDLTLIST _IOWR('B',121, struct bpf_dltlist) 247*aca3beaaSApple OSS Distributions #ifdef PRIVATE 248*aca3beaaSApple OSS Distributions #define BIOCGETTC _IOR('B', 122, int) 249*aca3beaaSApple OSS Distributions #define BIOCSETTC _IOW('B', 123, int) 250*aca3beaaSApple OSS Distributions #define BIOCSEXTHDR _IOW('B', 124, u_int) 251*aca3beaaSApple OSS Distributions #define BIOCGIFATTACHCOUNT _IOWR('B', 125, struct ifreq) 252*aca3beaaSApple OSS Distributions #endif /* PRIVATE */ 253*aca3beaaSApple OSS Distributions #define BIOCSETFNR _IOW('B', 126, struct bpf_program) 254*aca3beaaSApple OSS Distributions #ifdef KERNEL_PRIVATE 255*aca3beaaSApple OSS Distributions #define BIOCSETFNR64 _IOW('B',126, struct bpf_program64) 256*aca3beaaSApple OSS Distributions #define BIOCSETFNR32 _IOW('B',126, struct bpf_program32) 257*aca3beaaSApple OSS Distributions #endif /* KERNEL_PRIVATE */ 258*aca3beaaSApple OSS Distributions #ifdef PRIVATE 259*aca3beaaSApple OSS Distributions #define BIOCGWANTPKTAP _IOR('B', 127, u_int) 260*aca3beaaSApple OSS Distributions #define BIOCSWANTPKTAP _IOWR('B', 127, u_int) 261*aca3beaaSApple OSS Distributions #define BIOCSHEADDROP _IOW('B', 128, int) 262*aca3beaaSApple OSS Distributions #define BIOCGHEADDROP _IOR('B', 128, int) 263*aca3beaaSApple OSS Distributions #define BIOCSTRUNCATE _IOW('B', 129, u_int) 264*aca3beaaSApple OSS Distributions #define BIOCGETUUID _IOR('B', 130, uuid_t) 265*aca3beaaSApple OSS Distributions #define BIOCSETUP _IOW('B', 131, struct bpf_setup_args) 266*aca3beaaSApple OSS Distributions #define BIOCSPKTHDRV2 _IOW('B', 132, int) 267*aca3beaaSApple OSS Distributions #define BIOCGPKTHDRV2 _IOW('B', 133, int) 268*aca3beaaSApple OSS Distributions #define BIOCGHDRCOMP _IOR('B', 134, int) 269*aca3beaaSApple OSS Distributions #define BIOCSHDRCOMP _IOW('B', 135, int) 270*aca3beaaSApple OSS Distributions #define BIOCGHDRCOMPSTATS _IOR('B', 136, struct bpf_comp_stats) 271*aca3beaaSApple OSS Distributions #define BIOCGHDRCOMPON _IOR('B', 137, int) 272*aca3beaaSApple OSS Distributions #endif /* PRIVATE */ 273*aca3beaaSApple OSS Distributions /* 274*aca3beaaSApple OSS Distributions * Structure prepended to each packet. 275*aca3beaaSApple OSS Distributions */ 276*aca3beaaSApple OSS Distributions struct bpf_hdr { 277*aca3beaaSApple OSS Distributions struct BPF_TIMEVAL bh_tstamp; /* time stamp */ 278*aca3beaaSApple OSS Distributions bpf_u_int32 bh_caplen; /* length of captured portion */ 279*aca3beaaSApple OSS Distributions bpf_u_int32 bh_datalen; /* original length of packet */ 280*aca3beaaSApple OSS Distributions u_short bh_hdrlen; /* length of bpf header (this struct 281*aca3beaaSApple OSS Distributions * plus alignment padding) */ 282*aca3beaaSApple OSS Distributions }; 283*aca3beaaSApple OSS Distributions #ifdef KERNEL 284*aca3beaaSApple OSS Distributions /* 285*aca3beaaSApple OSS Distributions * Because the structure above is not a multiple of 4 bytes, some compilers 286*aca3beaaSApple OSS Distributions * will insist on inserting padding; hence, sizeof(struct bpf_hdr) won't work. 287*aca3beaaSApple OSS Distributions * Only the kernel needs to know about it; applications use bh_hdrlen. 288*aca3beaaSApple OSS Distributions */ 289*aca3beaaSApple OSS Distributions #define SIZEOF_BPF_HDR (sizeof(struct bpf_hdr) <= 20 ? 18 : \ 290*aca3beaaSApple OSS Distributions sizeof(struct bpf_hdr)) 291*aca3beaaSApple OSS Distributions #endif 292*aca3beaaSApple OSS Distributions #ifdef PRIVATE 293*aca3beaaSApple OSS Distributions /* 294*aca3beaaSApple OSS Distributions * This structure must be a multiple of 4 bytes. 295*aca3beaaSApple OSS Distributions * It includes padding and spare fields that we can use later if desired. 296*aca3beaaSApple OSS Distributions */ 297*aca3beaaSApple OSS Distributions struct bpf_hdr_ext { 298*aca3beaaSApple OSS Distributions struct BPF_TIMEVAL bh_tstamp; /* time stamp */ 299*aca3beaaSApple OSS Distributions bpf_u_int32 bh_caplen; /* length of captured portion */ 300*aca3beaaSApple OSS Distributions bpf_u_int32 bh_datalen; /* original length of packet */ 301*aca3beaaSApple OSS Distributions u_short bh_hdrlen; /* length of bpf header */ 302*aca3beaaSApple OSS Distributions u_char bh_complen; 303*aca3beaaSApple OSS Distributions u_char bh_flags; 304*aca3beaaSApple OSS Distributions #define BPF_HDR_EXT_FLAGS_DIR_IN 0x00 305*aca3beaaSApple OSS Distributions #define BPF_HDR_EXT_FLAGS_DIR_OUT 0x01 306*aca3beaaSApple OSS Distributions #ifdef BSD_KERNEL_PRIVATE 307*aca3beaaSApple OSS Distributions #define BPF_HDR_EXT_FLAGS_TCP 0x02 308*aca3beaaSApple OSS Distributions #define BPF_HDR_EXT_FLAGS_UDP 0x04 309*aca3beaaSApple OSS Distributions #endif /* BSD_KERNEL_PRIVATE */ 310*aca3beaaSApple OSS Distributions pid_t bh_pid; /* process PID */ 311*aca3beaaSApple OSS Distributions char bh_comm[MAXCOMLEN + 1]; /* process command */ 312*aca3beaaSApple OSS Distributions u_char bh_pktflags; 313*aca3beaaSApple OSS Distributions #define BPF_PKTFLAGS_TCP_REXMT 0x01 314*aca3beaaSApple OSS Distributions #define BPF_PKTFLAGS_START_SEQ 0x02 315*aca3beaaSApple OSS Distributions #define BPF_PKTFLAGS_LAST_PKT 0x04 316*aca3beaaSApple OSS Distributions #define BPF_PKTFLAGS_WAKE_PKT 0x08 317*aca3beaaSApple OSS Distributions uint16_t bh_trace_tag; 318*aca3beaaSApple OSS Distributions bpf_u_int32 bh_svc; /* service class */ 319*aca3beaaSApple OSS Distributions bpf_u_int32 bh_flowid; /* kernel reserved; 0 in userland */ 320*aca3beaaSApple OSS Distributions bpf_u_int32 bh_unsent_bytes; /* unsent bytes at interface */ 321*aca3beaaSApple OSS Distributions bpf_u_int32 bh_unsent_snd; /* unsent bytes at socket buffer */ 322*aca3beaaSApple OSS Distributions }; 323*aca3beaaSApple OSS Distributions 324*aca3beaaSApple OSS Distributions #define BPF_HDR_EXT_HAS_TRACE_TAG 1 325*aca3beaaSApple OSS Distributions 326*aca3beaaSApple OSS Distributions /* 327*aca3beaaSApple OSS Distributions * External representation of the bpf descriptor 328*aca3beaaSApple OSS Distributions */ 329*aca3beaaSApple OSS Distributions struct xbpf_d { 330*aca3beaaSApple OSS Distributions uint32_t bd_structsize; /* Size of this structure. */ 331*aca3beaaSApple OSS Distributions int32_t bd_dev_minor; 332*aca3beaaSApple OSS Distributions int32_t bd_sig; 333*aca3beaaSApple OSS Distributions uint32_t bd_slen; 334*aca3beaaSApple OSS Distributions uint32_t bd_hlen; 335*aca3beaaSApple OSS Distributions uint32_t bd_bufsize; 336*aca3beaaSApple OSS Distributions pid_t bd_pid; 337*aca3beaaSApple OSS Distributions 338*aca3beaaSApple OSS Distributions uint8_t bd_promisc; 339*aca3beaaSApple OSS Distributions uint8_t bd_immediate; 340*aca3beaaSApple OSS Distributions uint8_t bd_hdrcmplt; 341*aca3beaaSApple OSS Distributions uint8_t bd_async; 342*aca3beaaSApple OSS Distributions 343*aca3beaaSApple OSS Distributions uint8_t bd_headdrop; 344*aca3beaaSApple OSS Distributions uint8_t bd_seesent; 345*aca3beaaSApple OSS Distributions uint8_t bh_compreq; 346*aca3beaaSApple OSS Distributions uint8_t bh_compenabled; 347*aca3beaaSApple OSS Distributions 348*aca3beaaSApple OSS Distributions uint8_t bd_exthdr; 349*aca3beaaSApple OSS Distributions uint8_t bd_trunc; 350*aca3beaaSApple OSS Distributions uint8_t bd_pkthdrv2; 351*aca3beaaSApple OSS Distributions uint8_t bd_pad; 352*aca3beaaSApple OSS Distributions 353*aca3beaaSApple OSS Distributions uint64_t bd_rcount; 354*aca3beaaSApple OSS Distributions uint64_t bd_dcount; 355*aca3beaaSApple OSS Distributions uint64_t bd_fcount; 356*aca3beaaSApple OSS Distributions uint64_t bd_wcount; 357*aca3beaaSApple OSS Distributions uint64_t bd_wdcount; 358*aca3beaaSApple OSS Distributions 359*aca3beaaSApple OSS Distributions char bd_ifname[IFNAMSIZ]; 360*aca3beaaSApple OSS Distributions 361*aca3beaaSApple OSS Distributions uint64_t bd_comp_count; 362*aca3beaaSApple OSS Distributions uint64_t bd_comp_size; 363*aca3beaaSApple OSS Distributions 364*aca3beaaSApple OSS Distributions uint32_t bd_scnt; /* number of packets in store buffer */ 365*aca3beaaSApple OSS Distributions uint32_t bd_hcnt; /* number of packets in hold buffer */ 366*aca3beaaSApple OSS Distributions 367*aca3beaaSApple OSS Distributions uint64_t bd_read_count; 368*aca3beaaSApple OSS Distributions uint64_t bd_fsize; 369*aca3beaaSApple OSS Distributions }; 370*aca3beaaSApple OSS Distributions 371*aca3beaaSApple OSS Distributions #define _HAS_STRUCT_XBPF_D_ 2 372*aca3beaaSApple OSS Distributions 373*aca3beaaSApple OSS Distributions struct bpf_comp_hdr { 374*aca3beaaSApple OSS Distributions struct BPF_TIMEVAL bh_tstamp; /* time stamp */ 375*aca3beaaSApple OSS Distributions bpf_u_int32 bh_caplen; /* length of captured portion */ 376*aca3beaaSApple OSS Distributions bpf_u_int32 bh_datalen; /* original length of packet */ 377*aca3beaaSApple OSS Distributions u_short bh_hdrlen; /* length of bpf header (this struct 378*aca3beaaSApple OSS Distributions * plus alignment padding) */ 379*aca3beaaSApple OSS Distributions u_char bh_complen; /* data portion compressed */ 380*aca3beaaSApple OSS Distributions u_char bh_padding; /* data portion compressed */ 381*aca3beaaSApple OSS Distributions }; 382*aca3beaaSApple OSS Distributions 383*aca3beaaSApple OSS Distributions #define HAS_BPF_HDR_COMP 1 384*aca3beaaSApple OSS Distributions #define BPF_HDR_COMP_LEN_MAX 255 385*aca3beaaSApple OSS Distributions 386*aca3beaaSApple OSS Distributions 387*aca3beaaSApple OSS Distributions #endif /* PRIVATE */ 388*aca3beaaSApple OSS Distributions #endif /* !defined(DRIVERKIT) */ 389*aca3beaaSApple OSS Distributions 390*aca3beaaSApple OSS Distributions /* 391*aca3beaaSApple OSS Distributions * Data-link level type codes. 392*aca3beaaSApple OSS Distributions */ 393*aca3beaaSApple OSS Distributions #define DLT_NULL 0 /* no link-layer encapsulation */ 394*aca3beaaSApple OSS Distributions #define DLT_EN10MB 1 /* Ethernet (10Mb) */ 395*aca3beaaSApple OSS Distributions #define DLT_EN3MB 2 /* Experimental Ethernet (3Mb) */ 396*aca3beaaSApple OSS Distributions #define DLT_AX25 3 /* Amateur Radio AX.25 */ 397*aca3beaaSApple OSS Distributions #define DLT_PRONET 4 /* Proteon ProNET Token Ring */ 398*aca3beaaSApple OSS Distributions #define DLT_CHAOS 5 /* Chaos */ 399*aca3beaaSApple OSS Distributions #define DLT_IEEE802 6 /* IEEE 802 Networks */ 400*aca3beaaSApple OSS Distributions #define DLT_ARCNET 7 /* ARCNET */ 401*aca3beaaSApple OSS Distributions #define DLT_SLIP 8 /* Serial Line IP */ 402*aca3beaaSApple OSS Distributions #define DLT_PPP 9 /* Point-to-point Protocol */ 403*aca3beaaSApple OSS Distributions #define DLT_FDDI 10 /* FDDI */ 404*aca3beaaSApple OSS Distributions #define DLT_ATM_RFC1483 11 /* LLC/SNAP encapsulated atm */ 405*aca3beaaSApple OSS Distributions #define DLT_RAW 12 /* raw IP */ 406*aca3beaaSApple OSS Distributions 407*aca3beaaSApple OSS Distributions /* 408*aca3beaaSApple OSS Distributions * These are values from BSD/OS's "bpf.h". 409*aca3beaaSApple OSS Distributions * These are not the same as the values from the traditional libpcap 410*aca3beaaSApple OSS Distributions * "bpf.h"; however, these values shouldn't be generated by any 411*aca3beaaSApple OSS Distributions * OS other than BSD/OS, so the correct values to use here are the 412*aca3beaaSApple OSS Distributions * BSD/OS values. 413*aca3beaaSApple OSS Distributions * 414*aca3beaaSApple OSS Distributions * Platforms that have already assigned these values to other 415*aca3beaaSApple OSS Distributions * DLT_ codes, however, should give these codes the values 416*aca3beaaSApple OSS Distributions * from that platform, so that programs that use these codes will 417*aca3beaaSApple OSS Distributions * continue to compile - even though they won't correctly read 418*aca3beaaSApple OSS Distributions * files of these types. 419*aca3beaaSApple OSS Distributions */ 420*aca3beaaSApple OSS Distributions #define DLT_SLIP_BSDOS 15 /* BSD/OS Serial Line IP */ 421*aca3beaaSApple OSS Distributions #define DLT_PPP_BSDOS 16 /* BSD/OS Point-to-point Protocol */ 422*aca3beaaSApple OSS Distributions 423*aca3beaaSApple OSS Distributions /* 424*aca3beaaSApple OSS Distributions * 17 was used for DLT_PFLOG in OpenBSD; it no longer is. 425*aca3beaaSApple OSS Distributions * 426*aca3beaaSApple OSS Distributions * It was DLT_LANE8023 in SuSE 6.3, so we defined LINKTYPE_PFLOG 427*aca3beaaSApple OSS Distributions * as 117 so that pflog captures would use a link-layer header type 428*aca3beaaSApple OSS Distributions * value that didn't collide with any other values. On all 429*aca3beaaSApple OSS Distributions * platforms other than OpenBSD, we defined DLT_PFLOG as 117, 430*aca3beaaSApple OSS Distributions * and we mapped between LINKTYPE_PFLOG and DLT_PFLOG. 431*aca3beaaSApple OSS Distributions * 432*aca3beaaSApple OSS Distributions * OpenBSD eventually switched to using 117 for DLT_PFLOG as well. 433*aca3beaaSApple OSS Distributions * 434*aca3beaaSApple OSS Distributions * Don't use 17 for anything else. 435*aca3beaaSApple OSS Distributions */ 436*aca3beaaSApple OSS Distributions 437*aca3beaaSApple OSS Distributions /* 438*aca3beaaSApple OSS Distributions * 18 is used for DLT_PFSYNC in OpenBSD, NetBSD, DragonFly BSD and 439*aca3beaaSApple OSS Distributions * Mac OS X; don't use it for anything else. (FreeBSD uses 121, 440*aca3beaaSApple OSS Distributions * which collides with DLT_HHDLC, even though it doesn't use 18 441*aca3beaaSApple OSS Distributions * for anything and doesn't appear to have ever used it for anything.) 442*aca3beaaSApple OSS Distributions * 443*aca3beaaSApple OSS Distributions * We define it as 18 on those platforms; it is, unfortunately, used 444*aca3beaaSApple OSS Distributions * for DLT_CIP in Suse 6.3, so we don't define it as DLT_PFSYNC 445*aca3beaaSApple OSS Distributions * in general. As the packet format for it, like that for 446*aca3beaaSApple OSS Distributions * DLT_PFLOG, is not only OS-dependent but OS-version-dependent, 447*aca3beaaSApple OSS Distributions * we don't support printing it in tcpdump except on OSes that 448*aca3beaaSApple OSS Distributions * have the relevant header files, so it's not that useful on 449*aca3beaaSApple OSS Distributions * other platforms. 450*aca3beaaSApple OSS Distributions */ 451*aca3beaaSApple OSS Distributions #define DLT_PFSYNC 18 /* Packet filter state syncing */ 452*aca3beaaSApple OSS Distributions 453*aca3beaaSApple OSS Distributions #define DLT_ATM_CLIP 19 /* Linux Classical-IP over ATM */ 454*aca3beaaSApple OSS Distributions 455*aca3beaaSApple OSS Distributions /* 456*aca3beaaSApple OSS Distributions * These values are defined by NetBSD; other platforms should refrain from 457*aca3beaaSApple OSS Distributions * using them for other purposes, so that NetBSD savefiles with link 458*aca3beaaSApple OSS Distributions * types of 50 or 51 can be read as this type on all platforms. 459*aca3beaaSApple OSS Distributions */ 460*aca3beaaSApple OSS Distributions #define DLT_PPP_SERIAL 50 /* PPP over serial with HDLC encapsulation */ 461*aca3beaaSApple OSS Distributions #define DLT_PPP_ETHER 51 /* PPP over Ethernet */ 462*aca3beaaSApple OSS Distributions 463*aca3beaaSApple OSS Distributions /* 464*aca3beaaSApple OSS Distributions * The Axent Raptor firewall - now the Symantec Enterprise Firewall - uses 465*aca3beaaSApple OSS Distributions * a link-layer type of 99 for the tcpdump it supplies. The link-layer 466*aca3beaaSApple OSS Distributions * header has 6 bytes of unknown data, something that appears to be an 467*aca3beaaSApple OSS Distributions * Ethernet type, and 36 bytes that appear to be 0 in at least one capture 468*aca3beaaSApple OSS Distributions * I've seen. 469*aca3beaaSApple OSS Distributions */ 470*aca3beaaSApple OSS Distributions #define DLT_SYMANTEC_FIREWALL 99 471*aca3beaaSApple OSS Distributions 472*aca3beaaSApple OSS Distributions /* 473*aca3beaaSApple OSS Distributions * Values between 100 and 103 are used in capture file headers as 474*aca3beaaSApple OSS Distributions * link-layer header type LINKTYPE_ values corresponding to DLT_ types 475*aca3beaaSApple OSS Distributions * that differ between platforms; don't use those values for new DLT_ 476*aca3beaaSApple OSS Distributions * new types. 477*aca3beaaSApple OSS Distributions */ 478*aca3beaaSApple OSS Distributions 479*aca3beaaSApple OSS Distributions /* 480*aca3beaaSApple OSS Distributions * Values starting with 104 are used for newly-assigned link-layer 481*aca3beaaSApple OSS Distributions * header type values; for those link-layer header types, the DLT_ 482*aca3beaaSApple OSS Distributions * value returned by pcap_datalink() and passed to pcap_open_dead(), 483*aca3beaaSApple OSS Distributions * and the LINKTYPE_ value that appears in capture files, are the 484*aca3beaaSApple OSS Distributions * same. 485*aca3beaaSApple OSS Distributions * 486*aca3beaaSApple OSS Distributions * DLT_MATCHING_MIN is the lowest such value; DLT_MATCHING_MAX is 487*aca3beaaSApple OSS Distributions * the highest such value. 488*aca3beaaSApple OSS Distributions */ 489*aca3beaaSApple OSS Distributions #define DLT_MATCHING_MIN 104 490*aca3beaaSApple OSS Distributions 491*aca3beaaSApple OSS Distributions /* 492*aca3beaaSApple OSS Distributions * This value was defined by libpcap 0.5; platforms that have defined 493*aca3beaaSApple OSS Distributions * it with a different value should define it here with that value - 494*aca3beaaSApple OSS Distributions * a link type of 104 in a save file will be mapped to DLT_C_HDLC, 495*aca3beaaSApple OSS Distributions * whatever value that happens to be, so programs will correctly 496*aca3beaaSApple OSS Distributions * handle files with that link type regardless of the value of 497*aca3beaaSApple OSS Distributions * DLT_C_HDLC. 498*aca3beaaSApple OSS Distributions * 499*aca3beaaSApple OSS Distributions * The name DLT_C_HDLC was used by BSD/OS; we use that name for source 500*aca3beaaSApple OSS Distributions * compatibility with programs written for BSD/OS. 501*aca3beaaSApple OSS Distributions * 502*aca3beaaSApple OSS Distributions * libpcap 0.5 defined it as DLT_CHDLC; we define DLT_CHDLC as well, 503*aca3beaaSApple OSS Distributions * for source compatibility with programs written for libpcap 0.5. 504*aca3beaaSApple OSS Distributions */ 505*aca3beaaSApple OSS Distributions #define DLT_C_HDLC 104 /* Cisco HDLC */ 506*aca3beaaSApple OSS Distributions #define DLT_CHDLC DLT_C_HDLC 507*aca3beaaSApple OSS Distributions 508*aca3beaaSApple OSS Distributions #define DLT_IEEE802_11 105 /* IEEE 802.11 wireless */ 509*aca3beaaSApple OSS Distributions 510*aca3beaaSApple OSS Distributions /* 511*aca3beaaSApple OSS Distributions * Values between 106 and 107 are used in capture file headers as 512*aca3beaaSApple OSS Distributions * link-layer types corresponding to DLT_ types that might differ 513*aca3beaaSApple OSS Distributions * between platforms; don't use those values for new DLT_ new types. 514*aca3beaaSApple OSS Distributions */ 515*aca3beaaSApple OSS Distributions 516*aca3beaaSApple OSS Distributions /* 517*aca3beaaSApple OSS Distributions * Frame Relay; BSD/OS has a DLT_FR with a value of 11, but that collides 518*aca3beaaSApple OSS Distributions * with other values. 519*aca3beaaSApple OSS Distributions * DLT_FR and DLT_FRELAY packets start with the Q.922 Frame Relay header 520*aca3beaaSApple OSS Distributions * (DLCI, etc.). 521*aca3beaaSApple OSS Distributions */ 522*aca3beaaSApple OSS Distributions #define DLT_FRELAY 107 523*aca3beaaSApple OSS Distributions 524*aca3beaaSApple OSS Distributions /* 525*aca3beaaSApple OSS Distributions * OpenBSD DLT_LOOP, for loopback devices; it's like DLT_NULL, except 526*aca3beaaSApple OSS Distributions * that the AF_ type in the link-layer header is in network byte order. 527*aca3beaaSApple OSS Distributions * 528*aca3beaaSApple OSS Distributions * OpenBSD defines it as 12, but that collides with DLT_RAW, so we 529*aca3beaaSApple OSS Distributions * define it as 108 here. If OpenBSD picks up this file, it should 530*aca3beaaSApple OSS Distributions * define DLT_LOOP as 12 in its version, as per the comment above - 531*aca3beaaSApple OSS Distributions * and should not use 108 for any purpose. 532*aca3beaaSApple OSS Distributions */ 533*aca3beaaSApple OSS Distributions #define DLT_LOOP 108 534*aca3beaaSApple OSS Distributions 535*aca3beaaSApple OSS Distributions /* 536*aca3beaaSApple OSS Distributions * Values between 109 and 112 are used in capture file headers as 537*aca3beaaSApple OSS Distributions * link-layer types corresponding to DLT_ types that might differ 538*aca3beaaSApple OSS Distributions * between platforms; don't use those values for new DLT_ new types. 539*aca3beaaSApple OSS Distributions */ 540*aca3beaaSApple OSS Distributions 541*aca3beaaSApple OSS Distributions /* 542*aca3beaaSApple OSS Distributions * Encapsulated packets for IPsec; DLT_ENC is 13 in OpenBSD, but that's 543*aca3beaaSApple OSS Distributions * DLT_SLIP_BSDOS in NetBSD, so we don't use 13 for it in OSes other 544*aca3beaaSApple OSS Distributions * than OpenBSD. 545*aca3beaaSApple OSS Distributions */ 546*aca3beaaSApple OSS Distributions #define DLT_ENC 109 547*aca3beaaSApple OSS Distributions 548*aca3beaaSApple OSS Distributions /* 549*aca3beaaSApple OSS Distributions * This is for Linux cooked sockets. 550*aca3beaaSApple OSS Distributions */ 551*aca3beaaSApple OSS Distributions #define DLT_LINUX_SLL 113 552*aca3beaaSApple OSS Distributions 553*aca3beaaSApple OSS Distributions /* 554*aca3beaaSApple OSS Distributions * Apple LocalTalk hardware. 555*aca3beaaSApple OSS Distributions */ 556*aca3beaaSApple OSS Distributions #define DLT_LTALK 114 557*aca3beaaSApple OSS Distributions 558*aca3beaaSApple OSS Distributions /* 559*aca3beaaSApple OSS Distributions * Acorn Econet. 560*aca3beaaSApple OSS Distributions */ 561*aca3beaaSApple OSS Distributions #define DLT_ECONET 115 562*aca3beaaSApple OSS Distributions 563*aca3beaaSApple OSS Distributions /* 564*aca3beaaSApple OSS Distributions * Reserved for use with OpenBSD ipfilter. 565*aca3beaaSApple OSS Distributions */ 566*aca3beaaSApple OSS Distributions #define DLT_IPFILTER 116 567*aca3beaaSApple OSS Distributions 568*aca3beaaSApple OSS Distributions /* 569*aca3beaaSApple OSS Distributions * For use in capture-file headers as a link-layer type corresponding 570*aca3beaaSApple OSS Distributions * to OpenBSD PF (Packet Filter) log. 571*aca3beaaSApple OSS Distributions */ 572*aca3beaaSApple OSS Distributions #define DLT_PFLOG 117 573*aca3beaaSApple OSS Distributions 574*aca3beaaSApple OSS Distributions /* 575*aca3beaaSApple OSS Distributions * Registered for Cisco-internal use. 576*aca3beaaSApple OSS Distributions */ 577*aca3beaaSApple OSS Distributions #define DLT_CISCO_IOS 118 578*aca3beaaSApple OSS Distributions 579*aca3beaaSApple OSS Distributions /* 580*aca3beaaSApple OSS Distributions * Reserved for 802.11 cards using the Prism II chips, with a link-layer 581*aca3beaaSApple OSS Distributions * header including Prism monitor mode information plus an 802.11 582*aca3beaaSApple OSS Distributions * header. 583*aca3beaaSApple OSS Distributions */ 584*aca3beaaSApple OSS Distributions #define DLT_PRISM_HEADER 119 585*aca3beaaSApple OSS Distributions 586*aca3beaaSApple OSS Distributions /* 587*aca3beaaSApple OSS Distributions * Reserved for Aironet 802.11 cards, with an Aironet link-layer header 588*aca3beaaSApple OSS Distributions * (see Doug Ambrisko's FreeBSD patches). 589*aca3beaaSApple OSS Distributions */ 590*aca3beaaSApple OSS Distributions #define DLT_AIRONET_HEADER 120 591*aca3beaaSApple OSS Distributions 592*aca3beaaSApple OSS Distributions /* 593*aca3beaaSApple OSS Distributions * Reserved for Siemens HiPath HDLC. XXX 594*aca3beaaSApple OSS Distributions */ 595*aca3beaaSApple OSS Distributions #define DLT_HHDLC 121 596*aca3beaaSApple OSS Distributions 597*aca3beaaSApple OSS Distributions /* 598*aca3beaaSApple OSS Distributions * Reserved for RFC 2625 IP-over-Fibre Channel. 599*aca3beaaSApple OSS Distributions */ 600*aca3beaaSApple OSS Distributions #define DLT_IP_OVER_FC 122 601*aca3beaaSApple OSS Distributions 602*aca3beaaSApple OSS Distributions /* 603*aca3beaaSApple OSS Distributions * Reserved for Full Frontal ATM on Solaris. 604*aca3beaaSApple OSS Distributions */ 605*aca3beaaSApple OSS Distributions #define DLT_SUNATM 123 606*aca3beaaSApple OSS Distributions 607*aca3beaaSApple OSS Distributions /* 608*aca3beaaSApple OSS Distributions * Reserved as per request from Kent Dahlgren <[email protected]> 609*aca3beaaSApple OSS Distributions * for private use. 610*aca3beaaSApple OSS Distributions */ 611*aca3beaaSApple OSS Distributions #define DLT_RIO 124 /* RapidIO */ 612*aca3beaaSApple OSS Distributions #define DLT_PCI_EXP 125 /* PCI Express */ 613*aca3beaaSApple OSS Distributions #define DLT_AURORA 126 /* Xilinx Aurora link layer */ 614*aca3beaaSApple OSS Distributions 615*aca3beaaSApple OSS Distributions /* 616*aca3beaaSApple OSS Distributions * BSD header for 802.11 plus a number of bits of link-layer information 617*aca3beaaSApple OSS Distributions * including radio information. 618*aca3beaaSApple OSS Distributions */ 619*aca3beaaSApple OSS Distributions #ifndef DLT_IEEE802_11_RADIO 620*aca3beaaSApple OSS Distributions #define DLT_IEEE802_11_RADIO 127 621*aca3beaaSApple OSS Distributions #endif 622*aca3beaaSApple OSS Distributions 623*aca3beaaSApple OSS Distributions /* 624*aca3beaaSApple OSS Distributions * Reserved for TZSP encapsulation. 625*aca3beaaSApple OSS Distributions */ 626*aca3beaaSApple OSS Distributions #define DLT_TZSP 128 /* Tazmen Sniffer Protocol */ 627*aca3beaaSApple OSS Distributions 628*aca3beaaSApple OSS Distributions /* 629*aca3beaaSApple OSS Distributions * Reserved for Linux ARCNET. 630*aca3beaaSApple OSS Distributions */ 631*aca3beaaSApple OSS Distributions #define DLT_ARCNET_LINUX 129 632*aca3beaaSApple OSS Distributions 633*aca3beaaSApple OSS Distributions /* 634*aca3beaaSApple OSS Distributions * Juniper-private data link types. 635*aca3beaaSApple OSS Distributions */ 636*aca3beaaSApple OSS Distributions #define DLT_JUNIPER_MLPPP 130 637*aca3beaaSApple OSS Distributions #define DLT_JUNIPER_MLFR 131 638*aca3beaaSApple OSS Distributions #define DLT_JUNIPER_ES 132 639*aca3beaaSApple OSS Distributions #define DLT_JUNIPER_GGSN 133 640*aca3beaaSApple OSS Distributions #define DLT_JUNIPER_MFR 134 641*aca3beaaSApple OSS Distributions #define DLT_JUNIPER_ATM2 135 642*aca3beaaSApple OSS Distributions #define DLT_JUNIPER_SERVICES 136 643*aca3beaaSApple OSS Distributions #define DLT_JUNIPER_ATM1 137 644*aca3beaaSApple OSS Distributions 645*aca3beaaSApple OSS Distributions /* 646*aca3beaaSApple OSS Distributions * Apple IP-over-IEEE 1394, as per a request from Dieter Siegmund 647*aca3beaaSApple OSS Distributions * <[email protected]>. The header that's presented is an Ethernet-like 648*aca3beaaSApple OSS Distributions * header: 649*aca3beaaSApple OSS Distributions * 650*aca3beaaSApple OSS Distributions * #define FIREWIRE_EUI64_LEN 8 651*aca3beaaSApple OSS Distributions * struct firewire_header { 652*aca3beaaSApple OSS Distributions * u_char firewire_dhost[FIREWIRE_EUI64_LEN]; 653*aca3beaaSApple OSS Distributions * u_char firewire_shost[FIREWIRE_EUI64_LEN]; 654*aca3beaaSApple OSS Distributions * u_short firewire_type; 655*aca3beaaSApple OSS Distributions * }; 656*aca3beaaSApple OSS Distributions * 657*aca3beaaSApple OSS Distributions * with "firewire_type" being an Ethernet type value, rather than, 658*aca3beaaSApple OSS Distributions * for example, raw GASP frames being handed up. 659*aca3beaaSApple OSS Distributions */ 660*aca3beaaSApple OSS Distributions #define DLT_APPLE_IP_OVER_IEEE1394 138 661*aca3beaaSApple OSS Distributions 662*aca3beaaSApple OSS Distributions /* 663*aca3beaaSApple OSS Distributions * Various SS7 encapsulations, as per a request from Jeff Morriss 664*aca3beaaSApple OSS Distributions * <jeff.morriss[AT]ulticom.com> and subsequent discussions. 665*aca3beaaSApple OSS Distributions */ 666*aca3beaaSApple OSS Distributions #define DLT_MTP2_WITH_PHDR 139 /* pseudo-header with various info, followed by MTP2 */ 667*aca3beaaSApple OSS Distributions #define DLT_MTP2 140 /* MTP2, without pseudo-header */ 668*aca3beaaSApple OSS Distributions #define DLT_MTP3 141 /* MTP3, without pseudo-header or MTP2 */ 669*aca3beaaSApple OSS Distributions #define DLT_SCCP 142 /* SCCP, without pseudo-header or MTP2 or MTP3 */ 670*aca3beaaSApple OSS Distributions 671*aca3beaaSApple OSS Distributions /* 672*aca3beaaSApple OSS Distributions * Reserved for DOCSIS. 673*aca3beaaSApple OSS Distributions */ 674*aca3beaaSApple OSS Distributions #define DLT_DOCSIS 143 675*aca3beaaSApple OSS Distributions 676*aca3beaaSApple OSS Distributions /* 677*aca3beaaSApple OSS Distributions * Reserved for Linux IrDA. 678*aca3beaaSApple OSS Distributions */ 679*aca3beaaSApple OSS Distributions #define DLT_LINUX_IRDA 144 680*aca3beaaSApple OSS Distributions 681*aca3beaaSApple OSS Distributions /* 682*aca3beaaSApple OSS Distributions * Reserved for IBM SP switch and IBM Next Federation switch. 683*aca3beaaSApple OSS Distributions */ 684*aca3beaaSApple OSS Distributions #define DLT_IBM_SP 145 685*aca3beaaSApple OSS Distributions #define DLT_IBM_SN 146 686*aca3beaaSApple OSS Distributions 687*aca3beaaSApple OSS Distributions /* 688*aca3beaaSApple OSS Distributions * Reserved for private use. If you have some link-layer header type 689*aca3beaaSApple OSS Distributions * that you want to use within your organization, with the capture files 690*aca3beaaSApple OSS Distributions * using that link-layer header type not ever be sent outside your 691*aca3beaaSApple OSS Distributions * organization, you can use these values. 692*aca3beaaSApple OSS Distributions * 693*aca3beaaSApple OSS Distributions * No libpcap release will use these for any purpose, nor will any 694*aca3beaaSApple OSS Distributions * tcpdump release use them, either. 695*aca3beaaSApple OSS Distributions * 696*aca3beaaSApple OSS Distributions * Do *NOT* use these in capture files that you expect anybody not using 697*aca3beaaSApple OSS Distributions * your private versions of capture-file-reading tools to read; in 698*aca3beaaSApple OSS Distributions * particular, do *NOT* use them in products, otherwise you may find that 699*aca3beaaSApple OSS Distributions * people won't be able to use tcpdump, or snort, or Ethereal, or... to 700*aca3beaaSApple OSS Distributions * read capture files from your firewall/intrusion detection/traffic 701*aca3beaaSApple OSS Distributions * monitoring/etc. appliance, or whatever product uses that DLT_ value, 702*aca3beaaSApple OSS Distributions * and you may also find that the developers of those applications will 703*aca3beaaSApple OSS Distributions * not accept patches to let them read those files. 704*aca3beaaSApple OSS Distributions * 705*aca3beaaSApple OSS Distributions * Also, do not use them if somebody might send you a capture using them 706*aca3beaaSApple OSS Distributions * for *their* private type and tools using them for *your* private type 707*aca3beaaSApple OSS Distributions * would have to read them. 708*aca3beaaSApple OSS Distributions * 709*aca3beaaSApple OSS Distributions * Instead, ask "[email protected]" for a new DLT_ value, 710*aca3beaaSApple OSS Distributions * as per the comment above, and use the type you're given. 711*aca3beaaSApple OSS Distributions */ 712*aca3beaaSApple OSS Distributions #define DLT_USER0 147 713*aca3beaaSApple OSS Distributions #define DLT_USER1 148 714*aca3beaaSApple OSS Distributions #define DLT_USER2 149 715*aca3beaaSApple OSS Distributions #define DLT_USER3 150 716*aca3beaaSApple OSS Distributions #define DLT_USER4 151 717*aca3beaaSApple OSS Distributions #define DLT_USER5 152 718*aca3beaaSApple OSS Distributions #define DLT_USER6 153 719*aca3beaaSApple OSS Distributions #define DLT_USER7 154 720*aca3beaaSApple OSS Distributions #define DLT_USER8 155 721*aca3beaaSApple OSS Distributions #define DLT_USER9 156 722*aca3beaaSApple OSS Distributions #define DLT_USER10 157 723*aca3beaaSApple OSS Distributions #define DLT_USER11 158 724*aca3beaaSApple OSS Distributions #define DLT_USER12 159 725*aca3beaaSApple OSS Distributions #define DLT_USER13 160 726*aca3beaaSApple OSS Distributions #define DLT_USER14 161 727*aca3beaaSApple OSS Distributions #define DLT_USER15 162 728*aca3beaaSApple OSS Distributions 729*aca3beaaSApple OSS Distributions #ifdef PRIVATE 730*aca3beaaSApple OSS Distributions /* 731*aca3beaaSApple OSS Distributions * For Apple private usage 732*aca3beaaSApple OSS Distributions */ 733*aca3beaaSApple OSS Distributions #define DLT_USER0_APPLE_INTERNAL DLT_USER0 /* rdar://12019509 */ 734*aca3beaaSApple OSS Distributions #define DLT_USER1_APPLE_INTERNAL DLT_USER1 /* rdar://12019509 */ 735*aca3beaaSApple OSS Distributions #define DLT_PKTAP DLT_USER2 /* rdar://11779467 */ 736*aca3beaaSApple OSS Distributions #define DLT_USER3_APPLE_INTERNAL DLT_USER3 /* rdar://19614531 */ 737*aca3beaaSApple OSS Distributions #define DLT_USER4_APPLE_INTERNAL DLT_USER4 /* rdar://19614531 */ 738*aca3beaaSApple OSS Distributions #endif /* PRIVATE */ 739*aca3beaaSApple OSS Distributions 740*aca3beaaSApple OSS Distributions /* 741*aca3beaaSApple OSS Distributions * For future use with 802.11 captures - defined by AbsoluteValue 742*aca3beaaSApple OSS Distributions * Systems to store a number of bits of link-layer information 743*aca3beaaSApple OSS Distributions * including radio information: 744*aca3beaaSApple OSS Distributions * 745*aca3beaaSApple OSS Distributions * http://www.shaftnet.org/~pizza/software/capturefrm.txt 746*aca3beaaSApple OSS Distributions * 747*aca3beaaSApple OSS Distributions * but it might be used by some non-AVS drivers now or in the 748*aca3beaaSApple OSS Distributions * future. 749*aca3beaaSApple OSS Distributions */ 750*aca3beaaSApple OSS Distributions #define DLT_IEEE802_11_RADIO_AVS 163 /* 802.11 plus AVS radio header */ 751*aca3beaaSApple OSS Distributions 752*aca3beaaSApple OSS Distributions /* 753*aca3beaaSApple OSS Distributions * Juniper-private data link type, as per request from 754*aca3beaaSApple OSS Distributions * Hannes Gredler <[email protected]>. The DLT_s are used 755*aca3beaaSApple OSS Distributions * for passing on chassis-internal metainformation such as 756*aca3beaaSApple OSS Distributions * QOS profiles, etc.. 757*aca3beaaSApple OSS Distributions */ 758*aca3beaaSApple OSS Distributions #define DLT_JUNIPER_MONITOR 164 759*aca3beaaSApple OSS Distributions 760*aca3beaaSApple OSS Distributions /* 761*aca3beaaSApple OSS Distributions * Reserved for BACnet MS/TP. 762*aca3beaaSApple OSS Distributions */ 763*aca3beaaSApple OSS Distributions #define DLT_BACNET_MS_TP 165 764*aca3beaaSApple OSS Distributions 765*aca3beaaSApple OSS Distributions /* 766*aca3beaaSApple OSS Distributions * Another PPP variant as per request from Karsten Keil <[email protected]>. 767*aca3beaaSApple OSS Distributions * 768*aca3beaaSApple OSS Distributions * This is used in some OSes to allow a kernel socket filter to distinguish 769*aca3beaaSApple OSS Distributions * between incoming and outgoing packets, on a socket intended to 770*aca3beaaSApple OSS Distributions * supply pppd with outgoing packets so it can do dial-on-demand and 771*aca3beaaSApple OSS Distributions * hangup-on-lack-of-demand; incoming packets are filtered out so they 772*aca3beaaSApple OSS Distributions * don't cause pppd to hold the connection up (you don't want random 773*aca3beaaSApple OSS Distributions * input packets such as port scans, packets from old lost connections, 774*aca3beaaSApple OSS Distributions * etc. to force the connection to stay up). 775*aca3beaaSApple OSS Distributions * 776*aca3beaaSApple OSS Distributions * The first byte of the PPP header (0xff03) is modified to accomodate 777*aca3beaaSApple OSS Distributions * the direction - 0x00 = IN, 0x01 = OUT. 778*aca3beaaSApple OSS Distributions */ 779*aca3beaaSApple OSS Distributions #define DLT_PPP_PPPD 166 780*aca3beaaSApple OSS Distributions 781*aca3beaaSApple OSS Distributions /* 782*aca3beaaSApple OSS Distributions * Names for backwards compatibility with older versions of some PPP 783*aca3beaaSApple OSS Distributions * software; new software should use DLT_PPP_PPPD. 784*aca3beaaSApple OSS Distributions */ 785*aca3beaaSApple OSS Distributions #define DLT_PPP_WITH_DIRECTION DLT_PPP_PPPD 786*aca3beaaSApple OSS Distributions #define DLT_LINUX_PPP_WITHDIRECTION DLT_PPP_PPPD 787*aca3beaaSApple OSS Distributions 788*aca3beaaSApple OSS Distributions /* 789*aca3beaaSApple OSS Distributions * Juniper-private data link type, as per request from 790*aca3beaaSApple OSS Distributions * Hannes Gredler <[email protected]>. The DLT_s are used 791*aca3beaaSApple OSS Distributions * for passing on chassis-internal metainformation such as 792*aca3beaaSApple OSS Distributions * QOS profiles, cookies, etc.. 793*aca3beaaSApple OSS Distributions */ 794*aca3beaaSApple OSS Distributions #define DLT_JUNIPER_PPPOE 167 795*aca3beaaSApple OSS Distributions #define DLT_JUNIPER_PPPOE_ATM 168 796*aca3beaaSApple OSS Distributions 797*aca3beaaSApple OSS Distributions #define DLT_GPRS_LLC 169 /* GPRS LLC */ 798*aca3beaaSApple OSS Distributions #define DLT_GPF_T 170 /* GPF-T (ITU-T G.7041/Y.1303) */ 799*aca3beaaSApple OSS Distributions #define DLT_GPF_F 171 /* GPF-F (ITU-T G.7041/Y.1303) */ 800*aca3beaaSApple OSS Distributions 801*aca3beaaSApple OSS Distributions /* 802*aca3beaaSApple OSS Distributions * Requested by Oolan Zimmer <[email protected]> for use in Gcom's T1/E1 line 803*aca3beaaSApple OSS Distributions * monitoring equipment. 804*aca3beaaSApple OSS Distributions */ 805*aca3beaaSApple OSS Distributions #define DLT_GCOM_T1E1 172 806*aca3beaaSApple OSS Distributions #define DLT_GCOM_SERIAL 173 807*aca3beaaSApple OSS Distributions 808*aca3beaaSApple OSS Distributions /* 809*aca3beaaSApple OSS Distributions * Juniper-private data link type, as per request from 810*aca3beaaSApple OSS Distributions * Hannes Gredler <[email protected]>. The DLT_ is used 811*aca3beaaSApple OSS Distributions * for internal communication to Physical Interface Cards (PIC) 812*aca3beaaSApple OSS Distributions */ 813*aca3beaaSApple OSS Distributions #define DLT_JUNIPER_PIC_PEER 174 814*aca3beaaSApple OSS Distributions 815*aca3beaaSApple OSS Distributions /* 816*aca3beaaSApple OSS Distributions * Link types requested by Gregor Maier <[email protected]> of Endace 817*aca3beaaSApple OSS Distributions * Measurement Systems. They add an ERF header (see 818*aca3beaaSApple OSS Distributions * http://www.endace.com/support/EndaceRecordFormat.pdf) in front of 819*aca3beaaSApple OSS Distributions * the link-layer header. 820*aca3beaaSApple OSS Distributions */ 821*aca3beaaSApple OSS Distributions #define DLT_ERF_ETH 175 /* Ethernet */ 822*aca3beaaSApple OSS Distributions #define DLT_ERF_POS 176 /* Packet-over-SONET */ 823*aca3beaaSApple OSS Distributions 824*aca3beaaSApple OSS Distributions /* 825*aca3beaaSApple OSS Distributions * Requested by Daniele Orlandi <[email protected]> for raw LAPD 826*aca3beaaSApple OSS Distributions * for vISDN (http://www.orlandi.com/visdn/). Its link-layer header 827*aca3beaaSApple OSS Distributions * includes additional information before the LAPD header, so it's 828*aca3beaaSApple OSS Distributions * not necessarily a generic LAPD header. 829*aca3beaaSApple OSS Distributions */ 830*aca3beaaSApple OSS Distributions #define DLT_LINUX_LAPD 177 831*aca3beaaSApple OSS Distributions 832*aca3beaaSApple OSS Distributions /* 833*aca3beaaSApple OSS Distributions * Juniper-private data link type, as per request from 834*aca3beaaSApple OSS Distributions * Hannes Gredler <[email protected]>. 835*aca3beaaSApple OSS Distributions * The DLT_ are used for prepending meta-information 836*aca3beaaSApple OSS Distributions * like interface index, interface name 837*aca3beaaSApple OSS Distributions * before standard Ethernet, PPP, Frelay & C-HDLC Frames 838*aca3beaaSApple OSS Distributions */ 839*aca3beaaSApple OSS Distributions #define DLT_JUNIPER_ETHER 178 840*aca3beaaSApple OSS Distributions #define DLT_JUNIPER_PPP 179 841*aca3beaaSApple OSS Distributions #define DLT_JUNIPER_FRELAY 180 842*aca3beaaSApple OSS Distributions #define DLT_JUNIPER_CHDLC 181 843*aca3beaaSApple OSS Distributions 844*aca3beaaSApple OSS Distributions /* 845*aca3beaaSApple OSS Distributions * Multi Link Frame Relay (FRF.16) 846*aca3beaaSApple OSS Distributions */ 847*aca3beaaSApple OSS Distributions #define DLT_MFR 182 848*aca3beaaSApple OSS Distributions 849*aca3beaaSApple OSS Distributions /* 850*aca3beaaSApple OSS Distributions * Juniper-private data link type, as per request from 851*aca3beaaSApple OSS Distributions * Hannes Gredler <[email protected]>. 852*aca3beaaSApple OSS Distributions * The DLT_ is used for internal communication with a 853*aca3beaaSApple OSS Distributions * voice Adapter Card (PIC) 854*aca3beaaSApple OSS Distributions */ 855*aca3beaaSApple OSS Distributions #define DLT_JUNIPER_VP 183 856*aca3beaaSApple OSS Distributions 857*aca3beaaSApple OSS Distributions /* 858*aca3beaaSApple OSS Distributions * Arinc 429 frames. 859*aca3beaaSApple OSS Distributions * DLT_ requested by Gianluca Varenni <[email protected]>. 860*aca3beaaSApple OSS Distributions * Every frame contains a 32bit A429 label. 861*aca3beaaSApple OSS Distributions * More documentation on Arinc 429 can be found at 862*aca3beaaSApple OSS Distributions * http://www.condoreng.com/support/downloads/tutorials/ARINCTutorial.pdf 863*aca3beaaSApple OSS Distributions */ 864*aca3beaaSApple OSS Distributions #define DLT_A429 184 865*aca3beaaSApple OSS Distributions 866*aca3beaaSApple OSS Distributions /* 867*aca3beaaSApple OSS Distributions * Arinc 653 Interpartition Communication messages. 868*aca3beaaSApple OSS Distributions * DLT_ requested by Gianluca Varenni <[email protected]>. 869*aca3beaaSApple OSS Distributions * Please refer to the A653-1 standard for more information. 870*aca3beaaSApple OSS Distributions */ 871*aca3beaaSApple OSS Distributions #define DLT_A653_ICM 185 872*aca3beaaSApple OSS Distributions 873*aca3beaaSApple OSS Distributions /* 874*aca3beaaSApple OSS Distributions * USB packets, beginning with a USB setup header; requested by 875*aca3beaaSApple OSS Distributions * Paolo Abeni <[email protected]>. 876*aca3beaaSApple OSS Distributions */ 877*aca3beaaSApple OSS Distributions #define DLT_USB 186 878*aca3beaaSApple OSS Distributions 879*aca3beaaSApple OSS Distributions /* 880*aca3beaaSApple OSS Distributions * Bluetooth HCI UART transport layer (part H:4); requested by 881*aca3beaaSApple OSS Distributions * Paolo Abeni. 882*aca3beaaSApple OSS Distributions */ 883*aca3beaaSApple OSS Distributions #define DLT_BLUETOOTH_HCI_H4 187 884*aca3beaaSApple OSS Distributions 885*aca3beaaSApple OSS Distributions /* 886*aca3beaaSApple OSS Distributions * IEEE 802.16 MAC Common Part Sublayer; requested by Maria Cruz 887*aca3beaaSApple OSS Distributions * <[email protected]>. 888*aca3beaaSApple OSS Distributions */ 889*aca3beaaSApple OSS Distributions #define DLT_IEEE802_16_MAC_CPS 188 890*aca3beaaSApple OSS Distributions 891*aca3beaaSApple OSS Distributions /* 892*aca3beaaSApple OSS Distributions * USB packets, beginning with a Linux USB header; requested by 893*aca3beaaSApple OSS Distributions * Paolo Abeni <[email protected]>. 894*aca3beaaSApple OSS Distributions */ 895*aca3beaaSApple OSS Distributions #define DLT_USB_LINUX 189 896*aca3beaaSApple OSS Distributions 897*aca3beaaSApple OSS Distributions /* 898*aca3beaaSApple OSS Distributions * Controller Area Network (CAN) v. 2.0B packets. 899*aca3beaaSApple OSS Distributions * DLT_ requested by Gianluca Varenni <[email protected]>. 900*aca3beaaSApple OSS Distributions * Used to dump CAN packets coming from a CAN Vector board. 901*aca3beaaSApple OSS Distributions * More documentation on the CAN v2.0B frames can be found at 902*aca3beaaSApple OSS Distributions * http://www.can-cia.org/downloads/?269 903*aca3beaaSApple OSS Distributions */ 904*aca3beaaSApple OSS Distributions #define DLT_CAN20B 190 905*aca3beaaSApple OSS Distributions 906*aca3beaaSApple OSS Distributions /* 907*aca3beaaSApple OSS Distributions * IEEE 802.15.4, with address fields padded, as is done by Linux 908*aca3beaaSApple OSS Distributions * drivers; requested by Juergen Schimmer. 909*aca3beaaSApple OSS Distributions */ 910*aca3beaaSApple OSS Distributions #define DLT_IEEE802_15_4_LINUX 191 911*aca3beaaSApple OSS Distributions 912*aca3beaaSApple OSS Distributions /* 913*aca3beaaSApple OSS Distributions * Per Packet Information encapsulated packets. 914*aca3beaaSApple OSS Distributions * DLT_ requested by Gianluca Varenni <[email protected]>. 915*aca3beaaSApple OSS Distributions */ 916*aca3beaaSApple OSS Distributions #define DLT_PPI 192 917*aca3beaaSApple OSS Distributions 918*aca3beaaSApple OSS Distributions /* 919*aca3beaaSApple OSS Distributions * Header for 802.16 MAC Common Part Sublayer plus a radiotap radio header; 920*aca3beaaSApple OSS Distributions * requested by Charles Clancy. 921*aca3beaaSApple OSS Distributions */ 922*aca3beaaSApple OSS Distributions #define DLT_IEEE802_16_MAC_CPS_RADIO 193 923*aca3beaaSApple OSS Distributions 924*aca3beaaSApple OSS Distributions /* 925*aca3beaaSApple OSS Distributions * Juniper-private data link type, as per request from 926*aca3beaaSApple OSS Distributions * Hannes Gredler <[email protected]>. 927*aca3beaaSApple OSS Distributions * The DLT_ is used for internal communication with a 928*aca3beaaSApple OSS Distributions * integrated service module (ISM). 929*aca3beaaSApple OSS Distributions */ 930*aca3beaaSApple OSS Distributions #define DLT_JUNIPER_ISM 194 931*aca3beaaSApple OSS Distributions 932*aca3beaaSApple OSS Distributions /* 933*aca3beaaSApple OSS Distributions * IEEE 802.15.4, exactly as it appears in the spec (no padding, no 934*aca3beaaSApple OSS Distributions * nothing); requested by Mikko Saarnivala <[email protected]>. 935*aca3beaaSApple OSS Distributions */ 936*aca3beaaSApple OSS Distributions #define DLT_IEEE802_15_4 195 937*aca3beaaSApple OSS Distributions 938*aca3beaaSApple OSS Distributions /* 939*aca3beaaSApple OSS Distributions * Various link-layer types, with a pseudo-header, for SITA 940*aca3beaaSApple OSS Distributions * (http://www.sita.aero/); requested by Fulko Hew ([email protected]). 941*aca3beaaSApple OSS Distributions */ 942*aca3beaaSApple OSS Distributions #define DLT_SITA 196 943*aca3beaaSApple OSS Distributions 944*aca3beaaSApple OSS Distributions /* 945*aca3beaaSApple OSS Distributions * Various link-layer types, with a pseudo-header, for Endace DAG cards; 946*aca3beaaSApple OSS Distributions * encapsulates Endace ERF records. Requested by Stephen Donnelly 947*aca3beaaSApple OSS Distributions * <[email protected]>. 948*aca3beaaSApple OSS Distributions */ 949*aca3beaaSApple OSS Distributions #define DLT_ERF 197 950*aca3beaaSApple OSS Distributions 951*aca3beaaSApple OSS Distributions /* 952*aca3beaaSApple OSS Distributions * Special header prepended to Ethernet packets when capturing from a 953*aca3beaaSApple OSS Distributions * u10 Networks board. Requested by Phil Mulholland 954*aca3beaaSApple OSS Distributions * <[email protected]>. 955*aca3beaaSApple OSS Distributions */ 956*aca3beaaSApple OSS Distributions #define DLT_RAIF1 198 957*aca3beaaSApple OSS Distributions 958*aca3beaaSApple OSS Distributions /* 959*aca3beaaSApple OSS Distributions * IPMB packet for IPMI, beginning with the I2C slave address, followed 960*aca3beaaSApple OSS Distributions * by the netFn and LUN, etc.. Requested by Chanthy Toeung 961*aca3beaaSApple OSS Distributions * <[email protected]>. 962*aca3beaaSApple OSS Distributions */ 963*aca3beaaSApple OSS Distributions #define DLT_IPMB 199 964*aca3beaaSApple OSS Distributions 965*aca3beaaSApple OSS Distributions /* 966*aca3beaaSApple OSS Distributions * Juniper-private data link type, as per request from 967*aca3beaaSApple OSS Distributions * Hannes Gredler <[email protected]>. 968*aca3beaaSApple OSS Distributions * The DLT_ is used for capturing data on a secure tunnel interface. 969*aca3beaaSApple OSS Distributions */ 970*aca3beaaSApple OSS Distributions #define DLT_JUNIPER_ST 200 971*aca3beaaSApple OSS Distributions 972*aca3beaaSApple OSS Distributions /* 973*aca3beaaSApple OSS Distributions * Bluetooth HCI UART transport layer (part H:4), with pseudo-header 974*aca3beaaSApple OSS Distributions * that includes direction information; requested by Paolo Abeni. 975*aca3beaaSApple OSS Distributions */ 976*aca3beaaSApple OSS Distributions #define DLT_BLUETOOTH_HCI_H4_WITH_PHDR 201 977*aca3beaaSApple OSS Distributions 978*aca3beaaSApple OSS Distributions /* 979*aca3beaaSApple OSS Distributions * AX.25 packet with a 1-byte KISS header; see 980*aca3beaaSApple OSS Distributions * 981*aca3beaaSApple OSS Distributions * http://www.ax25.net/kiss.htm 982*aca3beaaSApple OSS Distributions * 983*aca3beaaSApple OSS Distributions * as per Richard Stearn <[email protected]>. 984*aca3beaaSApple OSS Distributions */ 985*aca3beaaSApple OSS Distributions #define DLT_AX25_KISS 202 986*aca3beaaSApple OSS Distributions 987*aca3beaaSApple OSS Distributions /* 988*aca3beaaSApple OSS Distributions * LAPD packets from an ISDN channel, starting with the address field, 989*aca3beaaSApple OSS Distributions * with no pseudo-header. 990*aca3beaaSApple OSS Distributions * Requested by Varuna De Silva <[email protected]>. 991*aca3beaaSApple OSS Distributions */ 992*aca3beaaSApple OSS Distributions #define DLT_LAPD 203 993*aca3beaaSApple OSS Distributions 994*aca3beaaSApple OSS Distributions /* 995*aca3beaaSApple OSS Distributions * Variants of various link-layer headers, with a one-byte direction 996*aca3beaaSApple OSS Distributions * pseudo-header prepended - zero means "received by this host", 997*aca3beaaSApple OSS Distributions * non-zero (any non-zero value) means "sent by this host" - as per 998*aca3beaaSApple OSS Distributions * Will Barker <[email protected]>. 999*aca3beaaSApple OSS Distributions */ 1000*aca3beaaSApple OSS Distributions #define DLT_PPP_WITH_DIR 204 /* PPP - don't confuse with DLT_PPP_WITH_DIRECTION */ 1001*aca3beaaSApple OSS Distributions #define DLT_C_HDLC_WITH_DIR 205 /* Cisco HDLC */ 1002*aca3beaaSApple OSS Distributions #define DLT_FRELAY_WITH_DIR 206 /* Frame Relay */ 1003*aca3beaaSApple OSS Distributions #define DLT_LAPB_WITH_DIR 207 /* LAPB */ 1004*aca3beaaSApple OSS Distributions 1005*aca3beaaSApple OSS Distributions /* 1006*aca3beaaSApple OSS Distributions * 208 is reserved for an as-yet-unspecified proprietary link-layer 1007*aca3beaaSApple OSS Distributions * type, as requested by Will Barker. 1008*aca3beaaSApple OSS Distributions */ 1009*aca3beaaSApple OSS Distributions 1010*aca3beaaSApple OSS Distributions /* 1011*aca3beaaSApple OSS Distributions * IPMB with a Linux-specific pseudo-header; as requested by Alexey Neyman 1012*aca3beaaSApple OSS Distributions * <[email protected]>. 1013*aca3beaaSApple OSS Distributions */ 1014*aca3beaaSApple OSS Distributions #define DLT_IPMB_LINUX 209 1015*aca3beaaSApple OSS Distributions 1016*aca3beaaSApple OSS Distributions /* 1017*aca3beaaSApple OSS Distributions * FlexRay automotive bus - http://www.flexray.com/ - as requested 1018*aca3beaaSApple OSS Distributions * by Hannes Kaelber <[email protected]>. 1019*aca3beaaSApple OSS Distributions */ 1020*aca3beaaSApple OSS Distributions #define DLT_FLEXRAY 210 1021*aca3beaaSApple OSS Distributions 1022*aca3beaaSApple OSS Distributions /* 1023*aca3beaaSApple OSS Distributions * Media Oriented Systems Transport (MOST) bus for multimedia 1024*aca3beaaSApple OSS Distributions * transport - http://www.mostcooperation.com/ - as requested 1025*aca3beaaSApple OSS Distributions * by Hannes Kaelber <[email protected]>. 1026*aca3beaaSApple OSS Distributions */ 1027*aca3beaaSApple OSS Distributions #define DLT_MOST 211 1028*aca3beaaSApple OSS Distributions 1029*aca3beaaSApple OSS Distributions /* 1030*aca3beaaSApple OSS Distributions * Local Interconnect Network (LIN) bus for vehicle networks - 1031*aca3beaaSApple OSS Distributions * http://www.lin-subbus.org/ - as requested by Hannes Kaelber 1032*aca3beaaSApple OSS Distributions * <[email protected]>. 1033*aca3beaaSApple OSS Distributions */ 1034*aca3beaaSApple OSS Distributions #define DLT_LIN 212 1035*aca3beaaSApple OSS Distributions 1036*aca3beaaSApple OSS Distributions /* 1037*aca3beaaSApple OSS Distributions * X2E-private data link type used for serial line capture, 1038*aca3beaaSApple OSS Distributions * as requested by Hannes Kaelber <[email protected]>. 1039*aca3beaaSApple OSS Distributions */ 1040*aca3beaaSApple OSS Distributions #define DLT_X2E_SERIAL 213 1041*aca3beaaSApple OSS Distributions 1042*aca3beaaSApple OSS Distributions /* 1043*aca3beaaSApple OSS Distributions * X2E-private data link type used for the Xoraya data logger 1044*aca3beaaSApple OSS Distributions * family, as requested by Hannes Kaelber <[email protected]>. 1045*aca3beaaSApple OSS Distributions */ 1046*aca3beaaSApple OSS Distributions #define DLT_X2E_XORAYA 214 1047*aca3beaaSApple OSS Distributions 1048*aca3beaaSApple OSS Distributions /* 1049*aca3beaaSApple OSS Distributions * IEEE 802.15.4, exactly as it appears in the spec (no padding, no 1050*aca3beaaSApple OSS Distributions * nothing), but with the PHY-level data for non-ASK PHYs (4 octets 1051*aca3beaaSApple OSS Distributions * of 0 as preamble, one octet of SFD, one octet of frame length+ 1052*aca3beaaSApple OSS Distributions * reserved bit, and then the MAC-layer data, starting with the 1053*aca3beaaSApple OSS Distributions * frame control field). 1054*aca3beaaSApple OSS Distributions * 1055*aca3beaaSApple OSS Distributions * Requested by Max Filippov <[email protected]>. 1056*aca3beaaSApple OSS Distributions */ 1057*aca3beaaSApple OSS Distributions #define DLT_IEEE802_15_4_NONASK_PHY 215 1058*aca3beaaSApple OSS Distributions 1059*aca3beaaSApple OSS Distributions /* 1060*aca3beaaSApple OSS Distributions * David Gibson <[email protected]> requested this for 1061*aca3beaaSApple OSS Distributions * captures from the Linux kernel /dev/input/eventN devices. This 1062*aca3beaaSApple OSS Distributions * is used to communicate keystrokes and mouse movements from the 1063*aca3beaaSApple OSS Distributions * Linux kernel to display systems, such as Xorg. 1064*aca3beaaSApple OSS Distributions */ 1065*aca3beaaSApple OSS Distributions #define DLT_LINUX_EVDEV 216 1066*aca3beaaSApple OSS Distributions 1067*aca3beaaSApple OSS Distributions /* 1068*aca3beaaSApple OSS Distributions * GSM Um and Abis interfaces, preceded by a "gsmtap" header. 1069*aca3beaaSApple OSS Distributions * 1070*aca3beaaSApple OSS Distributions * Requested by Harald Welte <[email protected]>. 1071*aca3beaaSApple OSS Distributions */ 1072*aca3beaaSApple OSS Distributions #define DLT_GSMTAP_UM 217 1073*aca3beaaSApple OSS Distributions #define DLT_GSMTAP_ABIS 218 1074*aca3beaaSApple OSS Distributions 1075*aca3beaaSApple OSS Distributions /* 1076*aca3beaaSApple OSS Distributions * MPLS, with an MPLS label as the link-layer header. 1077*aca3beaaSApple OSS Distributions * Requested by Michele Marchetto <[email protected]> on behalf 1078*aca3beaaSApple OSS Distributions * of OpenBSD. 1079*aca3beaaSApple OSS Distributions */ 1080*aca3beaaSApple OSS Distributions #define DLT_MPLS 219 1081*aca3beaaSApple OSS Distributions 1082*aca3beaaSApple OSS Distributions /* 1083*aca3beaaSApple OSS Distributions * USB packets, beginning with a Linux USB header, with the USB header 1084*aca3beaaSApple OSS Distributions * padded to 64 bytes; required for memory-mapped access. 1085*aca3beaaSApple OSS Distributions */ 1086*aca3beaaSApple OSS Distributions #define DLT_USB_LINUX_MMAPPED 220 1087*aca3beaaSApple OSS Distributions 1088*aca3beaaSApple OSS Distributions /* 1089*aca3beaaSApple OSS Distributions * DECT packets, with a pseudo-header; requested by 1090*aca3beaaSApple OSS Distributions * Matthias Wenzel <[email protected]>. 1091*aca3beaaSApple OSS Distributions */ 1092*aca3beaaSApple OSS Distributions #define DLT_DECT 221 1093*aca3beaaSApple OSS Distributions 1094*aca3beaaSApple OSS Distributions /* 1095*aca3beaaSApple OSS Distributions * From: "Lidwa, Eric (GSFC-582.0)[SGT INC]" <[email protected]> 1096*aca3beaaSApple OSS Distributions * Date: Mon, 11 May 2009 11:18:30 -0500 1097*aca3beaaSApple OSS Distributions * 1098*aca3beaaSApple OSS Distributions * DLT_AOS. We need it for AOS Space Data Link Protocol. 1099*aca3beaaSApple OSS Distributions * I have already written dissectors for but need an OK from 1100*aca3beaaSApple OSS Distributions * legal before I can submit a patch. 1101*aca3beaaSApple OSS Distributions * 1102*aca3beaaSApple OSS Distributions */ 1103*aca3beaaSApple OSS Distributions #define DLT_AOS 222 1104*aca3beaaSApple OSS Distributions 1105*aca3beaaSApple OSS Distributions /* 1106*aca3beaaSApple OSS Distributions * Wireless HART (Highway Addressable Remote Transducer) 1107*aca3beaaSApple OSS Distributions * From the HART Communication Foundation 1108*aca3beaaSApple OSS Distributions * IES/PAS 62591 1109*aca3beaaSApple OSS Distributions * 1110*aca3beaaSApple OSS Distributions * Requested by Sam Roberts <[email protected]>. 1111*aca3beaaSApple OSS Distributions */ 1112*aca3beaaSApple OSS Distributions #define DLT_WIHART 223 1113*aca3beaaSApple OSS Distributions 1114*aca3beaaSApple OSS Distributions /* 1115*aca3beaaSApple OSS Distributions * Fibre Channel FC-2 frames, beginning with a Frame_Header. 1116*aca3beaaSApple OSS Distributions * Requested by Kahou Lei <[email protected]>. 1117*aca3beaaSApple OSS Distributions */ 1118*aca3beaaSApple OSS Distributions #define DLT_FC_2 224 1119*aca3beaaSApple OSS Distributions 1120*aca3beaaSApple OSS Distributions /* 1121*aca3beaaSApple OSS Distributions * Fibre Channel FC-2 frames, beginning with an encoding of the 1122*aca3beaaSApple OSS Distributions * SOF, and ending with an encoding of the EOF. 1123*aca3beaaSApple OSS Distributions * 1124*aca3beaaSApple OSS Distributions * The encodings represent the frame delimiters as 4-byte sequences 1125*aca3beaaSApple OSS Distributions * representing the corresponding ordered sets, with K28.5 1126*aca3beaaSApple OSS Distributions * represented as 0xBC, and the D symbols as the corresponding 1127*aca3beaaSApple OSS Distributions * byte values; for example, SOFi2, which is K28.5 - D21.5 - D1.2 - D21.2, 1128*aca3beaaSApple OSS Distributions * is represented as 0xBC 0xB5 0x55 0x55. 1129*aca3beaaSApple OSS Distributions * 1130*aca3beaaSApple OSS Distributions * Requested by Kahou Lei <[email protected]>. 1131*aca3beaaSApple OSS Distributions */ 1132*aca3beaaSApple OSS Distributions #define DLT_FC_2_WITH_FRAME_DELIMS 225 1133*aca3beaaSApple OSS Distributions 1134*aca3beaaSApple OSS Distributions /* 1135*aca3beaaSApple OSS Distributions * Solaris ipnet pseudo-header; requested by Darren Reed <[email protected]>. 1136*aca3beaaSApple OSS Distributions * 1137*aca3beaaSApple OSS Distributions * The pseudo-header starts with a one-byte version number; for version 2, 1138*aca3beaaSApple OSS Distributions * the pseudo-header is: 1139*aca3beaaSApple OSS Distributions * 1140*aca3beaaSApple OSS Distributions * struct dl_ipnetinfo { 1141*aca3beaaSApple OSS Distributions * u_int8_t dli_version; 1142*aca3beaaSApple OSS Distributions * u_int8_t dli_family; 1143*aca3beaaSApple OSS Distributions * u_int16_t dli_htype; 1144*aca3beaaSApple OSS Distributions * u_int32_t dli_pktlen; 1145*aca3beaaSApple OSS Distributions * u_int32_t dli_ifindex; 1146*aca3beaaSApple OSS Distributions * u_int32_t dli_grifindex; 1147*aca3beaaSApple OSS Distributions * u_int32_t dli_zsrc; 1148*aca3beaaSApple OSS Distributions * u_int32_t dli_zdst; 1149*aca3beaaSApple OSS Distributions * }; 1150*aca3beaaSApple OSS Distributions * 1151*aca3beaaSApple OSS Distributions * dli_version is 2 for the current version of the pseudo-header. 1152*aca3beaaSApple OSS Distributions * 1153*aca3beaaSApple OSS Distributions * dli_family is a Solaris address family value, so it's 2 for IPv4 1154*aca3beaaSApple OSS Distributions * and 26 for IPv6. 1155*aca3beaaSApple OSS Distributions * 1156*aca3beaaSApple OSS Distributions * dli_htype is a "hook type" - 0 for incoming packets, 1 for outgoing 1157*aca3beaaSApple OSS Distributions * packets, and 2 for packets arriving from another zone on the same 1158*aca3beaaSApple OSS Distributions * machine. 1159*aca3beaaSApple OSS Distributions * 1160*aca3beaaSApple OSS Distributions * dli_pktlen is the length of the packet data following the pseudo-header 1161*aca3beaaSApple OSS Distributions * (so the captured length minus dli_pktlen is the length of the 1162*aca3beaaSApple OSS Distributions * pseudo-header, assuming the entire pseudo-header was captured). 1163*aca3beaaSApple OSS Distributions * 1164*aca3beaaSApple OSS Distributions * dli_ifindex is the interface index of the interface on which the 1165*aca3beaaSApple OSS Distributions * packet arrived. 1166*aca3beaaSApple OSS Distributions * 1167*aca3beaaSApple OSS Distributions * dli_grifindex is the group interface index number (for IPMP interfaces). 1168*aca3beaaSApple OSS Distributions * 1169*aca3beaaSApple OSS Distributions * dli_zsrc is the zone identifier for the source of the packet. 1170*aca3beaaSApple OSS Distributions * 1171*aca3beaaSApple OSS Distributions * dli_zdst is the zone identifier for the destination of the packet. 1172*aca3beaaSApple OSS Distributions * 1173*aca3beaaSApple OSS Distributions * A zone number of 0 is the global zone; a zone number of 0xffffffff 1174*aca3beaaSApple OSS Distributions * means that the packet arrived from another host on the network, not 1175*aca3beaaSApple OSS Distributions * from another zone on the same machine. 1176*aca3beaaSApple OSS Distributions * 1177*aca3beaaSApple OSS Distributions * An IPv4 or IPv6 datagram follows the pseudo-header; dli_family indicates 1178*aca3beaaSApple OSS Distributions * which of those it is. 1179*aca3beaaSApple OSS Distributions */ 1180*aca3beaaSApple OSS Distributions #define DLT_IPNET 226 1181*aca3beaaSApple OSS Distributions 1182*aca3beaaSApple OSS Distributions /* 1183*aca3beaaSApple OSS Distributions * CAN (Controller Area Network) frames, with a pseudo-header as supplied 1184*aca3beaaSApple OSS Distributions * by Linux SocketCAN. See Documentation/networking/can.txt in the Linux 1185*aca3beaaSApple OSS Distributions * source. 1186*aca3beaaSApple OSS Distributions * 1187*aca3beaaSApple OSS Distributions * Requested by Felix Obenhuber <[email protected]>. 1188*aca3beaaSApple OSS Distributions */ 1189*aca3beaaSApple OSS Distributions #define DLT_CAN_SOCKETCAN 227 1190*aca3beaaSApple OSS Distributions 1191*aca3beaaSApple OSS Distributions /* 1192*aca3beaaSApple OSS Distributions * Raw IPv4/IPv6; different from DLT_RAW in that the DLT_ value specifies 1193*aca3beaaSApple OSS Distributions * whether it's v4 or v6. Requested by Darren Reed <[email protected]>. 1194*aca3beaaSApple OSS Distributions */ 1195*aca3beaaSApple OSS Distributions #define DLT_IPV4 228 1196*aca3beaaSApple OSS Distributions #define DLT_IPV6 229 1197*aca3beaaSApple OSS Distributions 1198*aca3beaaSApple OSS Distributions /* 1199*aca3beaaSApple OSS Distributions * IEEE 802.15.4, exactly as it appears in the spec (no padding, no 1200*aca3beaaSApple OSS Distributions * nothing), and with no FCS at the end of the frame; requested by 1201*aca3beaaSApple OSS Distributions * Jon Smirl <[email protected]>. 1202*aca3beaaSApple OSS Distributions */ 1203*aca3beaaSApple OSS Distributions #define DLT_IEEE802_15_4_NOFCS 230 1204*aca3beaaSApple OSS Distributions 1205*aca3beaaSApple OSS Distributions /* 1206*aca3beaaSApple OSS Distributions * Raw D-Bus: 1207*aca3beaaSApple OSS Distributions * 1208*aca3beaaSApple OSS Distributions * http://www.freedesktop.org/wiki/Software/dbus 1209*aca3beaaSApple OSS Distributions * 1210*aca3beaaSApple OSS Distributions * messages: 1211*aca3beaaSApple OSS Distributions * 1212*aca3beaaSApple OSS Distributions * http://dbus.freedesktop.org/doc/dbus-specification.html#message-protocol-messages 1213*aca3beaaSApple OSS Distributions * 1214*aca3beaaSApple OSS Distributions * starting with the endianness flag, followed by the message type, etc., 1215*aca3beaaSApple OSS Distributions * but without the authentication handshake before the message sequence: 1216*aca3beaaSApple OSS Distributions * 1217*aca3beaaSApple OSS Distributions * http://dbus.freedesktop.org/doc/dbus-specification.html#auth-protocol 1218*aca3beaaSApple OSS Distributions * 1219*aca3beaaSApple OSS Distributions * Requested by Martin Vidner <[email protected]>. 1220*aca3beaaSApple OSS Distributions */ 1221*aca3beaaSApple OSS Distributions #define DLT_DBUS 231 1222*aca3beaaSApple OSS Distributions 1223*aca3beaaSApple OSS Distributions /* 1224*aca3beaaSApple OSS Distributions * Juniper-private data link type, as per request from 1225*aca3beaaSApple OSS Distributions * Hannes Gredler <[email protected]>. 1226*aca3beaaSApple OSS Distributions */ 1227*aca3beaaSApple OSS Distributions #define DLT_JUNIPER_VS 232 1228*aca3beaaSApple OSS Distributions #define DLT_JUNIPER_SRX_E2E 233 1229*aca3beaaSApple OSS Distributions #define DLT_JUNIPER_FIBRECHANNEL 234 1230*aca3beaaSApple OSS Distributions 1231*aca3beaaSApple OSS Distributions /* 1232*aca3beaaSApple OSS Distributions * DVB-CI (DVB Common Interface for communication between a PC Card 1233*aca3beaaSApple OSS Distributions * module and a DVB receiver). See 1234*aca3beaaSApple OSS Distributions * 1235*aca3beaaSApple OSS Distributions * http://www.kaiser.cx/pcap-dvbci.html 1236*aca3beaaSApple OSS Distributions * 1237*aca3beaaSApple OSS Distributions * for the specification. 1238*aca3beaaSApple OSS Distributions * 1239*aca3beaaSApple OSS Distributions * Requested by Martin Kaiser <[email protected]>. 1240*aca3beaaSApple OSS Distributions */ 1241*aca3beaaSApple OSS Distributions #define DLT_DVB_CI 235 1242*aca3beaaSApple OSS Distributions 1243*aca3beaaSApple OSS Distributions /* 1244*aca3beaaSApple OSS Distributions * Variant of 3GPP TS 27.010 multiplexing protocol (similar to, but 1245*aca3beaaSApple OSS Distributions * *not* the same as, 27.010). Requested by Hans-Christoph Schemmel 1246*aca3beaaSApple OSS Distributions * <[email protected]>. 1247*aca3beaaSApple OSS Distributions */ 1248*aca3beaaSApple OSS Distributions #define DLT_MUX27010 236 1249*aca3beaaSApple OSS Distributions 1250*aca3beaaSApple OSS Distributions /* 1251*aca3beaaSApple OSS Distributions * STANAG 5066 D_PDUs. Requested by M. Baris Demiray 1252*aca3beaaSApple OSS Distributions * <[email protected]>. 1253*aca3beaaSApple OSS Distributions */ 1254*aca3beaaSApple OSS Distributions #define DLT_STANAG_5066_D_PDU 237 1255*aca3beaaSApple OSS Distributions 1256*aca3beaaSApple OSS Distributions /* 1257*aca3beaaSApple OSS Distributions * Juniper-private data link type, as per request from 1258*aca3beaaSApple OSS Distributions * Hannes Gredler <[email protected]>. 1259*aca3beaaSApple OSS Distributions */ 1260*aca3beaaSApple OSS Distributions #define DLT_JUNIPER_ATM_CEMIC 238 1261*aca3beaaSApple OSS Distributions 1262*aca3beaaSApple OSS Distributions /* 1263*aca3beaaSApple OSS Distributions * NetFilter LOG messages 1264*aca3beaaSApple OSS Distributions * (payload of netlink NFNL_SUBSYS_ULOG/NFULNL_MSG_PACKET packets) 1265*aca3beaaSApple OSS Distributions * 1266*aca3beaaSApple OSS Distributions * Requested by Jakub Zawadzki <[email protected]> 1267*aca3beaaSApple OSS Distributions */ 1268*aca3beaaSApple OSS Distributions #define DLT_NFLOG 239 1269*aca3beaaSApple OSS Distributions 1270*aca3beaaSApple OSS Distributions /* 1271*aca3beaaSApple OSS Distributions * Hilscher Gesellschaft fuer Systemautomation mbH link-layer type 1272*aca3beaaSApple OSS Distributions * for Ethernet packets with a 4-byte pseudo-header and always 1273*aca3beaaSApple OSS Distributions * with the payload including the FCS, as supplied by their 1274*aca3beaaSApple OSS Distributions * netANALYZER hardware and software. 1275*aca3beaaSApple OSS Distributions * 1276*aca3beaaSApple OSS Distributions * Requested by Holger P. Frommer <[email protected]> 1277*aca3beaaSApple OSS Distributions */ 1278*aca3beaaSApple OSS Distributions #define DLT_NETANALYZER 240 1279*aca3beaaSApple OSS Distributions 1280*aca3beaaSApple OSS Distributions /* 1281*aca3beaaSApple OSS Distributions * Hilscher Gesellschaft fuer Systemautomation mbH link-layer type 1282*aca3beaaSApple OSS Distributions * for Ethernet packets with a 4-byte pseudo-header and FCS and 1283*aca3beaaSApple OSS Distributions * with the Ethernet header preceded by 7 bytes of preamble and 1284*aca3beaaSApple OSS Distributions * 1 byte of SFD, as supplied by their netANALYZER hardware and 1285*aca3beaaSApple OSS Distributions * software. 1286*aca3beaaSApple OSS Distributions * 1287*aca3beaaSApple OSS Distributions * Requested by Holger P. Frommer <[email protected]> 1288*aca3beaaSApple OSS Distributions */ 1289*aca3beaaSApple OSS Distributions #define DLT_NETANALYZER_TRANSPARENT 241 1290*aca3beaaSApple OSS Distributions 1291*aca3beaaSApple OSS Distributions /* 1292*aca3beaaSApple OSS Distributions * IP-over-Infiniband, as specified by RFC 4391. 1293*aca3beaaSApple OSS Distributions * 1294*aca3beaaSApple OSS Distributions * Requested by Petr Sumbera <[email protected]>. 1295*aca3beaaSApple OSS Distributions */ 1296*aca3beaaSApple OSS Distributions #define DLT_IPOIB 242 1297*aca3beaaSApple OSS Distributions 1298*aca3beaaSApple OSS Distributions /* 1299*aca3beaaSApple OSS Distributions * MPEG-2 transport stream (ISO 13818-1/ITU-T H.222.0). 1300*aca3beaaSApple OSS Distributions * 1301*aca3beaaSApple OSS Distributions * Requested by Guy Martin <[email protected]>. 1302*aca3beaaSApple OSS Distributions */ 1303*aca3beaaSApple OSS Distributions #define DLT_MPEG_2_TS 243 1304*aca3beaaSApple OSS Distributions 1305*aca3beaaSApple OSS Distributions /* 1306*aca3beaaSApple OSS Distributions * ng4T GmbH's UMTS Iub/Iur-over-ATM and Iub/Iur-over-IP format as 1307*aca3beaaSApple OSS Distributions * used by their ng40 protocol tester. 1308*aca3beaaSApple OSS Distributions * 1309*aca3beaaSApple OSS Distributions * Requested by Jens Grimmer <[email protected]>. 1310*aca3beaaSApple OSS Distributions */ 1311*aca3beaaSApple OSS Distributions #define DLT_NG40 244 1312*aca3beaaSApple OSS Distributions 1313*aca3beaaSApple OSS Distributions /* 1314*aca3beaaSApple OSS Distributions * Pseudo-header giving adapter number and flags, followed by an NFC 1315*aca3beaaSApple OSS Distributions * (Near-Field Communications) Logical Link Control Protocol (LLCP) PDU, 1316*aca3beaaSApple OSS Distributions * as specified by NFC Forum Logical Link Control Protocol Technical 1317*aca3beaaSApple OSS Distributions * Specification LLCP 1.1. 1318*aca3beaaSApple OSS Distributions * 1319*aca3beaaSApple OSS Distributions * Requested by Mike Wakerly <[email protected]>. 1320*aca3beaaSApple OSS Distributions */ 1321*aca3beaaSApple OSS Distributions #define DLT_NFC_LLCP 245 1322*aca3beaaSApple OSS Distributions 1323*aca3beaaSApple OSS Distributions /* 1324*aca3beaaSApple OSS Distributions * USB packets, beginning with a Darwin (macOS, etc.) USB header. 1325*aca3beaaSApple OSS Distributions */ 1326*aca3beaaSApple OSS Distributions #define DLT_USB_DARWIN 266 1327*aca3beaaSApple OSS Distributions 1328*aca3beaaSApple OSS Distributions #define DLT_MATCHING_MAX 266 /* highest value in the "matching" range */ 1329*aca3beaaSApple OSS Distributions 1330*aca3beaaSApple OSS Distributions #if !defined(DRIVERKIT) 1331*aca3beaaSApple OSS Distributions /* 1332*aca3beaaSApple OSS Distributions * The instruction encodings. 1333*aca3beaaSApple OSS Distributions */ 1334*aca3beaaSApple OSS Distributions /* instruction classes */ 1335*aca3beaaSApple OSS Distributions #define BPF_CLASS(code) ((code) & 0x07) 1336*aca3beaaSApple OSS Distributions #define BPF_LD 0x00 1337*aca3beaaSApple OSS Distributions #define BPF_LDX 0x01 1338*aca3beaaSApple OSS Distributions #define BPF_ST 0x02 1339*aca3beaaSApple OSS Distributions #define BPF_STX 0x03 1340*aca3beaaSApple OSS Distributions #define BPF_ALU 0x04 1341*aca3beaaSApple OSS Distributions #define BPF_JMP 0x05 1342*aca3beaaSApple OSS Distributions #define BPF_RET 0x06 1343*aca3beaaSApple OSS Distributions #define BPF_MISC 0x07 1344*aca3beaaSApple OSS Distributions 1345*aca3beaaSApple OSS Distributions /* ld/ldx fields */ 1346*aca3beaaSApple OSS Distributions #define BPF_SIZE(code) ((code) & 0x18) 1347*aca3beaaSApple OSS Distributions #define BPF_W 0x00 1348*aca3beaaSApple OSS Distributions #define BPF_H 0x08 1349*aca3beaaSApple OSS Distributions #define BPF_B 0x10 1350*aca3beaaSApple OSS Distributions #define BPF_MODE(code) ((code) & 0xe0) 1351*aca3beaaSApple OSS Distributions #define BPF_IMM 0x00 1352*aca3beaaSApple OSS Distributions #define BPF_ABS 0x20 1353*aca3beaaSApple OSS Distributions #define BPF_IND 0x40 1354*aca3beaaSApple OSS Distributions #define BPF_MEM 0x60 1355*aca3beaaSApple OSS Distributions #define BPF_LEN 0x80 1356*aca3beaaSApple OSS Distributions #define BPF_MSH 0xa0 1357*aca3beaaSApple OSS Distributions 1358*aca3beaaSApple OSS Distributions /* alu/jmp fields */ 1359*aca3beaaSApple OSS Distributions #define BPF_OP(code) ((code) & 0xf0) 1360*aca3beaaSApple OSS Distributions #define BPF_ADD 0x00 1361*aca3beaaSApple OSS Distributions #define BPF_SUB 0x10 1362*aca3beaaSApple OSS Distributions #define BPF_MUL 0x20 1363*aca3beaaSApple OSS Distributions #define BPF_DIV 0x30 1364*aca3beaaSApple OSS Distributions #define BPF_OR 0x40 1365*aca3beaaSApple OSS Distributions #define BPF_AND 0x50 1366*aca3beaaSApple OSS Distributions #define BPF_LSH 0x60 1367*aca3beaaSApple OSS Distributions #define BPF_RSH 0x70 1368*aca3beaaSApple OSS Distributions #define BPF_NEG 0x80 1369*aca3beaaSApple OSS Distributions #define BPF_JA 0x00 1370*aca3beaaSApple OSS Distributions #define BPF_JEQ 0x10 1371*aca3beaaSApple OSS Distributions #define BPF_JGT 0x20 1372*aca3beaaSApple OSS Distributions #define BPF_JGE 0x30 1373*aca3beaaSApple OSS Distributions #define BPF_JSET 0x40 1374*aca3beaaSApple OSS Distributions #define BPF_SRC(code) ((code) & 0x08) 1375*aca3beaaSApple OSS Distributions #define BPF_K 0x00 1376*aca3beaaSApple OSS Distributions #define BPF_X 0x08 1377*aca3beaaSApple OSS Distributions 1378*aca3beaaSApple OSS Distributions /* ret - BPF_K and BPF_X also apply */ 1379*aca3beaaSApple OSS Distributions #define BPF_RVAL(code) ((code) & 0x18) 1380*aca3beaaSApple OSS Distributions #define BPF_A 0x10 1381*aca3beaaSApple OSS Distributions 1382*aca3beaaSApple OSS Distributions /* misc */ 1383*aca3beaaSApple OSS Distributions #define BPF_MISCOP(code) ((code) & 0xf8) 1384*aca3beaaSApple OSS Distributions #define BPF_TAX 0x00 1385*aca3beaaSApple OSS Distributions #define BPF_TXA 0x80 1386*aca3beaaSApple OSS Distributions 1387*aca3beaaSApple OSS Distributions /* 1388*aca3beaaSApple OSS Distributions * Number of scratch memory words (for BPF_LD|BPF_MEM and BPF_ST). 1389*aca3beaaSApple OSS Distributions */ 1390*aca3beaaSApple OSS Distributions #define BPF_MEMWORDS 16 1391*aca3beaaSApple OSS Distributions 1392*aca3beaaSApple OSS Distributions /* 1393*aca3beaaSApple OSS Distributions * The instruction data structure. 1394*aca3beaaSApple OSS Distributions */ 1395*aca3beaaSApple OSS Distributions struct bpf_insn { 1396*aca3beaaSApple OSS Distributions u_short code; 1397*aca3beaaSApple OSS Distributions u_char jt; 1398*aca3beaaSApple OSS Distributions u_char jf; 1399*aca3beaaSApple OSS Distributions bpf_u_int32 k; 1400*aca3beaaSApple OSS Distributions }; 1401*aca3beaaSApple OSS Distributions 1402*aca3beaaSApple OSS Distributions /* 1403*aca3beaaSApple OSS Distributions * Macros for insn array initializers. 1404*aca3beaaSApple OSS Distributions */ 1405*aca3beaaSApple OSS Distributions #define BPF_STMT(code, k) { (u_short)(code), 0, 0, k } 1406*aca3beaaSApple OSS Distributions #define BPF_JUMP(code, k, jt, jf) { (u_short)(code), jt, jf, k } 1407*aca3beaaSApple OSS Distributions 1408*aca3beaaSApple OSS Distributions #pragma pack(4) 1409*aca3beaaSApple OSS Distributions 1410*aca3beaaSApple OSS Distributions /* 1411*aca3beaaSApple OSS Distributions * Structure to retrieve available DLTs for the interface. 1412*aca3beaaSApple OSS Distributions */ 1413*aca3beaaSApple OSS Distributions struct bpf_dltlist { 1414*aca3beaaSApple OSS Distributions u_int32_t bfl_len; /* number of bfd_list array */ 1415*aca3beaaSApple OSS Distributions union { 1416*aca3beaaSApple OSS Distributions u_int32_t *bflu_list; /* array of DLTs */ 1417*aca3beaaSApple OSS Distributions u_int64_t bflu_pad; 1418*aca3beaaSApple OSS Distributions } bfl_u; 1419*aca3beaaSApple OSS Distributions }; 1420*aca3beaaSApple OSS Distributions #define bfl_list bfl_u.bflu_list 1421*aca3beaaSApple OSS Distributions 1422*aca3beaaSApple OSS Distributions #pragma pack() 1423*aca3beaaSApple OSS Distributions 1424*aca3beaaSApple OSS Distributions #ifdef KERNEL_PRIVATE 1425*aca3beaaSApple OSS Distributions #define BPF_MIN_PKT_SIZE 40 1426*aca3beaaSApple OSS Distributions #define PORT_DNS 53 1427*aca3beaaSApple OSS Distributions #define PORT_BOOTPS 67 1428*aca3beaaSApple OSS Distributions #define PORT_BOOTPC 68 1429*aca3beaaSApple OSS Distributions #define PORT_ISAKMP 500 1430*aca3beaaSApple OSS Distributions #define PORT_ISAKMP_NATT 4500 /* rfc3948 */ 1431*aca3beaaSApple OSS Distributions 1432*aca3beaaSApple OSS Distributions /* Forward declerations */ 1433*aca3beaaSApple OSS Distributions struct ifnet; 1434*aca3beaaSApple OSS Distributions struct mbuf; 1435*aca3beaaSApple OSS Distributions 1436*aca3beaaSApple OSS Distributions #define BPF_PACKET_TYPE_MBUF 0 1437*aca3beaaSApple OSS Distributions #if SKYWALK 1438*aca3beaaSApple OSS Distributions #define BPF_PACKET_TYPE_PKT 1 1439*aca3beaaSApple OSS Distributions #include <skywalk/os_skywalk.h> 1440*aca3beaaSApple OSS Distributions #endif /* SKYWALK */ 1441*aca3beaaSApple OSS Distributions 1442*aca3beaaSApple OSS Distributions struct bpf_packet { 1443*aca3beaaSApple OSS Distributions int bpfp_type; 1444*aca3beaaSApple OSS Distributions void * bpfp_header; /* optional */ 1445*aca3beaaSApple OSS Distributions size_t bpfp_header_length; 1446*aca3beaaSApple OSS Distributions union { 1447*aca3beaaSApple OSS Distributions struct mbuf *bpfpu_mbuf; 1448*aca3beaaSApple OSS Distributions void * bpfpu_ptr; 1449*aca3beaaSApple OSS Distributions #if SKYWALK 1450*aca3beaaSApple OSS Distributions kern_packet_t bpfpu_pkt; 1451*aca3beaaSApple OSS Distributions #define bpfp_pkt bpfp_u.bpfpu_pkt 1452*aca3beaaSApple OSS Distributions #endif /* SKYWALK */ 1453*aca3beaaSApple OSS Distributions } bpfp_u; 1454*aca3beaaSApple OSS Distributions #define bpfp_mbuf bpfp_u.bpfpu_mbuf 1455*aca3beaaSApple OSS Distributions #define bpfp_ptr bpfp_u.bpfpu_ptr 1456*aca3beaaSApple OSS Distributions size_t bpfp_total_length; /* length including optional header */ 1457*aca3beaaSApple OSS Distributions }; 1458*aca3beaaSApple OSS Distributions 1459*aca3beaaSApple OSS Distributions extern int bpf_validate(const struct bpf_insn *, int); 1460*aca3beaaSApple OSS Distributions extern void bpfdetach(struct ifnet *); 1461*aca3beaaSApple OSS Distributions extern void bpfilterattach(int); 1462*aca3beaaSApple OSS Distributions extern u_int bpf_filter(const struct bpf_insn *, u_char *, u_int, u_int); 1463*aca3beaaSApple OSS Distributions #endif /* KERNEL_PRIVATE */ 1464*aca3beaaSApple OSS Distributions 1465*aca3beaaSApple OSS Distributions #endif /* !defined(DRIVERKIT) */ 1466*aca3beaaSApple OSS Distributions 1467*aca3beaaSApple OSS Distributions #if defined(DRIVERKIT) || defined(KERNEL) 1468*aca3beaaSApple OSS Distributions #ifndef BPF_TAP_MODE_T 1469*aca3beaaSApple OSS Distributions #define BPF_TAP_MODE_T 1470*aca3beaaSApple OSS Distributions /*! 1471*aca3beaaSApple OSS Distributions * @enum BPF tap mode 1472*aca3beaaSApple OSS Distributions * @abstract Constants defining interface families. 1473*aca3beaaSApple OSS Distributions * @constant BPF_MODE_DISABLED Disable bpf. 1474*aca3beaaSApple OSS Distributions * @constant BPF_MODE_INPUT Enable input only. 1475*aca3beaaSApple OSS Distributions * @constant BPF_MODE_OUTPUT Enable output only. 1476*aca3beaaSApple OSS Distributions * @constant BPF_MODE_INPUT_OUTPUT Enable input and output. 1477*aca3beaaSApple OSS Distributions */ 1478*aca3beaaSApple OSS Distributions 1479*aca3beaaSApple OSS Distributions enum { 1480*aca3beaaSApple OSS Distributions BPF_MODE_DISABLED = 0, 1481*aca3beaaSApple OSS Distributions BPF_MODE_INPUT = 1, 1482*aca3beaaSApple OSS Distributions BPF_MODE_OUTPUT = 2, 1483*aca3beaaSApple OSS Distributions BPF_MODE_INPUT_OUTPUT = 3 1484*aca3beaaSApple OSS Distributions }; 1485*aca3beaaSApple OSS Distributions /*! 1486*aca3beaaSApple OSS Distributions * @typedef bpf_tap_mode 1487*aca3beaaSApple OSS Distributions * @abstract Mode for tapping. BPF_MODE_DISABLED/BPF_MODE_INPUT_OUTPUT etc. 1488*aca3beaaSApple OSS Distributions */ 1489*aca3beaaSApple OSS Distributions typedef uint32_t bpf_tap_mode; 1490*aca3beaaSApple OSS Distributions #endif /* !BPF_TAP_MODE_T */ 1491*aca3beaaSApple OSS Distributions #endif /* defined(DRIVERKIT) || defined(KERNEL) */ 1492*aca3beaaSApple OSS Distributions 1493*aca3beaaSApple OSS Distributions #ifdef KERNEL 1494*aca3beaaSApple OSS Distributions /*! 1495*aca3beaaSApple OSS Distributions * @typedef bpf_send_func 1496*aca3beaaSApple OSS Distributions * @discussion bpf_send_func is called when a bpf file descriptor is 1497*aca3beaaSApple OSS Distributions * used to send a raw packet on the interface. The mbuf and data 1498*aca3beaaSApple OSS Distributions * link type are specified. The callback is responsible for 1499*aca3beaaSApple OSS Distributions * releasing the mbuf whether or not it returns an error. 1500*aca3beaaSApple OSS Distributions * @param interface The interface the packet is being sent on. 1501*aca3beaaSApple OSS Distributions * @param data_link_type The data link type the bpf device is attached to. 1502*aca3beaaSApple OSS Distributions * @param packet The packet to be sent. 1503*aca3beaaSApple OSS Distributions */ 1504*aca3beaaSApple OSS Distributions typedef errno_t (*bpf_send_func)(ifnet_t interface, u_int32_t data_link_type, 1505*aca3beaaSApple OSS Distributions mbuf_t packet); 1506*aca3beaaSApple OSS Distributions 1507*aca3beaaSApple OSS Distributions /*! 1508*aca3beaaSApple OSS Distributions * @typedef bpf_tap_func 1509*aca3beaaSApple OSS Distributions * @discussion bpf_tap_func is called when the tap state of the 1510*aca3beaaSApple OSS Distributions * interface changes. This happens when a bpf device attaches to an 1511*aca3beaaSApple OSS Distributions * interface or detaches from an interface. The tap mode will join 1512*aca3beaaSApple OSS Distributions * together (bit or) the modes of all bpf devices using that 1513*aca3beaaSApple OSS Distributions * interface for that dlt. If you return an error from this 1514*aca3beaaSApple OSS Distributions * function, the bpf device attach attempt that triggered the tap 1515*aca3beaaSApple OSS Distributions * will fail. If this function was called bacuse the tap state was 1516*aca3beaaSApple OSS Distributions * decreasing (tap in or out is stopping), the error will be 1517*aca3beaaSApple OSS Distributions * ignored. 1518*aca3beaaSApple OSS Distributions * @param interface The interface being tapped. 1519*aca3beaaSApple OSS Distributions * @param data_link_type The data link type being tapped. 1520*aca3beaaSApple OSS Distributions * @param direction The direction of the tap. 1521*aca3beaaSApple OSS Distributions */ 1522*aca3beaaSApple OSS Distributions typedef errno_t (*bpf_tap_func)(ifnet_t interface, u_int32_t data_link_type, 1523*aca3beaaSApple OSS Distributions bpf_tap_mode direction); 1524*aca3beaaSApple OSS Distributions 1525*aca3beaaSApple OSS Distributions /*! 1526*aca3beaaSApple OSS Distributions * @function bpfattach 1527*aca3beaaSApple OSS Distributions * @discussion Registers an interface with BPF. This allows bpf devices 1528*aca3beaaSApple OSS Distributions * to attach to your interface to capture packets. Your interface 1529*aca3beaaSApple OSS Distributions * will be unregistered automatically when your interface is 1530*aca3beaaSApple OSS Distributions * detached. 1531*aca3beaaSApple OSS Distributions * @param interface The interface to register with BPF. 1532*aca3beaaSApple OSS Distributions * @param data_link_type The data link type of the interface. See the 1533*aca3beaaSApple OSS Distributions * DLT_* defines in bpf.h. 1534*aca3beaaSApple OSS Distributions * @param header_length The length, in bytes, of the data link header. 1535*aca3beaaSApple OSS Distributions */ 1536*aca3beaaSApple OSS Distributions extern void bpfattach(ifnet_t interface, u_int data_link_type, 1537*aca3beaaSApple OSS Distributions u_int header_length); 1538*aca3beaaSApple OSS Distributions 1539*aca3beaaSApple OSS Distributions /*! 1540*aca3beaaSApple OSS Distributions * @function bpf_attach 1541*aca3beaaSApple OSS Distributions * @discussion Registers an interface with BPF. This allows bpf devices 1542*aca3beaaSApple OSS Distributions * to attach to your interface to capture and transmit packets. 1543*aca3beaaSApple OSS Distributions * Your interface will be unregistered automatically when your 1544*aca3beaaSApple OSS Distributions * interface is detached. You may register multiple times with 1545*aca3beaaSApple OSS Distributions * different data link types. An 802.11 interface would use this to 1546*aca3beaaSApple OSS Distributions * allow clients to pick whether they want just an ethernet style 1547*aca3beaaSApple OSS Distributions * frame or the 802.11 wireless headers as well. The first dlt you 1548*aca3beaaSApple OSS Distributions * register will be considered the default. Any bpf device attaches 1549*aca3beaaSApple OSS Distributions * that do not specify a data link type will use the default. 1550*aca3beaaSApple OSS Distributions * @param interface The interface to register with BPF. 1551*aca3beaaSApple OSS Distributions * @param data_link_type The data link type of the interface. See the 1552*aca3beaaSApple OSS Distributions * DLT_* defines in bpf.h. 1553*aca3beaaSApple OSS Distributions * @param header_length The length, in bytes, of the data link header. 1554*aca3beaaSApple OSS Distributions * @param send See the bpf_send_func described above. 1555*aca3beaaSApple OSS Distributions * @param tap See the bpf_tap_func described above. 1556*aca3beaaSApple OSS Distributions */ 1557*aca3beaaSApple OSS Distributions extern errno_t bpf_attach(ifnet_t interface, u_int32_t data_link_type, 1558*aca3beaaSApple OSS Distributions u_int32_t header_length, bpf_send_func send, bpf_tap_func tap); 1559*aca3beaaSApple OSS Distributions 1560*aca3beaaSApple OSS Distributions /*! 1561*aca3beaaSApple OSS Distributions * @function bpf_tap_in 1562*aca3beaaSApple OSS Distributions * @discussion Call this function when your interface receives a 1563*aca3beaaSApple OSS Distributions * packet. This function will check if any bpf devices need a 1564*aca3beaaSApple OSS Distributions * a copy of the packet. 1565*aca3beaaSApple OSS Distributions * @param interface The interface the packet was received on. 1566*aca3beaaSApple OSS Distributions * @param dlt The data link type of the packet. 1567*aca3beaaSApple OSS Distributions * @param packet The packet received. 1568*aca3beaaSApple OSS Distributions * @param header An optional pointer to a header that will be prepended. 1569*aca3beaaSApple OSS Distributions * @param header_len If the header was specified, the length of the header. 1570*aca3beaaSApple OSS Distributions */ 1571*aca3beaaSApple OSS Distributions extern void bpf_tap_in(ifnet_t interface, u_int32_t dlt, mbuf_t packet, 1572*aca3beaaSApple OSS Distributions void *header, size_t header_len); 1573*aca3beaaSApple OSS Distributions 1574*aca3beaaSApple OSS Distributions /*! 1575*aca3beaaSApple OSS Distributions * @function bpf_tap_out 1576*aca3beaaSApple OSS Distributions * @discussion Call this function when your interface transmits a 1577*aca3beaaSApple OSS Distributions * packet. This function will check if any bpf devices need a 1578*aca3beaaSApple OSS Distributions * a copy of the packet. 1579*aca3beaaSApple OSS Distributions * @param interface The interface the packet was or will be transmitted on. 1580*aca3beaaSApple OSS Distributions * @param dlt The data link type of the packet. 1581*aca3beaaSApple OSS Distributions * @param packet The packet received. 1582*aca3beaaSApple OSS Distributions * @param header An optional pointer to a header that will be prepended. 1583*aca3beaaSApple OSS Distributions * @param header_len If the header was specified, the length of the header. 1584*aca3beaaSApple OSS Distributions */ 1585*aca3beaaSApple OSS Distributions extern void bpf_tap_out(ifnet_t interface, u_int32_t dlt, mbuf_t packet, 1586*aca3beaaSApple OSS Distributions void *header, size_t header_len); 1587*aca3beaaSApple OSS Distributions 1588*aca3beaaSApple OSS Distributions #if SKYWALK 1589*aca3beaaSApple OSS Distributions /*! 1590*aca3beaaSApple OSS Distributions * @function bpf_tap_packet_in 1591*aca3beaaSApple OSS Distributions * @discussion Call this function when your interface receives a 1592*aca3beaaSApple OSS Distributions * packet. This function will check if any bpf devices need a 1593*aca3beaaSApple OSS Distributions * a copy of the packet. 1594*aca3beaaSApple OSS Distributions * @param interface The interface the packet was received on. 1595*aca3beaaSApple OSS Distributions * @param dlt The data link type of the packet. 1596*aca3beaaSApple OSS Distributions * @param packet The packet received. 1597*aca3beaaSApple OSS Distributions * @param header An optional pointer to a header that will be prepended. 1598*aca3beaaSApple OSS Distributions * @param header_len If the header was specified, the length of the header. 1599*aca3beaaSApple OSS Distributions */ 1600*aca3beaaSApple OSS Distributions extern void bpf_tap_packet_in(ifnet_t interface, u_int32_t dlt, 1601*aca3beaaSApple OSS Distributions kern_packet_t packet, void *header, size_t header_len); 1602*aca3beaaSApple OSS Distributions 1603*aca3beaaSApple OSS Distributions /*! 1604*aca3beaaSApple OSS Distributions * @function bpf_tap_packet_out 1605*aca3beaaSApple OSS Distributions * @discussion Call this function when your interface transmits a 1606*aca3beaaSApple OSS Distributions * packet. This function will check if any bpf devices need a 1607*aca3beaaSApple OSS Distributions * a copy of the packet. 1608*aca3beaaSApple OSS Distributions * @param interface The interface the packet was or will be transmitted on. 1609*aca3beaaSApple OSS Distributions * @param dlt The data link type of the packet. 1610*aca3beaaSApple OSS Distributions * @param packet The packet received. 1611*aca3beaaSApple OSS Distributions * @param header An optional pointer to a header that will be prepended. 1612*aca3beaaSApple OSS Distributions * @param header_len If the header was specified, the length of the header. 1613*aca3beaaSApple OSS Distributions */ 1614*aca3beaaSApple OSS Distributions extern void bpf_tap_packet_out(ifnet_t interface, u_int32_t dlt, 1615*aca3beaaSApple OSS Distributions kern_packet_t packet, void *header, size_t header_len); 1616*aca3beaaSApple OSS Distributions 1617*aca3beaaSApple OSS Distributions #endif /* SKYWALK */ 1618*aca3beaaSApple OSS Distributions #endif /* KERNEL */ 1619*aca3beaaSApple OSS Distributions 1620*aca3beaaSApple OSS Distributions #endif /* _NET_BPF_H_ */ 1621