我刚刚从内核tools/testing/selftests/bpf编译了BPF示例,并尝试加载http://cilium.readthedocs.io/en/v0.10/bpf/中解释的
% tc filter add dev enp0s1 ingress bpf \
object-file ./net-next.git/tools/testing/selftests/bpf/sockmap_parse_prog.o \
section sk_skb1 verbose
Program section 'sk_skb1' not found in ELF file!
Error fetching program/map!这发生在Ubuntu16.04.3LTS上,内核为4.4.0-98,llvm和clang的版本3.8是从包中安装的,iproute2是github的最新版本。
我怀疑我遇到了一些工具链/内核版本/特性不匹配。
我做错了什么?
发布于 2017-11-22 11:16:48
我不知道tc为什么抱怨。在我的设置中,使用类似的命令,程序将加载。不过,以下是一些提示:
skb->data和skb->data_end的原因。sockmap_parse_prog.c不打算与tc一起使用。它应该直接附加到套接字上(在同一目录下的文件SOCKMAP_PARSE_PROG中搜索test_maps.c以查看它是如何加载的)。从技术上讲,这并不妨碍将程序附加为tc筛选器,但它可能不会像预期的那样工作。特别是,从程序返回的值可能没有tc分类器钩子会理解的含义。因此,我建议尝试使用最近的内核,并看看您是否有更多的成功。或者,尝试编译并运行您可以在自己的内核源代码中找到的示例。祝好运!
https://stackoverflow.com/questions/47427474
复制相似问题