KFunc bpf_cast_to_kern_ctx
Definition
void *bpf_cast_to_kern_ctx(void *obj)
Usage
The purpose of this kfunc is to cast the uAPI context programs get by default, into a kernel pointer that is allowed to access the kernel type.
So for example an BPF_PROG_TYPE_SCHED_CLS
program would get a struct __sk_buff*
as the context, passing it to this kfunc would return a struct sk_buff*
which is less stable but has more fields. CO-RE should be used to access the fields of the struct sk_buff*
to ensure the program is compatible with different kernel versions.
Program types
The following program types can make use of this kfunc:
- BPF_PROG_TYPE_CGROUP_SKB
- BPF_PROG_TYPE_CGROUP_SOCK_ADDR
- BPF_PROG_TYPE_LSM
- BPF_PROG_TYPE_LWT_IN
- BPF_PROG_TYPE_LWT_OUT
- BPF_PROG_TYPE_LWT_SEG6LOCAL
- BPF_PROG_TYPE_LWT_XMIT
- BPF_PROG_TYPE_NETFILTER
- BPF_PROG_TYPE_SCHED_ACT
- BPF_PROG_TYPE_SCHED_CLS
- BPF_PROG_TYPE_SK_SKB
- BPF_PROG_TYPE_SOCKET_FILTER
- BPF_PROG_TYPE_STRUCT_OPS
- BPF_PROG_TYPE_SYSCALL
- BPF_PROG_TYPE_TRACING
- BPF_PROG_TYPE_XDP
Example
Docs could be improved
This part of the docs is incomplete, contributions are very welcome