gpt4 book ai didi

c - 如何使用 bpf 返回数据包

转载 作者:行者123 更新时间:2023-12-04 10:26:57 27 4
gpt4 key购买 nike

我想使用 bpf 过滤数据包。我研究了bpf手册并编写了过滤器。这是我的过滤器的最后一行:

BPF_STMT(BPF_LD+BPF_W+BPF_ABS, 16),

我加载了ip包长度。现在我要回 sizeof(struct ether_header)加上上面的长度。

我该如何编写这个过滤器?

最佳答案

在这里,您将数据包中的一个单词加载到累加器中:

BPF_STMT(BPF_LD+BPF_W+BPF_ABS, 16),

首先,您必须将以太网 header 的大小(14 字节)添加到累加器:
BPF_STMT(BPF_ALU+BPF_ADD+BPF_K, 14),

然后,您在累加器中返回此值以将数据发送到用户空间:
BPF_STMT(BPF_RET+BPF_A, 0)

笔记:

如果你想提取IP总长度,你必须在你的第一条语句中加载一个半字(IP总长度只是一个16位的值,所以使用 BPF_H 而不是 BPF_W )

关于c - 如何使用 bpf 返回数据包,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60601454/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com