net/core/filter.c 和 linux/bpf/verifier.c

net/core/filter.c and 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。 whilesk_chk_filter检查指令是否全部合法

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

问题:

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

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

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