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

📄 filter.h

📁 unxi下共享内存的使用
💻 H
字号:
/* * Linux Socket Filter Data Structures */#ifndef __LINUX_FILTER_H__#define __LINUX_FILTER_H__/* * Current version of the filter code architecture. */#define BPF_MAJOR_VERSION 1#define BPF_MINOR_VERSION 1/* *	Try and keep these values and structures similar to BSD, especially *	the BPF code definitions which need to match so you can share filters */ struct sock_filter	/* Filter block */{        __u16	code;   /* Actual filter code */        __u8	jt;	/* Jump true */        __u8	jf;	/* Jump false */        __u32	k;      /* Generic multiuse field */};struct sock_fprog	/* Required for SO_ATTACH_FILTER. */{	unsigned short		len;	/* Number of filter blocks */	struct sock_filter	*filter;};#ifdef __KERNEL__struct sk_filter{	atomic_t		refcnt;        unsigned int         	len;	/* Number of filter blocks */        struct sock_filter     	insns[0];};static inline unsigned int sk_filter_len(struct sk_filter *fp){	return fp->len*sizeof(struct sock_filter) + sizeof(*fp);}#endif/* * 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#ifndef BPF_MAXINSNS#define BPF_MAXINSNS 4096#endif/* * Macros for filter block array initializers. */#ifndef BPF_STMT#define BPF_STMT(code, k) { (unsigned short)(code), 0, 0, k }#endif#ifndef BPF_JUMP#define BPF_JUMP(code, k, jt, jf) { (unsigned short)(code), jt, jf, k }#endif/* * Number of scratch memory words for: BPF_ST and BPF_STX */#define BPF_MEMWORDS 16/* RATIONALE. Negative offsets are invalid in BPF.   We use them to reference ancillary data.   Unlike introduction new instructions, it does not break   existing compilers/optimizers. */#define SKF_AD_OFF    (-0x1000)#define SKF_AD_PROTOCOL 0#define SKF_AD_PKTTYPE 	4#define SKF_AD_IFINDEX 	8#define SKF_AD_MAX 	12#define SKF_NET_OFF   (-0x100000)#define SKF_LL_OFF    (-0x200000)#ifdef __KERNEL__extern int sk_run_filter(struct sk_buff *skb, struct sock_filter *filter, int flen);extern int sk_attach_filter(struct sock_fprog *fprog, struct sock *sk);extern int sk_chk_filter(struct sock_filter *filter, int flen);#endif /* __KERNEL__ */#endif /* __LINUX_FILTER_H__ */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -