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