我正在尝试弄清楚如何运行XDP代码:
#include <linux/bpf.h>
int main() {
return XDP_PASS;
}
我试图让XDP丢弃所有的数据包,所以我将其编译为:
clang -target bpf -c xdp.c -o xdp.o
我的接口名是enp 5s 0。
所以我试着把代码附加到接口上,输入:
ip -force link set dev enp5s0 xdpdrv obj xdp.o sec .text
然后我得到以下错误:
mkdir /sys/fs/bpf/tc/ failed: Permission denied
Continuing without mounted eBPF fs. Too old kernel?
Prog section '.text' rejected: Operation not permitted (1)!
- Type: 6
- Instructions: 2 (0 over limit)
- License :
Verifier analysis:
Error fetching program/map!
我不知道出了什么问题......我试图得到一个XDP,我已经尝试修复这个问题三天,但没有结果......我真的很感激,如果你们能帮我!
3条答案
按热度按时间o8x7eapl1#
你能检查内核版本.它应该是4.8以上
m4pnthwp2#
您是否以超级用户身份运行
ip
?您是否可以尝试运行ip -force link set dev enp5s0 xdp obj xdp.o sec .text
而不是ip -force link set dev enp5s0 xdpdrv obj xdp.o sec .text
?首先在尽力模式下使用xdp。可能您的设备驱动程序不支持XDP驱动程序。另一个提示:可以使用SEC("name_section")
指定所需的代码段,然后使用name_section
而不是.text
j13ufse23#
您需要在附加XDP程序之前安装bpffs。