第一部分需要 BPF_PROG_TYPE_SOCK_OPS BPF 程序来做,在建立套接字连接的时候,监听主动建连(BPF_SOCK_OPS_ACTIVE_ESTABLISHED_CB)和被动建连(BPF_SOCK_OPS_PASSIVE_ESTABLISHED_CB)事件,利用 bpf_sock_hash_update 函数将套接字存储到 sockmap(BPF_MAP_TYPE_SOCKHASH) 之中。 第二部分就需要 BPF_PROG_TYPE_...
这是引入BPF_PROG_TYPE_SOCK_OPS程序类型的提交:https://github.com/torvalds/linux/commit/40304b2a1...
This patch adds a BPF_PROG_TYPE_SK_REUSEPORT which can select a SO_REUSEPORT sk from a BPF_MAP_TYPE_REUSEPORT_ARRAY. Like other non SK_FILTER/CGROUP_SKB program, it requires CAP_SYS_ADMIN. BPF_PROG_TYPE_SK_REUSEPORT introduces "struct sk_reuseport_kern" to store the bpf context inst...
BPF 程序类型定义BPF 相关的程序,首先需要设置为相对应的的程序类型,截止Linux 内核 5.8 程序类型定义有 29 个,而且还是持续增加中,完整的列表可参见 bpf.h。Linux 5.9 版本 30 个, 分析代码基于linux v5.8 tag BPF 程序类型(prog_type)决定了程序可以调用的内核辅助函数的子集。BPF 程序类型也决定了程序输入...
void bpf_user_rnd_init_once(void); u64 bpf_user_rnd_u32(u64 r1, u64 r2, u64 r3, u64 r4, u64 r5); 4 changes: 4 additions & 0 deletions 4 include/linux/bpf_types.h Original file line numberDiff line numberDiff line change @@ -70,6 +70,10 @@ BPF_PROG_TYPE(BPF_PROG_...
owner:BPF_PROG_TYPE_TRACINGJITed 4207:BPF_MAP_TYPE_PROG_ARRAYjmp_table owner:BPF_PROG_TYPE_SCHED_CLSJITed poke:2295:BPF_PROG_TYPE_EXTentrytail_call_reachable 4208:BPF_MAP_TYPE_ARRAYtailcall.bss 4247:BPF_MAP_TYPE_PROG_ARRAYjmp_table ...
The "missing BPF prog type" problem is solved. How to reproduce this error: $ cd samples/bpf $ sudo ./sockex3 libbpf: prog 'bpf_func_PARSE_IP': missing BPF prog type, check ELF section name 'socket/3' libbpf: prog 'bpf_func_PARSE_IP': failed to load: -22 libbpf: failed to ...
owner:BPF_PROG_TYPE_TRACINGJITed 4207:BPF_MAP_TYPE_PROG_ARRAYjmp_table owner:BPF_PROG_TYPE_SCHED_CLSJITed poke:2295:BPF_PROG_TYPE_EXTentrytail_call_reachable 4208:BPF_MAP_TYPE_ARRAYtailcall.bss 4247:BPF_MAP_TYPE_PROG_ARRAYjmp_table ...