📄 bpf.h
字号:
* 106 is reserved for Linux Classical IP over ATM; it's like DLT_RAW, * except when it isn't. (I.e., sometimes it's just raw IP, and * sometimes it isn't.) We currently handle it as DLT_LINUX_SLL, * so that we don't have to worry about the link-layer header.) *//* * Frame Relay; BSD/OS has a DLT_FR with a value of 11, but that collides * with other values. * DLT_FR and DLT_FRELAY packets start with the Q.922 Frame Relay header * (DLCI, etc.). */#define DLT_FRELAY 107/* * OpenBSD DLT_LOOP, for loopback devices; it's like DLT_NULL, except * that the AF_ type in the link-layer header is in network byte order. * * OpenBSD defines it as 12, but that collides with DLT_RAW, so we * define it as 108 here. If OpenBSD picks up this file, it should * define DLT_LOOP as 12 in its version, as per the comment above - * and should not use 108 as a DLT_ value. */#define DLT_LOOP 108/* * Values between 109 and 112 are used in capture file headers as * link-layer types corresponding to DLT_ types that might differ * between platforms; don't use those values for new DLT_ types * other than the corresponding DLT_ types. *//* * This is for Linux cooked sockets. */#define DLT_LINUX_SLL 113/* * Apple LocalTalk hardware. */#define DLT_LTALK 114/* * Acorn Econet. */#define DLT_ECONET 115/* * Reserved for use with OpenBSD ipfilter. */#define DLT_IPFILTER 116/* * Reserved for use in capture-file headers as a link-layer type * corresponding to OpenBSD DLT_PFLOG; DLT_PFLOG is 17 in OpenBSD, * but that's DLT_LANE8023 in SuSE 6.3, so we can't use 17 for it * in capture-file headers. */#define DLT_PFLOG 117/* * Registered for Cisco-internal use. */#define DLT_CISCO_IOS 118/* * Reserved for 802.11 cards using the Prism II chips, with a link-layer * header including Prism monitor mode information plus an 802.11 * header. */#define DLT_PRISM_HEADER 119/* * Reserved for Aironet 802.11 cards, with an Aironet link-layer header * (see Doug Ambrisko's FreeBSD patches). */#define DLT_AIRONET_HEADER 120/* * Reserved for Siemens HiPath HDLC. */#define DLT_HHDLC 121/* * This is for RFC 2625 IP-over-Fibre Channel. * * This is not for use with raw Fibre Channel, where the link-layer * header starts with a Fibre Channel frame header; it's for IP-over-FC, * where the link-layer header starts with an RFC 2625 Network_Header * field. */#define DLT_IP_OVER_FC 122/* * This is for Full Frontal ATM on Solaris with SunATM, with a * pseudo-header followed by an AALn PDU. * * There may be other forms of Full Frontal ATM on other OSes, * with different pseudo-headers. * * If ATM software returns a pseudo-header with VPI/VCI information * (and, ideally, packet type information, e.g. signalling, ILMI, * LANE, LLC-multiplexed traffic, etc.), it should not use * DLT_ATM_RFC1483, but should get a new DLT_ value, so tcpdump * and the like don't have to infer the presence or absence of a * pseudo-header and the form of the pseudo-header. */#define DLT_SUNATM 123 /* Solaris+SunATM *//* * Reserved as per request from Kent Dahlgren <kent@praesum.com> * for private use. */#define DLT_RIO 124 /* RapidIO */#define DLT_PCI_EXP 125 /* PCI Express */#define DLT_AURORA 126 /* Xilinx Aurora link layer *//* * For future use with 802.11 captures - defined by AbsoluteValue * Systems to store a number of bits of link-layer information: * * http://www.shaftnet.org/~pizza/software/capturefrm.txt * * but could and arguably should also be used by non-AVS Linux * 802.11 drivers and BSD drivers; that may happen in the future. */#define DLT_IEEE802_11_RADIO 127 /* 802.11 plus WLAN header *//* * Reserved for the TZSP encapsulation, as per request from * Chris Waters <chris.waters@networkchemistry.com> * TZSP is a generic encapsulation for any other link type, * which includes a means to include meta-information * with the packet, e.g. signal strength and channel * for 802.11 packets. */#define DLT_TZSP 128 /* Tazmen Sniffer Protocol *//* * BSD's ARCNET headers have the source host, destination host, * and type at the beginning of the packet; that's what's handed * up to userland via BPF. * * Linux's ARCNET headers, however, have a 2-byte offset field * between the host IDs and the type; that's what's handed up * to userland via PF_PACKET sockets. * * We therefore have to have separate DLT_ values for them. */#define DLT_ARCNET_LINUX 129 /* ARCNET *//* * The instruction encodings. *//* instruction classes */#define BPF_CLASS(code) ((code) & 0x07)#define BPF_LD 0x00#define BPF_LDX 0x01#define BPF_ST 0x02#define BPF_STX 0x03#define BPF_ALU 0x04#define BPF_JMP 0x05#define BPF_RET 0x06#define BPF_MISC 0x07/* ld/ldx fields */#define BPF_SIZE(code) ((code) & 0x18)#define BPF_W 0x00#define BPF_H 0x08#define BPF_B 0x10#define BPF_MODE(code) ((code) & 0xe0)#define BPF_IMM 0x00#define BPF_ABS 0x20#define BPF_IND 0x40#define BPF_MEM 0x60#define BPF_LEN 0x80#define BPF_MSH 0xa0/* alu/jmp fields */#define BPF_OP(code) ((code) & 0xf0)#define BPF_ADD 0x00#define BPF_SUB 0x10#define BPF_MUL 0x20#define BPF_DIV 0x30#define BPF_OR 0x40#define BPF_AND 0x50#define BPF_LSH 0x60#define BPF_RSH 0x70#define BPF_NEG 0x80#define BPF_JA 0x00#define BPF_JEQ 0x10#define BPF_JGT 0x20#define BPF_JGE 0x30#define BPF_JSET 0x40#define BPF_SRC(code) ((code) & 0x08)#define BPF_K 0x00#define BPF_X 0x08/* ret - BPF_K and BPF_X also apply */#define BPF_RVAL(code) ((code) & 0x18)#define BPF_A 0x10/* misc */#define BPF_MISCOP(code) ((code) & 0xf8)#define BPF_TAX 0x00#define BPF_TXA 0x80/* * The instruction data structure. */struct bpf_insn { u_short code; u_char jt; u_char jf; bpf_int32 k;};/* * Macros for insn array initializers. */#define BPF_STMT(code, k) { (u_short)(code), 0, 0, k }#define BPF_JUMP(code, k, jt, jf) { (u_short)(code), jt, jf, k }#if defined(BSD) && (defined(KERNEL) || defined(_KERNEL))/* * Systems based on non-BSD kernels don't have ifnet's (or they don't mean * anything if it is in <net/if.h>) and won't work like this. */# if __STDC__extern void bpf_tap(struct ifnet *, u_char *, u_int);extern void bpf_mtap(struct ifnet *, struct mbuf *);extern void bpfattach(struct ifnet *, u_int, u_int);extern void bpfilterattach(int);# elseextern void bpf_tap();extern void bpf_mtap();extern void bpfattach();extern void bpfilterattach();# endif /* __STDC__ */#endif /* BSD && (_KERNEL || KERNEL) */#if __STDC__ || defined(__cplusplus)extern int bpf_validate(struct bpf_insn *, int);extern u_int bpf_filter(struct bpf_insn *, u_char *, u_int, u_int);#elseextern int bpf_validate();extern u_int bpf_filter();#endif/* * Number of scratch memory words (for BPF_LD|BPF_MEM and BPF_ST). */#define BPF_MEMWORDS 16#ifdef __cplusplus}#endif#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -