1*8b26181fSAndroid Build Coastguard Worker /*- 2*8b26181fSAndroid Build Coastguard Worker * Copyright (c) 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997 3*8b26181fSAndroid Build Coastguard Worker * The Regents of the University of California. All rights reserved. 4*8b26181fSAndroid Build Coastguard Worker * 5*8b26181fSAndroid Build Coastguard Worker * This code is derived from the Stanford/CMU enet packet filter, 6*8b26181fSAndroid Build Coastguard Worker * (net/enet.c) distributed as part of 4.3BSD, and code contributed 7*8b26181fSAndroid Build Coastguard Worker * to Berkeley by Steven McCanne and Van Jacobson both of Lawrence 8*8b26181fSAndroid Build Coastguard Worker * Berkeley Laboratory. 9*8b26181fSAndroid Build Coastguard Worker * 10*8b26181fSAndroid Build Coastguard Worker * Redistribution and use in source and binary forms, with or without 11*8b26181fSAndroid Build Coastguard Worker * modification, are permitted provided that the following conditions 12*8b26181fSAndroid Build Coastguard Worker * are met: 13*8b26181fSAndroid Build Coastguard Worker * 1. Redistributions of source code must retain the above copyright 14*8b26181fSAndroid Build Coastguard Worker * notice, this list of conditions and the following disclaimer. 15*8b26181fSAndroid Build Coastguard Worker * 2. Redistributions in binary form must reproduce the above copyright 16*8b26181fSAndroid Build Coastguard Worker * notice, this list of conditions and the following disclaimer in the 17*8b26181fSAndroid Build Coastguard Worker * documentation and/or other materials provided with the distribution. 18*8b26181fSAndroid Build Coastguard Worker * 3. Neither the name of the University nor the names of its contributors 19*8b26181fSAndroid Build Coastguard Worker * may be used to endorse or promote products derived from this software 20*8b26181fSAndroid Build Coastguard Worker * without specific prior written permission. 21*8b26181fSAndroid Build Coastguard Worker * 22*8b26181fSAndroid Build Coastguard Worker * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND 23*8b26181fSAndroid Build Coastguard Worker * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 24*8b26181fSAndroid Build Coastguard Worker * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 25*8b26181fSAndroid Build Coastguard Worker * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE 26*8b26181fSAndroid Build Coastguard Worker * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 27*8b26181fSAndroid Build Coastguard Worker * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 28*8b26181fSAndroid Build Coastguard Worker * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 29*8b26181fSAndroid Build Coastguard Worker * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 30*8b26181fSAndroid Build Coastguard Worker * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 31*8b26181fSAndroid Build Coastguard Worker * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 32*8b26181fSAndroid Build Coastguard Worker * SUCH DAMAGE. 33*8b26181fSAndroid Build Coastguard Worker * 34*8b26181fSAndroid Build Coastguard Worker * @(#)bpf.h 7.1 (Berkeley) 5/7/91 35*8b26181fSAndroid Build Coastguard Worker */ 36*8b26181fSAndroid Build Coastguard Worker 37*8b26181fSAndroid Build Coastguard Worker /* 38*8b26181fSAndroid Build Coastguard Worker * This is libpcap's cut-down version of bpf.h; it includes only 39*8b26181fSAndroid Build Coastguard Worker * the stuff needed for the code generator and the userland BPF 40*8b26181fSAndroid Build Coastguard Worker * interpreter, and the libpcap APIs for setting filters, etc.. 41*8b26181fSAndroid Build Coastguard Worker * 42*8b26181fSAndroid Build Coastguard Worker * "pcap-bpf.c" will include the native OS version, as it deals with 43*8b26181fSAndroid Build Coastguard Worker * the OS's BPF implementation. 44*8b26181fSAndroid Build Coastguard Worker * 45*8b26181fSAndroid Build Coastguard Worker * At least two programs found by Google Code Search explicitly includes 46*8b26181fSAndroid Build Coastguard Worker * <pcap/bpf.h> (even though <pcap.h>/<pcap/pcap.h> includes it for you), 47*8b26181fSAndroid Build Coastguard Worker * so moving that stuff to <pcap/pcap.h> would break the build for some 48*8b26181fSAndroid Build Coastguard Worker * programs. 49*8b26181fSAndroid Build Coastguard Worker */ 50*8b26181fSAndroid Build Coastguard Worker 51*8b26181fSAndroid Build Coastguard Worker /* 52*8b26181fSAndroid Build Coastguard Worker * If we've already included <net/bpf.h>, don't re-define this stuff. 53*8b26181fSAndroid Build Coastguard Worker * We assume BSD-style multiple-include protection in <net/bpf.h>, 54*8b26181fSAndroid Build Coastguard Worker * which is true of all but the oldest versions of FreeBSD and NetBSD, 55*8b26181fSAndroid Build Coastguard Worker * or Tru64 UNIX-style multiple-include protection (or, at least, 56*8b26181fSAndroid Build Coastguard Worker * Tru64 UNIX 5.x-style; I don't have earlier versions available to check), 57*8b26181fSAndroid Build Coastguard Worker * or AIX-style multiple-include protection (or, at least, AIX 5.x-style; 58*8b26181fSAndroid Build Coastguard Worker * I don't have earlier versions available to check), or QNX-style 59*8b26181fSAndroid Build Coastguard Worker * multiple-include protection (as per GitHub pull request #394). 60*8b26181fSAndroid Build Coastguard Worker * 61*8b26181fSAndroid Build Coastguard Worker * We trust that they will define structures and macros and types in 62*8b26181fSAndroid Build Coastguard Worker * a fashion that's source-compatible and binary-compatible with our 63*8b26181fSAndroid Build Coastguard Worker * definitions. 64*8b26181fSAndroid Build Coastguard Worker * 65*8b26181fSAndroid Build Coastguard Worker * We do not check for BPF_MAJOR_VERSION, as that's defined by 66*8b26181fSAndroid Build Coastguard Worker * <linux/filter.h>, which is directly or indirectly included in some 67*8b26181fSAndroid Build Coastguard Worker * programs that also include pcap.h, and <linux/filter.h> doesn't 68*8b26181fSAndroid Build Coastguard Worker * define stuff we need. We *do* protect against <linux/filter.h> 69*8b26181fSAndroid Build Coastguard Worker * defining various macros for BPF code itself; <linux/filter.h> says 70*8b26181fSAndroid Build Coastguard Worker * 71*8b26181fSAndroid Build Coastguard Worker * Try and keep these values and structures similar to BSD, especially 72*8b26181fSAndroid Build Coastguard Worker * the BPF code definitions which need to match so you can share filters 73*8b26181fSAndroid Build Coastguard Worker * 74*8b26181fSAndroid Build Coastguard Worker * so we trust that it will define them in a fashion that's source-compatible 75*8b26181fSAndroid Build Coastguard Worker * and binary-compatible with our definitions. 76*8b26181fSAndroid Build Coastguard Worker * 77*8b26181fSAndroid Build Coastguard Worker * This also provides our own multiple-include protection. 78*8b26181fSAndroid Build Coastguard Worker */ 79*8b26181fSAndroid Build Coastguard Worker #if !defined(_NET_BPF_H_) && !defined(_NET_BPF_H_INCLUDED) && !defined(_BPF_H_) && !defined(_H_BPF) && !defined(lib_pcap_bpf_h) 80*8b26181fSAndroid Build Coastguard Worker #define lib_pcap_bpf_h 81*8b26181fSAndroid Build Coastguard Worker 82*8b26181fSAndroid Build Coastguard Worker #include <pcap/funcattrs.h> 83*8b26181fSAndroid Build Coastguard Worker #include <pcap/dlt.h> 84*8b26181fSAndroid Build Coastguard Worker 85*8b26181fSAndroid Build Coastguard Worker #ifdef __cplusplus 86*8b26181fSAndroid Build Coastguard Worker extern "C" { 87*8b26181fSAndroid Build Coastguard Worker #endif 88*8b26181fSAndroid Build Coastguard Worker 89*8b26181fSAndroid Build Coastguard Worker /* BSD style release date */ 90*8b26181fSAndroid Build Coastguard Worker #define BPF_RELEASE 199606 91*8b26181fSAndroid Build Coastguard Worker 92*8b26181fSAndroid Build Coastguard Worker #ifdef MSDOS /* must be 32-bit */ 93*8b26181fSAndroid Build Coastguard Worker typedef long bpf_int32; 94*8b26181fSAndroid Build Coastguard Worker typedef unsigned long bpf_u_int32; 95*8b26181fSAndroid Build Coastguard Worker #else 96*8b26181fSAndroid Build Coastguard Worker typedef int bpf_int32; 97*8b26181fSAndroid Build Coastguard Worker typedef u_int bpf_u_int32; 98*8b26181fSAndroid Build Coastguard Worker #endif 99*8b26181fSAndroid Build Coastguard Worker 100*8b26181fSAndroid Build Coastguard Worker /* 101*8b26181fSAndroid Build Coastguard Worker * Alignment macros. BPF_WORDALIGN rounds up to the next 102*8b26181fSAndroid Build Coastguard Worker * even multiple of BPF_ALIGNMENT. 103*8b26181fSAndroid Build Coastguard Worker * 104*8b26181fSAndroid Build Coastguard Worker * Tcpdump's print-pflog.c uses this, so we define it here. 105*8b26181fSAndroid Build Coastguard Worker */ 106*8b26181fSAndroid Build Coastguard Worker #ifndef __NetBSD__ 107*8b26181fSAndroid Build Coastguard Worker #define BPF_ALIGNMENT sizeof(bpf_int32) 108*8b26181fSAndroid Build Coastguard Worker #else 109*8b26181fSAndroid Build Coastguard Worker #define BPF_ALIGNMENT sizeof(long) 110*8b26181fSAndroid Build Coastguard Worker #endif 111*8b26181fSAndroid Build Coastguard Worker #define BPF_WORDALIGN(x) (((x)+(BPF_ALIGNMENT-1))&~(BPF_ALIGNMENT-1)) 112*8b26181fSAndroid Build Coastguard Worker 113*8b26181fSAndroid Build Coastguard Worker /* 114*8b26181fSAndroid Build Coastguard Worker * Structure for "pcap_compile()", "pcap_setfilter()", etc.. 115*8b26181fSAndroid Build Coastguard Worker */ 116*8b26181fSAndroid Build Coastguard Worker struct bpf_program { 117*8b26181fSAndroid Build Coastguard Worker u_int bf_len; 118*8b26181fSAndroid Build Coastguard Worker struct bpf_insn *bf_insns; 119*8b26181fSAndroid Build Coastguard Worker }; 120*8b26181fSAndroid Build Coastguard Worker 121*8b26181fSAndroid Build Coastguard Worker /* 122*8b26181fSAndroid Build Coastguard Worker * The instruction encodings. 123*8b26181fSAndroid Build Coastguard Worker * 124*8b26181fSAndroid Build Coastguard Worker * Please inform [email protected] if you use any 125*8b26181fSAndroid Build Coastguard Worker * of the reserved values, so that we can note that they're used 126*8b26181fSAndroid Build Coastguard Worker * (and perhaps implement it in the reference BPF implementation 127*8b26181fSAndroid Build Coastguard Worker * and encourage its implementation elsewhere). 128*8b26181fSAndroid Build Coastguard Worker */ 129*8b26181fSAndroid Build Coastguard Worker 130*8b26181fSAndroid Build Coastguard Worker /* 131*8b26181fSAndroid Build Coastguard Worker * The upper 8 bits of the opcode aren't used. BSD/OS used 0x8000. 132*8b26181fSAndroid Build Coastguard Worker */ 133*8b26181fSAndroid Build Coastguard Worker 134*8b26181fSAndroid Build Coastguard Worker /* instruction classes */ 135*8b26181fSAndroid Build Coastguard Worker #define BPF_CLASS(code) ((code) & 0x07) 136*8b26181fSAndroid Build Coastguard Worker #define BPF_LD 0x00 137*8b26181fSAndroid Build Coastguard Worker #define BPF_LDX 0x01 138*8b26181fSAndroid Build Coastguard Worker #define BPF_ST 0x02 139*8b26181fSAndroid Build Coastguard Worker #define BPF_STX 0x03 140*8b26181fSAndroid Build Coastguard Worker #define BPF_ALU 0x04 141*8b26181fSAndroid Build Coastguard Worker #define BPF_JMP 0x05 142*8b26181fSAndroid Build Coastguard Worker #define BPF_RET 0x06 143*8b26181fSAndroid Build Coastguard Worker #define BPF_MISC 0x07 144*8b26181fSAndroid Build Coastguard Worker 145*8b26181fSAndroid Build Coastguard Worker /* ld/ldx fields */ 146*8b26181fSAndroid Build Coastguard Worker #define BPF_SIZE(code) ((code) & 0x18) 147*8b26181fSAndroid Build Coastguard Worker #define BPF_W 0x00 148*8b26181fSAndroid Build Coastguard Worker #define BPF_H 0x08 149*8b26181fSAndroid Build Coastguard Worker #define BPF_B 0x10 150*8b26181fSAndroid Build Coastguard Worker /* 0x18 reserved; used by BSD/OS */ 151*8b26181fSAndroid Build Coastguard Worker #define BPF_MODE(code) ((code) & 0xe0) 152*8b26181fSAndroid Build Coastguard Worker #define BPF_IMM 0x00 153*8b26181fSAndroid Build Coastguard Worker #define BPF_ABS 0x20 154*8b26181fSAndroid Build Coastguard Worker #define BPF_IND 0x40 155*8b26181fSAndroid Build Coastguard Worker #define BPF_MEM 0x60 156*8b26181fSAndroid Build Coastguard Worker #define BPF_LEN 0x80 157*8b26181fSAndroid Build Coastguard Worker #define BPF_MSH 0xa0 158*8b26181fSAndroid Build Coastguard Worker /* 0xc0 reserved; used by BSD/OS */ 159*8b26181fSAndroid Build Coastguard Worker /* 0xe0 reserved; used by BSD/OS */ 160*8b26181fSAndroid Build Coastguard Worker 161*8b26181fSAndroid Build Coastguard Worker /* alu/jmp fields */ 162*8b26181fSAndroid Build Coastguard Worker #define BPF_OP(code) ((code) & 0xf0) 163*8b26181fSAndroid Build Coastguard Worker #define BPF_ADD 0x00 164*8b26181fSAndroid Build Coastguard Worker #define BPF_SUB 0x10 165*8b26181fSAndroid Build Coastguard Worker #define BPF_MUL 0x20 166*8b26181fSAndroid Build Coastguard Worker #define BPF_DIV 0x30 167*8b26181fSAndroid Build Coastguard Worker #define BPF_OR 0x40 168*8b26181fSAndroid Build Coastguard Worker #define BPF_AND 0x50 169*8b26181fSAndroid Build Coastguard Worker #define BPF_LSH 0x60 170*8b26181fSAndroid Build Coastguard Worker #define BPF_RSH 0x70 171*8b26181fSAndroid Build Coastguard Worker #define BPF_NEG 0x80 172*8b26181fSAndroid Build Coastguard Worker #define BPF_MOD 0x90 173*8b26181fSAndroid Build Coastguard Worker #define BPF_XOR 0xa0 174*8b26181fSAndroid Build Coastguard Worker /* 0xb0 reserved */ 175*8b26181fSAndroid Build Coastguard Worker /* 0xc0 reserved */ 176*8b26181fSAndroid Build Coastguard Worker /* 0xd0 reserved */ 177*8b26181fSAndroid Build Coastguard Worker /* 0xe0 reserved */ 178*8b26181fSAndroid Build Coastguard Worker /* 0xf0 reserved */ 179*8b26181fSAndroid Build Coastguard Worker 180*8b26181fSAndroid Build Coastguard Worker #define BPF_JA 0x00 181*8b26181fSAndroid Build Coastguard Worker #define BPF_JEQ 0x10 182*8b26181fSAndroid Build Coastguard Worker #define BPF_JGT 0x20 183*8b26181fSAndroid Build Coastguard Worker #define BPF_JGE 0x30 184*8b26181fSAndroid Build Coastguard Worker #define BPF_JSET 0x40 185*8b26181fSAndroid Build Coastguard Worker /* 0x50 reserved; used on BSD/OS */ 186*8b26181fSAndroid Build Coastguard Worker /* 0x60 reserved */ 187*8b26181fSAndroid Build Coastguard Worker /* 0x70 reserved */ 188*8b26181fSAndroid Build Coastguard Worker /* 0x80 reserved */ 189*8b26181fSAndroid Build Coastguard Worker /* 0x90 reserved */ 190*8b26181fSAndroid Build Coastguard Worker /* 0xa0 reserved */ 191*8b26181fSAndroid Build Coastguard Worker /* 0xb0 reserved */ 192*8b26181fSAndroid Build Coastguard Worker /* 0xc0 reserved */ 193*8b26181fSAndroid Build Coastguard Worker /* 0xd0 reserved */ 194*8b26181fSAndroid Build Coastguard Worker /* 0xe0 reserved */ 195*8b26181fSAndroid Build Coastguard Worker /* 0xf0 reserved */ 196*8b26181fSAndroid Build Coastguard Worker #define BPF_SRC(code) ((code) & 0x08) 197*8b26181fSAndroid Build Coastguard Worker #define BPF_K 0x00 198*8b26181fSAndroid Build Coastguard Worker #define BPF_X 0x08 199*8b26181fSAndroid Build Coastguard Worker 200*8b26181fSAndroid Build Coastguard Worker /* ret - BPF_K and BPF_X also apply */ 201*8b26181fSAndroid Build Coastguard Worker #define BPF_RVAL(code) ((code) & 0x18) 202*8b26181fSAndroid Build Coastguard Worker #define BPF_A 0x10 203*8b26181fSAndroid Build Coastguard Worker /* 0x18 reserved */ 204*8b26181fSAndroid Build Coastguard Worker 205*8b26181fSAndroid Build Coastguard Worker /* misc */ 206*8b26181fSAndroid Build Coastguard Worker #define BPF_MISCOP(code) ((code) & 0xf8) 207*8b26181fSAndroid Build Coastguard Worker #define BPF_TAX 0x00 208*8b26181fSAndroid Build Coastguard Worker /* 0x08 reserved */ 209*8b26181fSAndroid Build Coastguard Worker /* 0x10 reserved */ 210*8b26181fSAndroid Build Coastguard Worker /* 0x18 reserved */ 211*8b26181fSAndroid Build Coastguard Worker /* #define BPF_COP 0x20 NetBSD "coprocessor" extensions */ 212*8b26181fSAndroid Build Coastguard Worker /* 0x28 reserved */ 213*8b26181fSAndroid Build Coastguard Worker /* 0x30 reserved */ 214*8b26181fSAndroid Build Coastguard Worker /* 0x38 reserved */ 215*8b26181fSAndroid Build Coastguard Worker /* #define BPF_COPX 0x40 NetBSD "coprocessor" extensions */ 216*8b26181fSAndroid Build Coastguard Worker /* also used on BSD/OS */ 217*8b26181fSAndroid Build Coastguard Worker /* 0x48 reserved */ 218*8b26181fSAndroid Build Coastguard Worker /* 0x50 reserved */ 219*8b26181fSAndroid Build Coastguard Worker /* 0x58 reserved */ 220*8b26181fSAndroid Build Coastguard Worker /* 0x60 reserved */ 221*8b26181fSAndroid Build Coastguard Worker /* 0x68 reserved */ 222*8b26181fSAndroid Build Coastguard Worker /* 0x70 reserved */ 223*8b26181fSAndroid Build Coastguard Worker /* 0x78 reserved */ 224*8b26181fSAndroid Build Coastguard Worker #define BPF_TXA 0x80 225*8b26181fSAndroid Build Coastguard Worker /* 0x88 reserved */ 226*8b26181fSAndroid Build Coastguard Worker /* 0x90 reserved */ 227*8b26181fSAndroid Build Coastguard Worker /* 0x98 reserved */ 228*8b26181fSAndroid Build Coastguard Worker /* 0xa0 reserved */ 229*8b26181fSAndroid Build Coastguard Worker /* 0xa8 reserved */ 230*8b26181fSAndroid Build Coastguard Worker /* 0xb0 reserved */ 231*8b26181fSAndroid Build Coastguard Worker /* 0xb8 reserved */ 232*8b26181fSAndroid Build Coastguard Worker /* 0xc0 reserved; used on BSD/OS */ 233*8b26181fSAndroid Build Coastguard Worker /* 0xc8 reserved */ 234*8b26181fSAndroid Build Coastguard Worker /* 0xd0 reserved */ 235*8b26181fSAndroid Build Coastguard Worker /* 0xd8 reserved */ 236*8b26181fSAndroid Build Coastguard Worker /* 0xe0 reserved */ 237*8b26181fSAndroid Build Coastguard Worker /* 0xe8 reserved */ 238*8b26181fSAndroid Build Coastguard Worker /* 0xf0 reserved */ 239*8b26181fSAndroid Build Coastguard Worker /* 0xf8 reserved */ 240*8b26181fSAndroid Build Coastguard Worker 241*8b26181fSAndroid Build Coastguard Worker /* 242*8b26181fSAndroid Build Coastguard Worker * The instruction data structure. 243*8b26181fSAndroid Build Coastguard Worker */ 244*8b26181fSAndroid Build Coastguard Worker struct bpf_insn { 245*8b26181fSAndroid Build Coastguard Worker u_short code; 246*8b26181fSAndroid Build Coastguard Worker u_char jt; 247*8b26181fSAndroid Build Coastguard Worker u_char jf; 248*8b26181fSAndroid Build Coastguard Worker bpf_u_int32 k; 249*8b26181fSAndroid Build Coastguard Worker }; 250*8b26181fSAndroid Build Coastguard Worker 251*8b26181fSAndroid Build Coastguard Worker /* 252*8b26181fSAndroid Build Coastguard Worker * Macros for insn array initializers. 253*8b26181fSAndroid Build Coastguard Worker * 254*8b26181fSAndroid Build Coastguard Worker * In case somebody's included <linux/filter.h>, or something else that 255*8b26181fSAndroid Build Coastguard Worker * gives the kernel's definitions of BPF statements, get rid of its 256*8b26181fSAndroid Build Coastguard Worker * definitions, so we can supply ours instead. If some kernel's 257*8b26181fSAndroid Build Coastguard Worker * definitions aren't *binary-compatible* with what BPF has had 258*8b26181fSAndroid Build Coastguard Worker * since it first sprung from the brows of Van Jacobson and Steve 259*8b26181fSAndroid Build Coastguard Worker * McCanne, that kernel should be fixed. 260*8b26181fSAndroid Build Coastguard Worker */ 261*8b26181fSAndroid Build Coastguard Worker #ifdef BPF_STMT 262*8b26181fSAndroid Build Coastguard Worker #undef BPF_STMT 263*8b26181fSAndroid Build Coastguard Worker #endif 264*8b26181fSAndroid Build Coastguard Worker #define BPF_STMT(code, k) { (u_short)(code), 0, 0, k } 265*8b26181fSAndroid Build Coastguard Worker #ifdef BPF_JUMP 266*8b26181fSAndroid Build Coastguard Worker #undef BPF_JUMP 267*8b26181fSAndroid Build Coastguard Worker #endif 268*8b26181fSAndroid Build Coastguard Worker #define BPF_JUMP(code, k, jt, jf) { (u_short)(code), jt, jf, k } 269*8b26181fSAndroid Build Coastguard Worker 270*8b26181fSAndroid Build Coastguard Worker PCAP_AVAILABLE_0_4 271*8b26181fSAndroid Build Coastguard Worker PCAP_API u_int bpf_filter(const struct bpf_insn *, const u_char *, u_int, u_int); 272*8b26181fSAndroid Build Coastguard Worker 273*8b26181fSAndroid Build Coastguard Worker PCAP_AVAILABLE_0_6 274*8b26181fSAndroid Build Coastguard Worker PCAP_API int bpf_validate(const struct bpf_insn *f, int len); 275*8b26181fSAndroid Build Coastguard Worker 276*8b26181fSAndroid Build Coastguard Worker PCAP_AVAILABLE_0_4 277*8b26181fSAndroid Build Coastguard Worker PCAP_API char *bpf_image(const struct bpf_insn *, int); 278*8b26181fSAndroid Build Coastguard Worker 279*8b26181fSAndroid Build Coastguard Worker PCAP_AVAILABLE_0_6 280*8b26181fSAndroid Build Coastguard Worker PCAP_API void bpf_dump(const struct bpf_program *, int); 281*8b26181fSAndroid Build Coastguard Worker 282*8b26181fSAndroid Build Coastguard Worker /* 283*8b26181fSAndroid Build Coastguard Worker * Number of scratch memory words (for BPF_LD|BPF_MEM and BPF_ST). 284*8b26181fSAndroid Build Coastguard Worker */ 285*8b26181fSAndroid Build Coastguard Worker #define BPF_MEMWORDS 16 286*8b26181fSAndroid Build Coastguard Worker 287*8b26181fSAndroid Build Coastguard Worker #ifdef __cplusplus 288*8b26181fSAndroid Build Coastguard Worker } 289*8b26181fSAndroid Build Coastguard Worker #endif 290*8b26181fSAndroid Build Coastguard Worker 291*8b26181fSAndroid Build Coastguard Worker #endif /* !defined(_NET_BPF_H_) && !defined(_BPF_H_) && !defined(_H_BPF) && !defined(lib_pcap_bpf_h) */ 292