【问题标题】:net/core/filter.c and linux/bpf/verifier.cnet/core/filter.c 和 linux/bpf/verifier.c
【发布时间】:2019-09-07 14:17:07
【问题描述】:

如果我最初理解得很好,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) 在最后一个net/core/filter.c 中运行jitted/converted cbpf 过滤器的实际调用在哪里?

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

【问题讨论】:

    标签: c kernel bpf ebpf


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 2019-11-07
      • 2019-10-05
      • 2014-08-22
      • 2023-04-11
      • 1970-01-01
      • 1970-01-01
      • 2017-08-09
      • 2017-05-26
      • 1970-01-01
      相关资源
      最近更新 更多