首页 > 解决方案 > net/core/filter.c 和 linux/bpf/verifier.c

问题描述

如果我最初理解得很好,那么 cBPF 验证器和解释器都在net/core/fiter.c例如sk_run_filter这里https://elixir.bootlin.com/linux/v3.2/source/net/core/filter.c#L112只需转换应用它们的 cBPF 指令在仿真寄存器上和直接在 sk_buff 上。同时sk_chk_filter检查说明是否全部合法。

目前我已经看到 filter.c 中仍然有一个bpf_check_classic函数可以替代旧的sk_chk_filter. 检查后尝试 JIT 程序,如果不可能,下一步是将 cBPF 转换为 eBPF。

问题:

1)最后运行jitted/converted cbpf过滤器的实际调用在net/core/filter.c哪里?

2) 将 cBPF 程序作为 eBPF 程序执行的函数调用序列是什么?

标签: ckernelbpfebpf

解决方案


据我所知,cBPF 程序仅用于 seccomp-bpf 和套接字过滤器。


推荐阅读