ebpf 程序加载错误:未知 func bpf_l4_csum_replace#11

don*_*ing 2 linux-kernel bpf ebpf

我正在使用 ebpf 测试 nat 程序。但是 ebpf prog 加载器会抛出错误消息:

221: (85) call bpf_l4_csum_replace#11
unknown func bpf_l4_csum_replace#11  
Run Code Online (Sandbox Code Playgroud)

这是什么意思 ?怎么解决呢?谢谢。

Qeo*_*ole 7

类似的消息可能意味着您的内核不知道您尝试使用的 BPF 帮助程序,因为例如您的内核太旧或帮助程序已根据内核配置选项编译出来。但在这些情况下,您不会在验证程序日志中看到该函数的名称。

这里可能发生的情况是,您的内核确实支持 BPF 帮助程序,但您尝试加载的BPF 程序的类型与该帮助程序不兼容。例如,如果您的程序的类型为socket_filter,则不能使用此帮助程序(请参阅sk_filter_func_proto()用于检查的函数)。如果您的程序是 TC 分类器,您就可以使用它。