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