⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 bpf.h

📁 Linux snort-2.4.4源代码
💻 H
📖 第 1 页 / 共 2 页
字号:
 * 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 + -