diff options
| author | Alexei Starovoitov <ast@plumgrid.com> | 2014-10-14 05:08:54 -0400 |
|---|---|---|
| committer | David S. Miller <davem@davemloft.net> | 2014-10-14 16:06:45 -0400 |
| commit | c15952dc18d8a293d976ac6c06d44d9d98023b45 (patch) | |
| tree | d45efd559f784aeb11c85bd8fcbef8808e7d61b5 /include/uapi/linux | |
| parent | 91c4467e3c76b6d40ecc29ed71d3aa1e0285ab80 (diff) | |
net: filter: move common defines into bpf_common.h
userspace programs that use eBPF instruction macros need to include two files:
uapi/linux/filter.h and uapi/linux/bpf.h
Move common macro definitions that are shared between classic BPF and eBPF
into uapi/linux/bpf_common.h, so that user app can include only one bpf.h file
Cc: Daniel Borkmann <dborkman@redhat.com>
Signed-off-by: Alexei Starovoitov <ast@plumgrid.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'include/uapi/linux')
| -rw-r--r-- | include/uapi/linux/Kbuild | 1 | ||||
| -rw-r--r-- | include/uapi/linux/bpf.h | 1 | ||||
| -rw-r--r-- | include/uapi/linux/bpf_common.h | 55 | ||||
| -rw-r--r-- | include/uapi/linux/filter.h | 56 |
4 files changed, 58 insertions, 55 deletions
diff --git a/include/uapi/linux/Kbuild b/include/uapi/linux/Kbuild index 70e150ebc6c9..1115d68b150f 100644 --- a/include/uapi/linux/Kbuild +++ b/include/uapi/linux/Kbuild | |||
| @@ -68,6 +68,7 @@ header-y += binfmts.h | |||
| 68 | header-y += blkpg.h | 68 | header-y += blkpg.h |
| 69 | header-y += blktrace_api.h | 69 | header-y += blktrace_api.h |
| 70 | header-y += bpf.h | 70 | header-y += bpf.h |
| 71 | header-y += bpf_common.h | ||
| 71 | header-y += bpqether.h | 72 | header-y += bpqether.h |
| 72 | header-y += bsg.h | 73 | header-y += bsg.h |
| 73 | header-y += btrfs.h | 74 | header-y += btrfs.h |
diff --git a/include/uapi/linux/bpf.h b/include/uapi/linux/bpf.h index 31b0ac208a52..d18316f9e9c4 100644 --- a/include/uapi/linux/bpf.h +++ b/include/uapi/linux/bpf.h | |||
| @@ -8,6 +8,7 @@ | |||
| 8 | #define _UAPI__LINUX_BPF_H__ | 8 | #define _UAPI__LINUX_BPF_H__ |
| 9 | 9 | ||
| 10 | #include <linux/types.h> | 10 | #include <linux/types.h> |
| 11 | #include <linux/bpf_common.h> | ||
| 11 | 12 | ||
| 12 | /* Extended instruction set based on top of classic BPF */ | 13 | /* Extended instruction set based on top of classic BPF */ |
| 13 | 14 | ||
diff --git a/include/uapi/linux/bpf_common.h b/include/uapi/linux/bpf_common.h new file mode 100644 index 000000000000..a5c220e0828f --- /dev/null +++ b/include/uapi/linux/bpf_common.h | |||
| @@ -0,0 +1,55 @@ | |||
| 1 | #ifndef _UAPI__LINUX_BPF_COMMON_H__ | ||
| 2 | #define _UAPI__LINUX_BPF_COMMON_H__ | ||
| 3 | |||
| 4 | /* Instruction classes */ | ||
| 5 | #define BPF_CLASS(code) ((code) & 0x07) | ||
| 6 | #define BPF_LD 0x00 | ||
| 7 | #define BPF_LDX 0x01 | ||
| 8 | #define BPF_ST 0x02 | ||
| 9 | #define BPF_STX 0x03 | ||
| 10 | #define BPF_ALU 0x04 | ||
| 11 | #define BPF_JMP 0x05 | ||
| 12 | #define BPF_RET 0x06 | ||
| 13 | #define BPF_MISC 0x07 | ||
| 14 | |||
| 15 | /* ld/ldx fields */ | ||
| 16 | #define BPF_SIZE(code) ((code) & 0x18) | ||
| 17 | #define BPF_W 0x00 | ||
| 18 | #define BPF_H 0x08 | ||
| 19 | #define BPF_B 0x10 | ||
| 20 | #define BPF_MODE(code) ((code) & 0xe0) | ||
| 21 | #define BPF_IMM 0x00 | ||
| 22 | #define BPF_ABS 0x20 | ||
| 23 | #define BPF_IND 0x40 | ||
| 24 | #define BPF_MEM 0x60 | ||
| 25 | #define BPF_LEN 0x80 | ||
| 26 | #define BPF_MSH 0xa0 | ||
| 27 | |||
| 28 | /* alu/jmp fields */ | ||
| 29 | #define BPF_OP(code) ((code) & 0xf0) | ||
| 30 | #define BPF_ADD 0x00 | ||
| 31 | #define BPF_SUB 0x10 | ||
| 32 | #define BPF_MUL 0x20 | ||
| 33 | #define BPF_DIV 0x30 | ||
| 34 | #define BPF_OR 0x40 | ||
| 35 | #define BPF_AND 0x50 | ||
| 36 | #define BPF_LSH 0x60 | ||
| 37 | #define BPF_RSH 0x70 | ||
| 38 | #define BPF_NEG 0x80 | ||
| 39 | #define BPF_MOD 0x90 | ||
| 40 | #define BPF_XOR 0xa0 | ||
| 41 | |||
| 42 | #define BPF_JA 0x00 | ||
| 43 | #define BPF_JEQ 0x10 | ||
| 44 | #define BPF_JGT 0x20 | ||
| 45 | #define BPF_JGE 0x30 | ||
| 46 | #define BPF_JSET 0x40 | ||
| 47 | #define BPF_SRC(code) ((code) & 0x08) | ||
| 48 | #define BPF_K 0x00 | ||
| 49 | #define BPF_X 0x08 | ||
| 50 | |||
| 51 | #ifndef BPF_MAXINSNS | ||
| 52 | #define BPF_MAXINSNS 4096 | ||
| 53 | #endif | ||
| 54 | |||
| 55 | #endif /* _UAPI__LINUX_BPF_COMMON_H__ */ | ||
diff --git a/include/uapi/linux/filter.h b/include/uapi/linux/filter.h index 253b4d42cf2b..47785d5ecf17 100644 --- a/include/uapi/linux/filter.h +++ b/include/uapi/linux/filter.h | |||
| @@ -7,7 +7,7 @@ | |||
| 7 | 7 | ||
| 8 | #include <linux/compiler.h> | 8 | #include <linux/compiler.h> |
| 9 | #include <linux/types.h> | 9 | #include <linux/types.h> |
| 10 | 10 | #include <linux/bpf_common.h> | |
| 11 | 11 | ||
| 12 | /* | 12 | /* |
| 13 | * Current version of the filter code architecture. | 13 | * Current version of the filter code architecture. |
| @@ -32,56 +32,6 @@ struct sock_fprog { /* Required for SO_ATTACH_FILTER. */ | |||
| 32 | struct sock_filter __user *filter; | 32 | struct sock_filter __user *filter; |
| 33 | }; | 33 | }; |
| 34 | 34 | ||
| 35 | /* | ||
| 36 | * Instruction classes | ||
| 37 | */ | ||
| 38 | |||
| 39 | #define BPF_CLASS(code) ((code) & 0x07) | ||
| 40 | #define BPF_LD 0x00 | ||
| 41 | #define BPF_LDX 0x01 | ||
| 42 | #define BPF_ST 0x02 | ||
| 43 | #define BPF_STX 0x03 | ||
| 44 | #define BPF_ALU 0x04 | ||
| 45 | #define BPF_JMP 0x05 | ||
| 46 | #define BPF_RET 0x06 | ||
| 47 | #define BPF_MISC 0x07 | ||
| 48 | |||
| 49 | /* ld/ldx fields */ | ||
| 50 | #define BPF_SIZE(code) ((code) & 0x18) | ||
| 51 | #define BPF_W 0x00 | ||
| 52 | #define BPF_H 0x08 | ||
| 53 | #define BPF_B 0x10 | ||
| 54 | #define BPF_MODE(code) ((code) & 0xe0) | ||
| 55 | #define BPF_IMM 0x00 | ||
| 56 | #define BPF_ABS 0x20 | ||
| 57 | #define BPF_IND 0x40 | ||
| 58 | #define BPF_MEM 0x60 | ||
| 59 | #define BPF_LEN 0x80 | ||
| 60 | #define BPF_MSH 0xa0 | ||
| 61 | |||
| 62 | /* alu/jmp fields */ | ||
| 63 | #define BPF_OP(code) ((code) & 0xf0) | ||
| 64 | #define BPF_ADD 0x00 | ||
| 65 | #define BPF_SUB 0x10 | ||
| 66 | #define BPF_MUL 0x20 | ||
| 67 | #define BPF_DIV 0x30 | ||
| 68 | #define BPF_OR 0x40 | ||
| 69 | #define BPF_AND 0x50 | ||
| 70 | #define BPF_LSH 0x60 | ||
| 71 | #define BPF_RSH 0x70 | ||
| 72 | #define BPF_NEG 0x80 | ||
| 73 | #define BPF_MOD 0x90 | ||
| 74 | #define BPF_XOR 0xa0 | ||
| 75 | |||
| 76 | #define BPF_JA 0x00 | ||
| 77 | #define BPF_JEQ 0x10 | ||
| 78 | #define BPF_JGT 0x20 | ||
| 79 | #define BPF_JGE 0x30 | ||
| 80 | #define BPF_JSET 0x40 | ||
| 81 | #define BPF_SRC(code) ((code) & 0x08) | ||
| 82 | #define BPF_K 0x00 | ||
| 83 | #define BPF_X 0x08 | ||
| 84 | |||
| 85 | /* ret - BPF_K and BPF_X also apply */ | 35 | /* ret - BPF_K and BPF_X also apply */ |
| 86 | #define BPF_RVAL(code) ((code) & 0x18) | 36 | #define BPF_RVAL(code) ((code) & 0x18) |
| 87 | #define BPF_A 0x10 | 37 | #define BPF_A 0x10 |
| @@ -91,10 +41,6 @@ struct sock_fprog { /* Required for SO_ATTACH_FILTER. */ | |||
| 91 | #define BPF_TAX 0x00 | 41 | #define BPF_TAX 0x00 |
| 92 | #define BPF_TXA 0x80 | 42 | #define BPF_TXA 0x80 |
| 93 | 43 | ||
| 94 | #ifndef BPF_MAXINSNS | ||
| 95 | #define BPF_MAXINSNS 4096 | ||
| 96 | #endif | ||
| 97 | |||
| 98 | /* | 44 | /* |
| 99 | * Macros for filter block array initializers. | 45 | * Macros for filter block array initializers. |
| 100 | */ | 46 | */ |
