filter.h
001:
002:
003:
004:
005: #ifndef __LINUX_FILTER_H__
006: #define __LINUX_FILTER_H__
007:
008:
009: #include <linux/types.h>
010:
011:
012:
013:
014:
015: #define BPF_MAJOR_VERSION 1
016: #define BPF_MINOR_VERSION 1
017:
018:
019:
020:
021:
022:
023: struct sock_filter {
024: __u16 code;
025: __u8 jt;
026: __u8 jf;
027: __u32 k;
028: };
029:
030: struct sock_fprog {
031: unsigned short len;
032: struct sock_filter *filter;
033: };
034:
035:
036:
037:
038:
039: #define BPF_CLASS(code) ((code) & 0x07)
040: #define BPF_LD 0x00
041: #define BPF_LDX 0x01
042: #define BPF_ST 0x02
043: #define BPF_STX 0x03
044: #define BPF_ALU 0x04
045: #define BPF_JMP 0x05
046: #define BPF_RET 0x06
047: #define BPF_MISC 0x07
048:
049:
050: #define BPF_SIZE(code) ((code) & 0x18)
051: #define BPF_W 0x00
052: #define BPF_H 0x08
053: #define BPF_B 0x10
054: #define BPF_MODE(code) ((code) & 0xe0)
055: #define BPF_IMM 0x00
056: #define BPF_ABS 0x20
057: #define BPF_IND 0x40
058: #define BPF_MEM 0x60
059: #define BPF_LEN 0x80
060: #define BPF_MSH 0xa0
061:
062:
063: #define BPF_OP(code) ((code) & 0xf0)
064: #define BPF_ADD 0x00
065: #define BPF_SUB 0x10
066: #define BPF_MUL 0x20
067: #define BPF_DIV 0x30
068: #define BPF_OR 0x40
069: #define BPF_AND 0x50
070: #define BPF_LSH 0x60
071: #define BPF_RSH 0x70
072: #define BPF_NEG 0x80
073: #define BPF_JA 0x00
074: #define BPF_JEQ 0x10
075: #define BPF_JGT 0x20
076: #define BPF_JGE 0x30
077: #define BPF_JSET 0x40
078: #define BPF_SRC(code) ((code) & 0x08)
079: #define BPF_K 0x00
080: #define BPF_X 0x08
081:
082:
083: #define BPF_RVAL(code) ((code) & 0x18)
084: #define BPF_A 0x10
085:
086:
087: #define BPF_MISCOP(code) ((code) & 0xf8)
088: #define BPF_TAX 0x00
089: #define BPF_TXA 0x80
090:
091: #ifndef BPF_MAXINSNS
092: #define BPF_MAXINSNS 4096
093: #endif
094:
095:
096:
097:
098: #ifndef BPF_STMT
099: #define BPF_STMT(code, k) { (unsigned short)(code), 0, 0, k }
100: #endif
101: #ifndef BPF_JUMP
102: #define BPF_JUMP(code, k, jt, jf) { (unsigned short)(code), jt, jf, k }
103: #endif
104:
105:
106:
107:
108: #define BPF_MEMWORDS 16
109:
110:
111:
112:
113:
114:
115: #define SKF_AD_OFF (-0x1000)
116: #define SKF_AD_PROTOCOL 0
117: #define SKF_AD_PKTTYPE 4
118: #define SKF_AD_IFINDEX 8
119: #define SKF_AD_NLATTR 12
120: #define SKF_AD_NLATTR_NEST 16
121: #define SKF_AD_MARK 20
122: #define SKF_AD_QUEUE 24
123: #define SKF_AD_HATYPE 28
124: #define SKF_AD_RXHASH 32
125: #define SKF_AD_CPU 36
126: #define SKF_AD_MAX 40
127: #define SKF_NET_OFF (-0x100000)
128: #define SKF_LL_OFF (-0x200000)
129:
130:
131: #endif
132:
© Andrew Scott 2006 -
2025,
All Rights Reserved