BPF Features by Linux Kernel Version
eBPF support
Kernel version | Commit |
---|---|
3.15 | bd4cf0ed331a |
JIT compiling
The list of supported architectures for your kernel can be retrieved with:
Feature / Architecture | Kernel version | Commit |
---|---|---|
x86_64 | 3.16 | 622582786c9e |
ARM64 | 3.18 | e54bcde3d69d |
s390 | 4.1 | 054623105728 |
Constant blinding for JIT machines | 4.7 | 4f3446bb809f |
PowerPC64 | 4.8 | 156d0e290e96 |
Constant blinding - PowerPC64 | 4.9 | b7b7013cac55 |
Sparc64 | 4.12 | 7a12b5031c6b |
MIPS | 4.13 | f381bf6d82f0 |
ARM32 | 4.14 | 39c13c204bb1 |
x86_32 | 4.18 | 03f5781be2c7 |
RISC-V RV64G | 5.1 | 2353ecc6f91f RISC-V RV32G |
PowerPC32 | 5.13 | 51c66ad849a7 |
LoongArch | 6.1 | 5dc615520c4d |
Main features
Several (but not all) of these main features translate to an eBPF program type.
The list of such program types supported in your kernel can be found in file
include/uapi/linux/bpf.h
:
Feature | Kernel version | Commit |
---|---|---|
AF_PACKET (libpcap/tcpdump, cls_bpf classifier, netfilter's xt_bpf , team driver's load-balancing mode…) |
3.15 | bd4cf0ed331a |
Kernel helpers | 3.15 | bd4cf0ed331a |
bpf() syscall |
3.18 | 99c55f7d47c0 |
Maps (a.k.a. Tables; details below) | 3.18 | 99c55f7d47c0 |
BPF attached to sockets | 3.19 | 89aa075832b0 |
BPF attached to kprobes |
4.1 | 2541517c32be |
cls_bpf / act_bpf for tc |
4.1 | e2e9b6541dd4 |
Tail calls | 4.2 | 04fd61ab36ec Non-root programs on sockets |
Persistent maps and programs (virtual FS) | 4.4 | b2197755b263 |
tc 's direct-action (da ) mode |
4.4 | 045efa82ff56 |
tc 's clsact qdisc |
4.5 | 1f211a1b929c |
BPF attached to tracepoints | 4.7 | 98b5c2c65c29 |
Direct packet access | 4.7 | 969bf05eb3ce |
XDP (see below) | 4.8 | 6a773a15a1e8 |
BPF attached to perf events | 4.9 | 0515e5999a46 |
Hardware offload for tc 's cls_bpf |
4.9 | 332ae8e2f6ec |
Verifier exposure and internal hooks | 4.9 | 13a27dfc6697 |
BPF attached to cgroups for socket filtering | 4.10 | 0e33661de493 |
Lightweight tunnel encapsulation | 4.10 | 3a0af8fd61f9 |
eBPF support for xt_bpf module (iptables) |
4.10 | 2c16d6033264 |
BPF program tag | 4.10 | 7bd509e311f4 Tracepoints to debug BPF |
Testing / benchmarking BPF programs | 4.12 | 1cf1cae963c2 |
BPF programs and maps IDs | 4.13 | dc4bb0e23561 |
BPF support for sock_ops |
4.13 | 40304b2a1567 |
BPF support for skbs on sockets | 4.14 | b005fd189cec |
bpftool utility in kernel sources | 4.15 | 71bb428fe2c1 |
BPF attached to cgroups as device controller | 4.15 | ebc614f68736 |
bpf2bpf function calls | 4.16 | cc8b0b92a169 |
BPF used for monitoring socket RX/TX data | 4.17 | 4f738adba30a |
BPF attached to raw tracepoints | 4.17 | c4f6699dfcb8 |
BPF attached to bind() system call |
4.17 | 4fbac77d2d09 aac3fc320d94 |
BPF attached to connect() system call |
4.17 | d74bad4e74ee BPF Type Format (BTF) |
AF_XDP | 4.18 | fbfc504a24f5 |
bpfilter | 4.18 | d2ba09c17a06 |
End.BPF action for seg6local LWT | 4.18 | 004d4b274e2a |
BPF attached to LIRC devices | 4.18 | f4364dcfc86d |
Pass map values to map helpers | 4.18 | d71962f3e627 |
BPF socket reuseport | 4.19 | 2dbb9b9e6df6 |
BPF flow dissector | 4.20 | d58e468b1112 |
BPF 1M insn limit | 5.2 | c04c0d2b968a |
BPF cgroup sysctl | 5.2 | 7b146cebe30c |
BPF raw tracepoint writable | 5.2 | 9df1c28bb752 |
BPF bounded loop | 5.3 | 2589726d12a1 |
BPF trampoline | 5.5 | fec56f5890d9 |
BPF LSM hook | 5.7 | fc611f47f218 641cd7b06c91 |
BPF iterator | 5.8 | 180139dca8b3 BPF socket lookup hook |
Sleepable BPF programs | 5.10 | 1e6c62a88215 |
Program types
Program type | Kernel version | Commit | Enum |
---|---|---|---|
Socket filter | 3.19 | ddd872bc3098 |
BPF_PROG_TYPE_SOCKET_FILTER |
Kprobe | 4.1 | 2541517c32be |
BPF_PROG_TYPE_KPROBE |
traffic control (TC) | 4.1 | 96be4325f443 |
BPF_PROG_TYPE_SCHED_CLS |
traffic control (TC) | 4.1 | 94caee8c312d |
BPF_PROG_TYPE_SCHED_ACT |
Tracepoint | 4.7 | 98b5c2c65c29 |
BPF_PROG_TYPE_TRACEPOINT |
XDP | 4.8 | 6a773a15a1e8 |
BPF_PROG_TYPE_XDP |
Perf event | 4.9 | 0515e5999a46 |
BPF_PROG_TYPE_PERF_EVENT |
cgroup socket filtering | 4.10 | 0e33661de493 |
BPF_PROG_TYPE_CGROUP_SKB |
cgroup sock modification | 4.10 | 610236587600 |
BPF_PROG_TYPE_CGROUP_SOCK |
lightweight tunnel (IN) | 4.10 | 3a0af8fd61f9 |
BPF_PROG_TYPE_LWT_IN".lightweight tunnel (OUT) |
lightweight tunnel (XMIT) | 4.10 | 3a0af8fd61f9 |
BPF_PROG_TYPE_LWT_XMIT |
cgroup sock ops (per conn) | 4.13 | 40304b2a1567 |
BPF_PROG_TYPE_SOCK_OPS |
stream parser / stream verdict | 4.14 | b005fd189cec |
BPF_PROG_TYPE_SK_SKB |
cgroup device manager | 4.15 | ebc614f68736 |
BPF_PROG_TYPE_CGROUP_DEVICE |
socket msg verdict | 4.17 | 4f738adba30a |
BPF_PROG_TYPE_SK_MSG |
Raw tracepoint | 4.17 | c4f6699dfcb8 |
BPF_PROG_TYPE_RAW_TRACEPOINT |
socket binding | 4.17 | 4fbac77d2d09 |
BPF_PROG_TYPE_CGROUP_SOCK_ADDR |
LWT seg6local | 4.18 | 004d4b274e2a |
BPF_PROG_TYPE_LWT_SEG6LOCAL |
lirc devices | 4.18 | f4364dcfc86d |
BPF_PROG_TYPE_LIRC_MODE2 |
lookup SO_REUSEPORT socket | 4.19 | 2dbb9b9e6df6 |
BPF_PROG_TYPE_SK_REUSEPORT |
flow dissector | 4.20 | d58e468b1112 |
BPF_PROG_TYPE_FLOW_DISSECTOR.```markdown |
cgroup sysctl | 5.2 | 7b146cebe30c |
BPF_PROG_TYPE_CGROUP_SYSCTL |
writable raw tracepoints | 5.2 | 9df1c28bb752 |
BPF_PROG_TYPE_RAW_TRACEPOINT_WRITABLE |
cgroup getsockopt/setsockopt | 5.3 | 0d01da6afc54 |
BPF_PROG_TYPE_CGROUP_SOCKOPT |
Tracing (BTF/BPF trampoline) | 5.5 | f1b9509c2fb0 |
BPF_PROG_TYPE_TRACING |
struct ops | 5.6 | 27ae7997a661 |
BPF_PROG_TYPE_STRUCT_OPS |
extensions | 5.6 | be8704ff07d2 |
BPF_PROG_TYPE_EXT |
LSM | 5.7 | fc611f47f218 |
BPF_PROG_TYPE_LSM |
lookup listening socket | 5.9 | e9ddbb7707ff |
BPF_PROG_TYPE_SK_LOOKUP |
Allow executing syscalls | 5.15 | 79a7f8bdb159 |
BPF_PROG_TYPE_SYSCALL |
Maps (a.k.a. Tables, in BCC lingo)
Map types
The list of map types supported in your kernel can be found in file
include/uapi/linux/bpf.h
:
Map type | Kernel version | Commit | Enum |
---|---|---|---|
Hash | 3.19 | 0f8e4bd8a1fc |
BPF_MAP_TYPE_HASH". |
```Array | 3.19 | 28fbcfa08d8e |
BPF_MAP_TYPE_ARRAY |
Prog array | 4.2 | 04fd61ab36ec |
BPF_MAP_TYPE_PROG_ARRAY |
Perf events | 4.3 | ea317b267e9d |
BPF_MAP_TYPE_PERF_EVENT_ARRAY |
Per-CPU hash | 4.6 | 824bd0ce6c7c |
BPF_MAP_TYPE_PERCPU_HASH |
Per-CPU array | 4.6 | a10423b87a7e |
BPF_MAP_TYPE_PERCPU_ARRAY |
Stack trace | 4.6 | d5a3b1f69186 |
BPF_MAP_TYPE_STACK_TRACE |
cgroup array | 4.8 | 4ed8ec521ed5 |
BPF_MAP_TYPE_CGROUP_ARRAY |
LRU hash | 4.10 | 29ba732acbee 3a08c2fd7634 |
BPF_MAP_TYPE_LRU_HASH |
LRU per-CPU hash | 4.10 | 8f8449384ec3 961578b63474 |
BPF_MAP_TYPE_LRU_PERCPU_HASH |
LPM trie (longest-prefix match) | 4.11 | b95a5c4db09b |
BPF_MAP_TYPE_LPM_TRIE |
Array of maps | 4.12 | 56f668dfe00d |
BPF_MAP_TYPE_ARRAY_OF_MAPSHash of maps |
Netdevice references (array) | 4.14 | 546ac1ffb70d | BPF_MAP_TYPE_DEVMAP |
Socket references (array) | 4.14 | 174a79ff9515 | BPF_MAP_TYPE_SOCKMAP |
CPU references | 4.15 | 6710e1126934 | BPF_MAP_TYPE_CPUMAP |
AF_XDP socket (XSK) references | 4.18 | fbfc504a24f5 | BPF_MAP_TYPE_XSKMAP |
Socket references (hashmap) | 4.18 | 81110384441a | BPF_MAP_TYPE_SOCKHASH |
cgroup storage | 4.19 | de9cbbaadba5 | BPF_MAP_TYPE_CGROUP_STORAGE |
reuseport sockarray | 4.19 | 5dc4c4b7d4e8 | BPF_MAP_TYPE_REUSEPORT_SOCKARRAY |
precpu cgroup storage | 4.20 | b741f1630346 | BPF_MAP_TYPE_PERCPU_CGROUP_STORAGE |
queue | 4.20 | f1a2e44a3aec | BPF_MAP_TYPE_QUEUE |
stack | 4.20 | f1a2e44a3aec | BPF_MAP_TYPE_STACK |
socket local storage | 5.2 | 6ac99e8f23d4 | BPF_MAP_TYPE_SK_STORAGE".Netdevice references (hashmap) |
struct ops | 5.6 | 85d33df357b6 |
BPF_MAP_TYPE_STRUCT_OPS |
ring buffer | 5.8 | 457f44363a88 |
BPF_MAP_TYPE_RINGBUF |
inode storage | 5.10 | 8ea636848aca |
BPF_MAP_TYPE_INODE_STORAGE |
task storage | 5.11 | 4cf1bc1f1045 |
BPF_MAP_TYPE_TASK_STORAGE |
Bloom filter | 5.16 | 9330986c0300 |
BPF_MAP_TYPE_BLOOM_FILTER |
user ringbuf | 6.1 | 583c1f420173 |
BPF_MAP_TYPE_USER_RINGBUF |
Map userspace API
Some (but not all) of these API features translate to a subcommand beginning with BPF_MAP_
.
The list of subcommands supported in your kernel can be found in file
include/uapi/linux/bpf.h
:
Feature | Kernel version | Commit |
---|---|---|
Basic operations (lookup, update, delete, GET_NEXT_KEY ) |
3.18 | db20fd2b0108 |
Pass flags to UPDATE_ELEM |
3.19 | 3274f52073d8 |
Pre-alloc map memory by default | 4.6 | 6c9059817432 Pass NULL to GET_NEXT_KEY |
Creation: select NUMA node | 4.14 | 96eabe7a40aa |
Restrict access from syscall side | 4.15 | 6e71b04a8224 |
Creation: specify map name | 4.15 | ad5b177bd73f |
LOOKUP_AND_DELETE_ELEM |
4.20 | bd513cd08f10 |
Creation: BPF_F_ZERO_SEED |
5.0 | 96b3b6c9091d |
BPF_F_LOCK flag for lookup / update |
5.1 | 96049f3afd50 |
Restrict access from BPF side | 5.2 | 591fe9888d78 |
FREEZE |
5.2 | 87df15de441b |
mmap() support for array maps | 5.5 | fc9702273e2e |
LOOKUP_BATCH |
5.6 | cb4d03ab499d |
UPDATE_BATCH , DELETE_BATCH |
5.6 | aa2e93b8e58e |
LOOKUP_AND_DELETE_BATCH |
5.6 | 057996380a42 |
LOOKUP_AND_DELETE_ELEM support for hash maps |
5.14 | 3e87f192b405 |
XDP
An approximate list of drivers or components supporting XDP programs for your kernel can be retrieved with: ```sh".git grep -l XDP_SETUP_PROG drivers/
Feature / Driver | Kernel version | Commit
-----------------|----------------|-------
XDP core architecture | 4.8 | [`6a773a15a1e8`](https://github.com/torvalds/linux/commit/6a773a15a1e8874e5eccd2f29190c31085912c95)
Action: drop | 4.8 | [`6a773a15a1e8`](https://github.com/torvalds/linux/commit/6a773a15a1e8874e5eccd2f29190c31085912c95)
Action: pass on to stack | 4.8 | [`6a773a15a1e8`](https://github.com/torvalds/linux/commit/6a773a15a1e8874e5eccd2f29190c31085912c95)
Action: direct forwarding (on same port) | 4.8 | [`6ce96ca348a9`](https://github.com/torvalds/linux/commit/6ce96ca348a9e949f8c43f4d3e98db367d93cffd)
Direct packet data write | 4.8 | [`4acf6c0b84c9`](https://github.com/torvalds/linux/commit/4acf6c0b84c91243c705303cd9ff16421914150d)
Mellanox `mlx4` driver | 4.8 | [`47a38e155037`](https://github.com/torvalds/linux/commit/47a38e155037f417c5740e24ccae6482aedf4b68)
Mellanox `mlx5` driver | 4.9 | [`86994156c736`](https://github.com/torvalds/linux/commit/86994156c736978d113e7927455d4eeeb2128b9f)
Netronome `nfp` driver | 4.10 | [`ecd63a0217d5`](https://github.com/torvalds/linux/commit/ecd63a0217d5f1e8a92f7516f5586d1177b95de2)
QLogic (Cavium) `qed*` drivers | 4.10 | [`496e05170958`](https://github.com/torvalds/linux/commit/496e051709588f832d7a6a420f44f8642b308a87)
`virtio_net` driver | 4.10 | [`f600b6905015`](https://github.com/torvalds/linux/commit/f600b690501550b94e83e07295d9c8b9c4c39f4e)
Broadcom `bnxt_en` driver | 4.11 | [`c6d30e8391b8`](https://github.com/torvalds/linux/commit/c6d30e8391b85e00eb544e6cf047ee0160ee9938)
Intel `ixgbe*` drivers | 4.12 | [`924708081629`](https://github.com/torvalds/linux/commit/9247080816297de4e31abb684939c0e53e3a8a67)
Cavium `thunderx` driver | 4.12 | [`05c773f52b96`](https://github.com/torvalds/linux/commit/05c773f52b96ef3fbc7d9bfa21caadc6247ef7a8)
Generic XDP | 4.12 | [`b5cdae3291f7`](https://github.com/torvalds/linux/commit/b5cdae3291f7be7a34e75affe4c0ec1f7f328b64)".# Helpers
The list of helpers supported in your kernel can be found in file."[`include/uapi/linux/bpf.h`](https://github.com/torvalds/linux/blob/master/include/uapi/linux/bpf.h):
```sh
git grep ' FN(' include/uapi/linux/bpf.h
Alphabetical order
Helper | Kernel version | License | Commit |
---|---|---|---|
BPF_FUNC_bind() |
4.17 | d74bad4e74ee |
|
BPF_FUNC_bprm_opts_set() |
5.11 | 3f6719c7b62f |
|
BPF_FUNC_btf_find_by_name_kind() |
5.14 | 3d78417b60fb |
|
BPF_FUNC_cgrp_storage_delete() |
6.2 | c4bcfb38a95e |
|
BPF_FUNC_cgrp_storage_get() |
6.2 | c4bcfb38a95e |
|
BPF_FUNC_check_mtu() |
5.12 | 34b2021cc616 |
|
BPF_FUNC_clone_redirect() |
4.2 | 3896d655f4d4 |
|
BPF_FUNC_copy_from_user() |
5.10 | 07be4c4a3e7a |
|
BPF_FUNC_copy_from_user_task() |
5.18 | GPL | 376040e47334 |
BPF_FUNC_csum_diff() |
4.6 | 7d672345ed29 |
|
BPF_FUNC_csum_level() |
5.7 | 7cdec54f9713 |
|
BPF_FUNC_csum_update() |
4.9 | 36bbef52c7eb ". |
Helper | Kernel version | License | Commit |
---|---|---|---|
BPF_FUNC_bind() |
4.17 | d74bad4e74ee |
|
BPF_FUNC_bprm_opts_set() |
5.11 | 3f6719c7b62f |
|
BPF_FUNC_btf_find_by_name_kind() |
5.14 | 3d78417b60fb |
|
BPF_FUNC_cgrp_storage_delete() |
6.2 | c4bcfb38a95e |
|
BPF_FUNC_cgrp_storage_get() |
6.2 | c4bcfb38a95e |
|
BPF_FUNC_check_mtu() |
5.12 | 34b2021cc616 |
|
BPF_FUNC_clone_redirect() |
4.2 | 3896d655f4d4 |
|
BPF_FUNC_copy_from_user() |
5.10 | 07be4c4a3e7a |
|
BPF_FUNC_copy_from_user_task() |
5.18 | GPL | 376040e47334 |
BPF_FUNC_csum_diff() |
4.6 | 7d672345ed29 |
|
BPF_FUNC_csum_level() |
5.7 | 7cdec54f9713 |
|
BPF_FUNC_csum_update() |
4.9 | 36bbef52c7eb ".BPF_FUNC_current_task_under_cgroup() |
|
BPF_FUNC_d_path() |
5.10 | 6e22ab9da793 |
|
BPF_FUNC_dynptr_data() |
5.19 | 34d4ef5775f7 |
|
BPF_FUNC_dynptr_from_mem() |
5.19 | 263ae152e962 |
|
BPF_FUNC_dynptr_read() |
5.19 | 13bbbfbea759 |
|
BPF_FUNC_dynptr_write() |
5.19 | 13bbbfbea759 |
|
BPF_FUNC_fib_lookup() |
4.18 | GPL | 87f5fc7e48dd |
BPF_FUNC_find_vma() |
5.17 | 7c7e3d31e785 |
|
BPF_FUNC_for_each_map_elem() |
5.13 | 69c087ba6225 |
|
BPF_FUNC_get_attach_cookie() |
5.15 | 7adfc6c9b315 |
|
BPF_FUNC_get_branch_snapshot() |
5.16 | GPL | 856c02dbce4f |
BPF_FUNC_get_current_ancestor_cgroup_id() |
5.6 | b4490c5c4e02 |
|
BPF_FUNC_get_cgroup_classid() |
4.3 | 8d20aabe1c76 |
|
BPF_FUNC_get_current_cgroup_id() |
4.18 | bf6fa2c893c5 "BPF_FUNC_get_current_comm() |
|
BPF_FUNC_get_current_pid_tgid() |
4.2 | ffeedafbf023 |
|
BPF_FUNC_get_current_task() |
4.8 | GPL | 606274c5abd8 |
BPF_FUNC_get_current_task_btf() |
5.11 | GPL | 3ca1032ab7ab |
BPF_FUNC_get_current_uid_gid() |
4.2 | ffeedafbf023 |
|
BPF_FUNC_get_func_arg() |
5.17 | f92c1e183604 |
|
BPF_FUNC_get_func_arg_cnt() |
5.17 | f92c1e183604 |
|
BPF_FUNC_get_func_ip() |
5.15 | 5d8b583d04ae |
|
BPF_FUNC_get_func_ret() |
5.17 | f92c1e183604 |
|
BPF_FUNC_get_retval() |
5.18 | b44123b4a3dc |
|
BPF_FUNC_get_hash_recalc() |
4.8 | 13c5c240f789 |
|
BPF_FUNC_get_listener_sock() |
5.1 | dbafd7ddd623 |
|
BPF_FUNC_get_local_storage() |
4.19 | cd3394317653 |
|
BPF_FUNC_get_netns_cookie() |
5.7 | f318903c0bf4 ". |
Return only the translated content, not including the original text.BPF_FUNC_get_ns_current_pid_tgid()
| 5.7 | | b4490c5c4e02
BPF_FUNC_get_numa_node_id()
| 4.10 | | 2d0e30c30f84
BPF_FUNC_get_prandom_u32()
| 4.1 | | 03e69b508b6f
BPF_FUNC_get_route_realm()
| 4.4 | | c46646d0484f
BPF_FUNC_get_smp_processor_id()
| 4.1 | | c04167ce2ca0
BPF_FUNC_get_socket_cookie()
| 4.12 | | 91b8270f2a4d
BPF_FUNC_get_socket_uid()
| 4.12 | | 6acc5c291068
BPF_FUNC_get_stack()
| 4.18 | GPL | de2ff05f48af
BPF_FUNC_get_stackid()
| 4.6 | GPL | d5a3b1f69186
BPF_FUNC_get_task_stack()
| 5.9 | | fa28dcb82a38
BPF_FUNC_getsockopt()
| 4.15 | | cd86d1fd2102
BPF_FUNC_ima_file_hash()
| 5.18 | | 174b16946e39
BPF_FUNC_ima_inode_hash()
| 5.11 | | 27672f0d280a
BPF_FUNC_inode_storage_delete()
| 5.10 | | 8ea636848aca
`BPF_FUNC_inode_storage_get()
| 5.10 | | 8ea636848aca
BPF_FUNC_jiffies64()
| 5.5 | | 5576b991e9c1
BPF_FUNC_kallsyms_lookup_name()
| 5.16 | | d6aef08a872b
BPF_FUNC_kptr_xchg()
| 5.19 | | c0a5a21c25f3
BPF_FUNC_ktime_get_boot_ns()
| 5.8 | | 71d19214776e
BPF_FUNC_ktime_get_coarse_ns()
| 5.11 | | d05512618056
BPF_FUNC_ktime_get_ns()
| 4.1 | | d9847d310ab4
BPF_FUNC_ktime_get_tai_ns()
| 6.1 | | c8996c98f703
BPF_FUNC_l3_csum_replace()
| 4.1 | | 91bc4822c3d6
BPF_FUNC_l4_csum_replace()
| 4.1 | | 91bc4822c3d6
BPF_FUNC_load_hdr_opt()
| 5.10 | | 0813a841566f
BPF_FUNC_loop()
| 5.17 | | e6f2dd0f8067
BPF_FUNC_lwt_push_encap()
| 4.18 | | fe94cc290f53
BPF_FUNC_lwt_seg6_action()
| 4.18 | | fe94cc290f53
BPF_FUNC_lwt_seg6_adjust_srh()
| 4.18 | | fe94cc290f53
BPF_FUNC_lwt_seg6_store_bytes()
| 4.18 | | fe94cc290f53
BPF_FUNC_map_delete_elem()
| 3.19 | | d0003ec01c66
BPF_FUNC_map_lookup_elem()
| 3.19 | | d0003ec01c66
BPF_FUNC_map_lookup_percpu_elem()
| 5.19 | | 07343110b293
BPF_FUNC_map_peek_elem()
| 4.20 | | f1a2e44a3aec
BPF_FUNC_map_pop_elem()
| 4.20 | | f1a2e44a3aec
BPF_FUNC_map_push_elem()
| 4.20 | | f1a2e44a3aec
BPF_FUNC_map_update_elem()
| 3.19 | | d0003ec01c66
BPF_FUNC_msg_apply_bytes()
| 4.17 | | 2a100317c9eb
BPF_FUNC_msg_cork_bytes()
| 4.17 | | 91843d540a13
BPF_FUNC_msg_pop_data()
| 5.0 | | 7246d8ed4dcc
BPF_FUNC_msg_pull_data()
| 4.17 | | 015632bb30da
BPF_FUNC_msg_push_data()
| 4.20 | | 6fff607e2f14
".BPF_FUNC_msg_redirect_hash()
| 4.18 | | 81110384441a
BPF_FUNC_msg_redirect_map()
| 4.17 | | 4f738adba30a
BPF_FUNC_per_cpu_ptr()
| 5.10 | | eaa6bcb71ef6
|
BPF_FUNC_perf_event_output()
| 4.4 | GPL | a43eec304259
BPF_FUNC_perf_event_read()
| 4.3 | GPL | 35578d798400
BPF_FUNC_perf_event_read_value()
| 4.15 | GPL | 908432ca84fc
BPF_FUNC_perf_prog_read_value()
| 4.15 | GPL | 4bebdc7a85aa
BPF_FUNC_probe_read()
| 4.1 | GPL | 2541517c32be
BPF_FUNC_probe_read_kernel()
| 5.5 | GPL | 6ae08ae3dea2
BPF_FUNC_probe_read_kernel_str()
| 5.5 | GPL | 6ae08ae3dea2
BPF_FUNC_probe_read_user()
| 5.5 | GPL | 6ae08ae3dea2
BPF_FUNC_probe_read_user_str()
| 5.5 | GPL | 6ae08ae3dea2
BPF_FUNC_probe_read_str()
| 4.11 | GPL | a5e8c07059d0
BPF_FUNC_probe_write_user()
| 4.8 | GPL | 96ae52279594
| Function | Version | License | Commit Link |
| ------------- | ------- | ------- | ------------------------------------------------------------- |
| BPF_FUNC_rc_keydown() | 4.18 | GPL | f4364dcfc86d |
| BPF_FUNC_rc_pointer_rel() | 5.0 | GPL | 01d3240a04f4 |
| BPF_FUNC_rc_repeat() | 4.18 | GPL | f4364dcfc86d |
| BPF_FUNC_read_branch_records() | 5.6 | GPL | fff7b64355ea |
| BPF_FUNC_redirect() | 4.4 | | 27b29f63058d |
| BPF_FUNC_redirect_map() | 4.14 | | 97f91a7cf04f |
| BPF_FUNC_redirect_neigh() | 5.10 | | b4ab31414970 |
| BPF_FUNC_redirect_peer() | 5.10 | | 9aa1206e8f48 |
| BPF_FUNC_reserve_hdr_opt() | 5.10 | | 0813a841566f |
| BPF_FUNC_ringbuf_discard() | 5.8 | | 457f44363a88 |
| BPF_FUNC_ringbuf_discard_dynptr() | 5.19 | | bc34dee65a65 |
| BPF_FUNC_ringbuf_output() | 5.8 | | 457f44363a88 |
| BPF_FUNC_ringbuf_query() | 5.8 | | 457f44363a88 |
| BPF_FUNC_ringbuf_reserve() | 5.8 | | 457f44363a88 |"BPF_FUNC_ringbuf_reserve_dynptr()
| 5.19 | | bc34dee65a65
BPF_FUNC_ringbuf_submit()
| 5.8 | | 457f44363a88
BPF_FUNC_ringbuf_submit_dynptr()
| 5.19 | | bc34dee65a65
BPF_FUNC_send_signal()
| 5.3 | | 8b401f9ed244
BPF_FUNC_send_signal_thread()
| 5.5 | | 8482941f0906
BPF_FUNC_seq_printf()
| 5.7 | GPL | 492e639f0c22
BPF_FUNC_seq_printf_btf()
| 5.10 | | eb411377aed9
BPF_FUNC_seq_write()
| 5.7 | GPL | 492e639f0c22
BPF_FUNC_set_hash()
| 4.13 | | ded092cd73c2
BPF_FUNC_set_hash_invalid()
| 4.9 | | 7a4b28c6cc9f
BPF_FUNC_set_retval()
| 5.18 | | b44123b4a3dc
BPF_FUNC_setsockopt()
| 4.13 | | 8c4b4c7e9ff0
BPF_FUNC_sk_ancestor_cgroup_id()
| 5.7 | | f307fa2cb4c9
BPF_FUNC_sk_assign()
| 5.6 | | cf7fbe660f2d
".
format: Return only the translated content, not including the original text.BPF_FUNC_sk_cgroup_id()
| 5.7 | | f307fa2cb4c9
BPF_FUNC_sk_fullsock()
| 5.1 | | 46f8bc92758c
BPF_FUNC_sk_lookup_tcp()
| 4.20 | | 6acc9b432e67
BPF_FUNC_sk_lookup_udp()
| 4.20 | | 6acc9b432e67
BPF_FUNC_sk_redirect_hash()
| 4.18 | | 81110384441a
BPF_FUNC_sk_redirect_map()
| 4.14 | | 174a79ff9515
BPF_FUNC_sk_release()
| 4.20 | | 6acc9b432e67
BPF_FUNC_sk_select_reuseport()
| 4.19 | | 2dbb9b9e6df6
BPF_FUNC_sk_storage_delete()
| 5.2 | | 6ac99e8f23d4
BPF_FUNC_sk_storage_get()
| 5.2 | | 6ac99e8f23d4
BPF_FUNC_skb_adjust_room()
| 4.13 | | 2be7e212d541
BPF_FUNC_skb_ancestor_cgroup_id()
| 4.19 | | 7723628101aa
BPF_FUNC_skb_change_head()
| 4.10 | | 3a0af8fd61f9
BPF_FUNC_skb_change_proto()
| 4.8 | | 6578171a7ff0
BPF_FUNC_skb_change_tail()
| 4.9 | | 5293efe62df8
BPF_FUNC_skb_change_type()
| 4.8 | | d2485c4242a8
BPF_FUNC_skb_cgroup_classid()
| 5.10 | | b426ce83baa7
BPF_FUNC_skb_cgroup_id()
| 4.18 | | cb20b08ead40
BPF_FUNC_skb_ecn_set_ce()
| 5.1 | | f7c917ba11a6
BPF_FUNC_skb_get_tunnel_key()
| 4.3 | | d3aa45ce6b94
BPF_FUNC_skb_get_tunnel_opt()
| 4.6 | | 14ca0751c96f
BPF_FUNC_skb_get_xfrm_state()
| 4.18 | | 12bed760a78d
BPF_FUNC_skb_load_bytes()
| 4.5 | | 05c74e5e53f6
BPF_FUNC_skb_load_bytes_relative()
| 4.18 | | 4e1ec56cdc59
BPF_FUNC_skb_output()
| 5.5 | | a7658e1a4164
BPF_FUNC_skb_pull_data()
| 4.9 | | 36bbef52c7eb
BPF_FUNC_skb_set_tstamp()
| 5.18 | | 9bb984f28d5b
BPF_FUNC_skb_set_tunnel_key()
| 4.3 | | d3aa45ce6b94
BPF_FUNC_skb_set_tunnel_opt()
| 4.6 | | 14ca0751c96f
BPF_FUNC_skb_store_bytes()
| 4.1 | | 91bc4822c3d6
BPF_FUNC_skb_under_cgroup()
| 4.8 | | 4a482f34afcc
BPF_FUNC_skb_vlan_pop()
| 4.3 | | 4e10df9a60d9
BPF_FUNC_skb_vlan_push()
| 4.3 | | 4e10df9a60d9
BPF_FUNC_skc_lookup_tcp()
| 5.2 | | edbf8c01de5a
BPF_FUNC_skc_to_mctcp_sock()
| 5.19 | | 3bc253c2e652
BPF_FUNC_skc_to_tcp_sock()
| 5.9 | | 478cfbdf5f13
BPF_FUNC_skc_to_tcp_request_sock()
| 5.9 | | 478cfbdf5f13
BPF_FUNC_skc_to_tcp_timewait_sock()
| 5.9 | | 478cfbdf5f13
BPF_FUNC_skc_to_tcp6_sock()
| 5.9 | | af7ec1383361
BPF_FUNC_skc_to_udp6_sock()
| 5.9 | | 0d4fad3e57df
BPF_FUNC_skc_to_unix_sock()
| 5.16 | | 9eeb3aa33ae0
BPF_FUNC_snprintf()
| 5.13 | | 7b15523a989b
BPF_FUNC_snprintf_btf()
| 5.10 | | c4d0bfb45068
BPF_FUNC_sock_from_file()
| 5.11 | | 4f19cab76136
BPF_FUNC_sock_hash_update()
| 4.18 | | 81110384441a
BPF_FUNC_sock_map_update()
| 4.14 | | 174a79ff9515
BPF_FUNC_spin_lock()
| 5.1 | | d83525ca62cf
BPF_FUNC_spin_unlock()
| 5.1 | | d83525ca62cf
BPF_FUNC_store_hdr_opt()
| 5.10 | | 0813a841566f
BPF_FUNC_strncmp()
| 5.17 | | c5fb19937455
BPF_FUNC_strtol()
| 5.2 | | d7a4cb9b6705
BPF_FUNC_strtoul()
| 5.2 | | d7a4cb9b6705
BPF_FUNC_sys_bpf()
| 5.14 | | 79a7f8bdb159
BPF_FUNC_sys_close()
| 5.14 | | 3abea089246f
BPF_FUNC_sysctl_get_current_value()
| 5.2 | | 1d11b3016cec
BPF_FUNC_sysctl_get_name()
| 5.2 | | 808649fb787d
BPF_FUNC_sysctl_get_new_value()
| 5.2 | | 4e63acdff864
BPF_FUNC_sysctl_set_new_value()
| 5.2 | | 4e63acdff864
BPF_FUNC_tail_call()
| 4.2 | | 04fd61ab36ec
BPF_FUNC_task_pt_regs()
| 5.15 | GPL | dd6e10fbd9f
BPF_FUNC_task_storage_delete()
| 5.11 | | 4cf1bc1f1045
BPF_FUNC_task_storage_get()
| 5.11 | | 4cf1bc1f1045
BPF_FUNC_tcp_check_syncookie()
| 5.2 | | 399040847084
BPF_FUNC_tcp_gen_syncookie()
| 5.3 | | 70d66244317e
BPF_FUNC_tcp_raw_check_syncookie_ipv4()
| 6.0 | | 33bf9885040c
BPF_FUNC_tcp_raw_check_syncookie_ipv6()
| 6.0 | | 33bf9885040c
BPF_FUNC_tcp_raw_gen_syncookie_ipv4()
| 6.0 | | 33bf9885040c
BPF_FUNC_tcp_raw_gen_syncookie_ipv6()
| 6.0 | | 33bf9885040c
BPF_FUNC_tcp_send_ack()
| 5.5 | | 206057fe020a
".BPF_FUNC_tcp_sock()
| 5.1 | | 655a51e536c0
BPF_FUNC_this_cpu_ptr()
| 5.10 | | 63d9b80dcf2c
|
BPF_FUNC_timer_init()
| 5.15 | | b00628b1c7d5
BPF_FUNC_timer_set_callback()
| 5.15 | | b00628b1c7d5
BPF_FUNC_timer_start()
| 5.15 | | b00628b1c7d5
BPF_FUNC_timer_cancel()
| 5.15 | | b00628b1c7d5
BPF_FUNC_trace_printk()
| 4.1 | GPL | 9c959c863f82
BPF_FUNC_trace_vprintk()
| 5.16 | GPL | 10aceb629e19
BPF_FUNC_user_ringbuf_drain()
| 6.1 | | 205715673844
BPF_FUNC_xdp_adjust_head()
| 4.10 | | 17bedab27231
BPF_FUNC_xdp_adjust_meta()
| 4.15 | | de8f3a83b0a0
BPF_FUNC_xdp_adjust_tail()
| 4.18 | | b32cc5b9a346
BPF_FUNC_xdp_get_buff_len()
| 5.18 | | 0165cc817075
BPF_FUNC_xdp_load_bytes()
| 5.18 | | 3f364222d032
".
format: 返回仅翻译的内容, 不包括原文."BPF_FUNC_xdp_store_bytes()
| 5.18 | | 3f364222d032
BPF_FUNC_xdp_output()
| 5.6 | GPL | d831ee84bfc9
BPF_FUNC_override_return()
| 4.16 | GPL | 9802d86585db
BPF_FUNC_sock_ops_cb_flags_set()
| 4.16 | | b13d88072172
Note: GPL-only BPF helpers require a GPL-compatible license. The current licenses considered GPL-compatible by the kernel are:
- GPL
- GPL v2
- GPL and additional rights
- Dual BSD/GPL
- Dual MIT/GPL
- Dual MPL/GPL
Check the list of GPL-compatible licenses in your kernel source code.
Program Types
The list of program types and supported helper functions can be retrieved with:
Program Type | Helper Functions |
---|---|
BPF_PROG_TYPE_SOCKET_FILTER |
BPF_FUNC_skb_load_bytes() BPF_FUNC_skb_load_bytes_relative() BPF_FUNC_get_socket_cookie() BPF_FUNC_get_socket_uid() BPF_FUNC_perf_event_output() Base functions |
BPF_PROG_TYPE_KPROBE |
BPF_FUNC_perf_event_output() BPF_FUNC_get_stackid() BPF_FUNC_get_stack() BPF_FUNC_perf_event_read_value() BPF_FUNC_override_return() Tracing functions |
BPF_PROG_TYPE_TRACEPOINT |
BPF_FUNC_perf_event_output() BPF_FUNC_get_stackid() BPF_FUNC_get_stack() BPF_FUNC_d_path() Tracing functions |
BPF_PROG_TYPE_XDP |
BPF_FUNC_perf_event_output() BPF_FUNC_get_smp_processor_id() BPF_FUNC_csum_diff() BPF_FUNC_xdp_adjust_head() BPF_FUNC_xdp_adjust_meta() BPF_FUNC_redirect() BPF_FUNC_redirect_map() BPF_FUNC_xdp_adjust_tail() BPF_FUNC_fib_lookup() Base functions |
BPF_PROG_TYPE_PERF_EVENT |
BPF_FUNC_perf_event_output() BPF_FUNC_get_stackid() BPF_FUNC_get_stack() BPF_FUNC_perf_prog_read_value() Tracing functions |
BPF_PROG_TYPE_CGROUP_SOCK |
BPF_FUNC_get_current_uid_gid() Base functions |
BPF_PROG_TYPE_LWT_IN |
BPF_FUNC_lwt_push_encap() LWT functions Base functions |
BPF_PROG_TYPE_LWT_OUT |
LWT functions Base functions |
BPF_PROG_TYPE_LWT_XMIT |
BPF_FUNC_skb_get_tunnel_key() BPF_FUNC_skb_set_tunnel_key() BPF_FUNC_skb_get_tunnel_opt() BPF_FUNC_skb_set_tunnel_opt() BPF_FUNC_redirect() BPF_FUNC_clone_redirect() BPF_FUNC_skb_change_tail() BPF_FUNC_skb_change_head() BPF_FUNC_skb_store_bytes() BPF_FUNC_csum_update() BPF_FUNC_l3_csum_replace() BPF_FUNC_l4_csum_replace() BPF_FUNC_set_hash_invalid() LWT functions |
BPF_PROG_TYPE_SOCK_OPS |
BPF_FUNC_setsockopt() BPF_FUNC_getsockopt() BPF_FUNC_sock_ops_cb_flags_set() BPF_FUNC_sock_map_update() BPF_FUNC_sock_hash_update() BPF_FUNC_get_socket_cookie() Base functions |
BPF_PROG_TYPE_SK_SKB |
BPF_FUNC_skb_store_bytes() BPF_FUNC_skb_load_bytes() BPF_FUNC_skb_pull_data() BPF_FUNC_skb_change_tail() BPF_FUNC_skb_change_head() BPF_FUNC_get_socket_cookie() BPF_FUNC_get_socket_uid() BPF_FUNC_sk_redirect_map() BPF_FUNC_sk_redirect_hash() BPF_FUNC_sk_lookup_tcp() BPF_FUNC_sk_lookup_udp() BPF_FUNC_sk_release() Base functions |
BPF_PROG_TYPE_CGROUP_DEVICE |
BPF_FUNC_map_lookup_elem() BPF_FUNC_map_update_elem() BPF_FUNC_map_delete_elem() BPF_FUNC_get_current_uid_gid() BPF_FUNC_trace_printk() |
BPF_PROG_TYPE_RAW_TRACEPOINT |
BPF_FUNC_perf_event_output() BPF_FUNC_get_stackid() BPF_FUNC_get_stack() BPF_FUNC_skb_output() Tracing functions |
BPF_PROG_TYPE_CGROUP_SOCK_ADDR |
BPF_FUNC_get_current_uid_gid() BPF_FUNC_bind() BPF_FUNC_get_socket_cookie() Base functions |
BPF_PROG_TYPE_LWT_SEG6LOCAL |
BPF_FUNC_lwt_seg6_store_bytes() BPF_FUNC_lwt_seg6_action() BPF_FUNC_lwt_seg6_adjust_srh() LWT functions |
BPF_PROG_TYPE_LIRC_MODE2 |
BPF_FUNC_rc_repeat() BPF_FUNC_rc_keydown() BPF_FUNC_rc_pointer_rel() BPF_FUNC_map_lookup_elem() BPF_FUNC_map_update_elem() BPF_FUNC_map_delete_elem() BPF_FUNC_ktime_get_ns() BPF_FUNC_tail_call() BPF_FUNC_get_prandom_u32() BPF_FUNC_trace_printk() |
BPF_PROG_TYPE_SK_REUSEPORT |
BPF_FUNC_sk_select_reuseport() BPF_FUNC_skb_load_bytes() BPF_FUNC_load_bytes_relative() Base functions |
BPF_PROG_TYPE_FLOW_DISSECTOR |
BPF_FUNC_skb_load_bytes() Base functions |
Function Group | Functions |
---|---|
Base functions | BPF_FUNC_map_lookup_elem() BPF_FUNC_map_update_elem() BPF_FUNC_map_delete_elem() BPF_FUNC_map_peek_elem() BPF_FUNC_map_pop_elem() BPF_FUNC_map_push_elem() BPF_FUNC_get_prandom_u32() BPF_FUNC_get_smp_processor_id() BPF_FUNC_get_numa_node_id() BPF_FUNC_tail_call() BPF_FUNC_ktime_get_boot_ns() BPF_FUNC_ktime_get_ns() BPF_FUNC_trace_printk() BPF_FUNC_spin_lock() BPF_FUNC_spin_unlock() |
LWT functions |
BPF_FUNC_skb_load_bytes() BPF_FUNC_skb_pull_data() BPF_FUNC_csum_diff() BPF_FUNC_get_cgroup_classid() BPF_FUNC_get_route_realm() BPF_FUNC_get_hash_recalc() BPF_FUNC_perf_event_output() BPF_FUNC_get_smp_processor_id() BPF_FUNC_skb_under_cgroup() |