linux 尝试在设备驱动程序上运行XDP时出错

zysjyyx4  于 2023-03-01  发布在  Linux
关注(0)|答案(3)|浏览(305)

我正在尝试弄清楚如何运行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,我已经尝试修复这个问题三天,但没有结果......我真的很感激,如果你们能帮我!

o8x7eapl

o8x7eapl1#

你能检查内核版本.它应该是4.8以上

m4pnthwp

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

j13ufse2

j13ufse23#

您需要在附加XDP程序之前安装bpffs。

mount bpffs /sys/fs/bpf -t bpf

相关问题