The table below lists the program types, their attach types where relevant and the ELF section names supported by libbpf for them. The ELF section names follow these rules:
type
is an exact match, e.g.SEC("socket")
type+
means it can be either exactSEC("type")
or well-formedSEC("type/extras")
with a '/
' separator betweentype
andextras
.
When extras
are specified, they provide details of how to auto-attach the BPF program. The format of extras
depends on the program type, e.g. SEC("tracepoint/<category>/<name>")
for tracepoints or SEC("usdt/<path>:<provider>:<name>")
for USDT probes. The extras are described in more detail in the footnotes.
+-------------------------------------------+----------------------------------------+----------------------------------+-----------+ | Program Type | Attach Type | ELF Section Name | Sleepable | +===========================================+========================================+==================================+===========+ | BPF_PROG_TYPE_CGROUP_DEVICE
| BPF_CGROUP_DEVICE
| cgroup/dev
| | +-------------------------------------------+----------------------------------------+----------------------------------+-----------+ | BPF_PROG_TYPE_CGROUP_SKB
| | cgroup/skb
| | + +----------------------------------------+----------------------------------+-----------+ | | BPF_CGROUP_INET_EGRESS
| cgroup_skb/egress
| | + +----------------------------------------+----------------------------------+-----------+ | | BPF_CGROUP_INET_INGRESS
| cgroup_skb/ingress
| | +-------------------------------------------+----------------------------------------+----------------------------------+-----------+ | BPF_PROG_TYPE_CGROUP_SOCKOPT
| BPF_CGROUP_GETSOCKOPT
| cgroup/getsockopt
| | + +----------------------------------------+----------------------------------+-----------+ | | BPF_CGROUP_SETSOCKOPT
| cgroup/setsockopt
| | +-------------------------------------------+----------------------------------------+----------------------------------+-----------+ | BPF_PROG_TYPE_CGROUP_SOCK_ADDR
| BPF_CGROUP_INET4_BIND
| cgroup/bind4
| | + +----------------------------------------+----------------------------------+-----------+ | | BPF_CGROUP_INET4_CONNECT
| cgroup/connect4
| | + +----------------------------------------+----------------------------------+-----------+ | | BPF_CGROUP_INET4_GETPEERNAME
| cgroup/getpeername4
| | + +----------------------------------------+----------------------------------+-----------+ | | BPF_CGROUP_INET4_GETSOCKNAME
| cgroup/getsockname4
| | + +----------------------------------------+----------------------------------+-----------+ | | BPF_CGROUP_INET6_BIND
| cgroup/bind6
| | + +----------------------------------------+----------------------------------+-----------+ | | BPF_CGROUP_INET6_CONNECT
| cgroup/connect6
| | + +----------------------------------------+----------------------------------+-----------+ | | BPF_CGROUP_INET6_GETPEERNAME
| cgroup/getpeername6
| | + +----------------------------------------+----------------------------------+-----------+ | | BPF_CGROUP_INET6_GETSOCKNAME
| cgroup/getsockname6
| | + +----------------------------------------+----------------------------------+-----------+ | | BPF_CGROUP_UDP4_RECVMSG
| cgroup/recvmsg4
| | + +----------------------------------------+----------------------------------+-----------+ | | BPF_CGROUP_UDP4_SENDMSG
| cgroup/sendmsg4
| | + +----------------------------------------+----------------------------------+-----------+ | | BPF_CGROUP_UDP6_RECVMSG
| cgroup/recvmsg6
| | + +----------------------------------------+----------------------------------+-----------+ | | BPF_CGROUP_UDP6_SENDMSG
| cgroup/sendmsg6
| | +-------------------------------------------+----------------------------------------+----------------------------------+-----------+ | BPF_PROG_TYPE_CGROUP_SOCK
| BPF_CGROUP_INET4_POST_BIND
| cgroup/post_bind4
| | + +----------------------------------------+----------------------------------+-----------+ | | BPF_CGROUP_INET6_POST_BIND
| cgroup/post_bind6
| | + +----------------------------------------+----------------------------------+-----------+ | | BPF_CGROUP_INET_SOCK_CREATE
| cgroup/sock_create
| | + + +----------------------------------+-----------+ | | | cgroup/sock
| | + +----------------------------------------+----------------------------------+-----------+ | | BPF_CGROUP_INET_SOCK_RELEASE
| cgroup/sock_release
| | +-------------------------------------------+----------------------------------------+----------------------------------+-----------+ | BPF_PROG_TYPE_CGROUP_SYSCTL
| BPF_CGROUP_SYSCTL
| cgroup/sysctl
| | +-------------------------------------------+----------------------------------------+----------------------------------+-----------+ | BPF_PROG_TYPE_EXT
| | freplace+
1 | | +-------------------------------------------+----------------------------------------+----------------------------------+-----------+ | BPF_PROG_TYPE_FLOW_DISSECTOR
| BPF_FLOW_DISSECTOR
| flow_dissector
| | +-------------------------------------------+----------------------------------------+----------------------------------+-----------+ | BPF_PROG_TYPE_KPROBE
| | kprobe+
2 | | + + +----------------------------------+-----------+ | | | kretprobe+
3 | | + + +----------------------------------+-----------+ | | | ksyscall+
4 | | + + +----------------------------------+-----------+ | | | kretsyscall+
5 | | + + +----------------------------------+-----------+ | | | uprobe+
6 | | + + +----------------------------------+-----------+ | | | uprobe.s+
7 | Yes | + + +----------------------------------+-----------+ | | | uretprobe+
8 | | + + +----------------------------------+-----------+ | | | uretprobe.s+
9 | Yes | + + +----------------------------------+-----------+ | | | usdt+
10 | | + +----------------------------------------+----------------------------------+-----------+ | | BPF_TRACE_KPROBE_MULTI
| kprobe.multi+
11 | | + + +----------------------------------+-----------+ | | | kretprobe.multi+
12 | | +-------------------------------------------+----------------------------------------+----------------------------------+-----------+ | BPF_PROG_TYPE_LIRC_MODE2
| BPF_LIRC_MODE2
| lirc_mode2
| | +-------------------------------------------+----------------------------------------+----------------------------------+-----------+ | BPF_PROG_TYPE_LSM
| BPF_LSM_CGROUP
| lsm_cgroup+
| | + +----------------------------------------+----------------------------------+-----------+ | | BPF_LSM_MAC
| lsm+
13 | | + + +----------------------------------+-----------+ | | | lsm.s+
14 | Yes | +-------------------------------------------+----------------------------------------+----------------------------------+-----------+ | BPF_PROG_TYPE_LWT_IN
| | lwt_in
| | +-------------------------------------------+----------------------------------------+----------------------------------+-----------+ | BPF_PROG_TYPE_LWT_OUT
| | lwt_out
| | +-------------------------------------------+----------------------------------------+----------------------------------+-----------+ | BPF_PROG_TYPE_LWT_SEG6LOCAL
| | lwt_seg6local
| | +-------------------------------------------+----------------------------------------+----------------------------------+-----------+ | BPF_PROG_TYPE_LWT_XMIT
| | lwt_xmit
| | +-------------------------------------------+----------------------------------------+----------------------------------+-----------+ | BPF_PROG_TYPE_PERF_EVENT
| | perf_event
| | +-------------------------------------------+----------------------------------------+----------------------------------+-----------+ | BPF_PROG_TYPE_RAW_TRACEPOINT_WRITABLE
| | raw_tp.w+
15 | | + + +----------------------------------+-----------+ | | | raw_tracepoint.w+
| | +-------------------------------------------+----------------------------------------+----------------------------------+-----------+ | BPF_PROG_TYPE_RAW_TRACEPOINT
| | raw_tp+
16 | | + + +----------------------------------+-----------+ | | | raw_tracepoint+
| | +-------------------------------------------+----------------------------------------+----------------------------------+-----------+ | BPF_PROG_TYPE_SCHED_ACT
| | action
| | +-------------------------------------------+----------------------------------------+----------------------------------+-----------+ | BPF_PROG_TYPE_SCHED_CLS
| | classifier
| | + + +----------------------------------+-----------+ | | | tc
| | +-------------------------------------------+----------------------------------------+----------------------------------+-----------+ | BPF_PROG_TYPE_SK_LOOKUP
| BPF_SK_LOOKUP
| sk_lookup
| | +-------------------------------------------+----------------------------------------+----------------------------------+-----------+ | BPF_PROG_TYPE_SK_MSG
| BPF_SK_MSG_VERDICT
| sk_msg
| | +-------------------------------------------+----------------------------------------+----------------------------------+-----------+ | BPF_PROG_TYPE_SK_REUSEPORT
| BPF_SK_REUSEPORT_SELECT_OR_MIGRATE
| sk_reuseport/migrate
| | + +----------------------------------------+----------------------------------+-----------+ | | BPF_SK_REUSEPORT_SELECT
| sk_reuseport
| | +-------------------------------------------+----------------------------------------+----------------------------------+-----------+ | BPF_PROG_TYPE_SK_SKB
| | sk_skb
| | + +----------------------------------------+----------------------------------+-----------+ | | BPF_SK_SKB_STREAM_PARSER
| sk_skb/stream_parser
| | + +----------------------------------------+----------------------------------+-----------+ | | BPF_SK_SKB_STREAM_VERDICT
| sk_skb/stream_verdict
| | +-------------------------------------------+----------------------------------------+----------------------------------+-----------+ | BPF_PROG_TYPE_SOCKET_FILTER
| | socket
| | +-------------------------------------------+----------------------------------------+----------------------------------+-----------+ | BPF_PROG_TYPE_SOCK_OPS
| BPF_CGROUP_SOCK_OPS
| sockops
| | +-------------------------------------------+----------------------------------------+----------------------------------+-----------+ | BPF_PROG_TYPE_STRUCT_OPS
| | struct_ops+
| | +-------------------------------------------+----------------------------------------+----------------------------------+-----------+ | BPF_PROG_TYPE_SYSCALL
| | syscall
| Yes | +-------------------------------------------+----------------------------------------+----------------------------------+-----------+ | BPF_PROG_TYPE_TRACEPOINT
| | tp+
17 | | + + +----------------------------------+-----------+ | | | tracepoint+
18 | | +-------------------------------------------+----------------------------------------+----------------------------------+-----------+ | BPF_PROG_TYPE_TRACING
| BPF_MODIFY_RETURN
| fmod_ret+
19 | | + + +----------------------------------+-----------+ | | | fmod_ret.s+
20 | Yes | + +----------------------------------------+----------------------------------+-----------+ | | BPF_TRACE_FENTRY
| fentry+
21 | | + + +----------------------------------+-----------+ | | | fentry.s+
22 | Yes | + +----------------------------------------+----------------------------------+-----------+ | | BPF_TRACE_FEXIT
| fexit+
23 | | + + +----------------------------------+-----------+ | | | fexit.s+
24 | Yes | + +----------------------------------------+----------------------------------+-----------+ | | BPF_TRACE_ITER
| iter+
25 | | + + +----------------------------------+-----------+ | | | iter.s+
26 | Yes | + +----------------------------------------+----------------------------------+-----------+ | | BPF_TRACE_RAW_TP
| tp_btf+
27 | | +-------------------------------------------+----------------------------------------+----------------------------------+-----------+ | BPF_PROG_TYPE_XDP
| BPF_XDP_CPUMAP
| xdp.frags/cpumap
| | + + +----------------------------------+-----------+ | | | xdp/cpumap
| | + +----------------------------------------+----------------------------------+-----------+ | | BPF_XDP_DEVMAP
| xdp.frags/devmap
| | + + +----------------------------------+-----------+ | | | xdp/devmap
| | + +----------------------------------------+----------------------------------+-----------+ | | BPF_XDP
| xdp.frags
| | + + +----------------------------------+-----------+ | | | xdp
| | +-------------------------------------------+----------------------------------------+----------------------------------+-----------+
Footnotes
The
fentry
attach format isfentry[.s]/<function>
.↩The
kprobe
attach format iskprobe/<function>[+<offset>]
. Valid characters forfunction
area-zA-Z0-9_.
andoffset
must be a valid non-negative integer.↩The
kprobe
attach format iskprobe/<function>[+<offset>]
. Valid characters forfunction
area-zA-Z0-9_.
andoffset
must be a valid non-negative integer.↩The
ksyscall
attach format isksyscall/<syscall>
.↩The
ksyscall
attach format isksyscall/<syscall>
.↩The
uprobe
attach format isuprobe[.s]/<path>:<function>[+<offset>]
.↩The
uprobe
attach format isuprobe[.s]/<path>:<function>[+<offset>]
.↩The
uprobe
attach format isuprobe[.s]/<path>:<function>[+<offset>]
.↩The
uprobe
attach format isuprobe[.s]/<path>:<function>[+<offset>]
.↩The
usdt
attach format isusdt/<path>:<provider>:<name>
.↩The
kprobe.multi
attach format iskprobe.multi/<pattern>
wherepattern
supports*
and?
wildcards. Valid characters for pattern area-zA-Z0-9_.*?
.↩The
kprobe.multi
attach format iskprobe.multi/<pattern>
wherepattern
supports*
and?
wildcards. Valid characters for pattern area-zA-Z0-9_.*?
.↩The
lsm
attachment format islsm[.s]/<hook>
.↩The
lsm
attachment format islsm[.s]/<hook>
.↩The
raw_tp
attach format israw_tracepoint[.w]/<tracepoint>
.↩The
raw_tp
attach format israw_tracepoint[.w]/<tracepoint>
.↩The
tracepoint
attach format istracepoint/<category>/<name>
.↩The
tracepoint
attach format istracepoint/<category>/<name>
.↩The
fentry
attach format isfentry[.s]/<function>
.↩The
fentry
attach format isfentry[.s]/<function>
.↩The
fentry
attach format isfentry[.s]/<function>
.↩The
fentry
attach format isfentry[.s]/<function>
.↩The
fentry
attach format isfentry[.s]/<function>
.↩The
fentry
attach format isfentry[.s]/<function>
.↩The
iter
attach format isiter[.s]/<struct-name>
.↩The
iter
attach format isiter[.s]/<struct-name>
.↩The
fentry
attach format isfentry[.s]/<function>
.↩