ebpf程序实例

1740阅读 0评论2021-01-07 静默梧桐
分类:LINUX

这里写一个非常简单的ebpf程序,粗暴的丢弃所有的报文。

#include

__attribute__((section("bpf_ingress"), used))
int bpf_prog(void *ctx) {
    return 2;   // drop skb
}

1.编译指令
clang -O2 -g -target bpf -c bpf_test.c -o bpf_test.o

2.加载bpf指令
tc qdisc add dev vxlan100 clsact
tc filter add dev vxlan100 ingress bpf da obj bpf_test.o sec bpf_ingress
tc filter show dev vxlan100 ingress

3.删除bpf prog指令
tc filter del dev vxlan100 ingress
tc qdisc del dev vxlan100 clsact

测试


测试环境:
在两台机器之间预先建立vxlan连接。

测试步骤:
1.右边机器ping左边窗口地址,ping success;
2.编译bpf prog;
3.加载bpf prog;
4.右边机器ping左边窗口地址,ping fail;
5.移除bpf prog;
6.右边机器ping左边窗口地址,ping success;

上一篇:Cache and Self-Modifying Code
下一篇:GCC:关于-fpatchable-function-entry的一个issue