提问人:towi 提问时间:9/28/2023 更新时间:9/28/2023 访问量:37
如何使用 pyroute2 在 eBPF 编译器集合 (bcc) 中为出口 eBPF 程序添加流量控制过滤器?
How to add a traffic-control filter for an egress eBPF programm in the eBPF Compiler Collection (bcc) with pyroute2?
问:
我有一个 eBPF 程序,可以修改出口/传出 UDP 数据包。
我想我通过将其添加到出口流量控制过滤器来激活它。
因为我使用,所以我使用包。bcc
pyroute2
但这失败了:
import sys
import time
from pyroute2 import IPRoute, NetNS, IPDB, NSPopen
from bcc import BPF
def main():
b = BPF(src_file="my_example.c", cflags=["-Wno-macro-redefined"])
fn = b.load_func("my_example", BPF.SCHED_CLS)
ipr = IPRoute()
ipr.tc("add", "clsact", 3) # '3' for my wifi interface as shown with "ip a"
ipr.tc("add-filter", "bpf", 3, classid=1, fd=fn.fd, name=fn.name, direct_action=True) # <<<
if __name__ == "__main__":
main()
我得到的错误是
pyroute2.netlink.exceptions.NetlinkError: (2, 'No such file or directory')
唉,堆栈跟踪是不确定的,既不显示缺少哪个文件或目录,也不显示哪个命令失败了。
答: 暂无答案
评论