#ebpf #xdp

rebpf

基于libbpf构建的ebpf库(无bcc依赖)

6个版本

0.1.5 2020年8月28日
0.1.4 2020年6月17日
0.1.2 2020年4月22日
0.1.1 2020年3月24日

#8 in #xdp

每月下载量 34

MIT 许可证

48KB
1K SLoC

rebpf

rebpf是一个基于libbpf(无bcc依赖)构建的Rust库,允许编写和加载bpf程序。具体来说,该库提供以下功能:

  • libbpf-sys提供的libbpf原始绑定。
  • libbpf的安全包装。
  • 基于libbpf包装器构建的高级ebpf API。
  • 使用pdu在bpf程序中解析数据包,更多详情请参见packet_parser

源代码概览

  • rebpf在Cargo.toml中有"bpf"和"userspace"功能,默认情况下都启用,但如果你想只使用rebpf来编写bpf程序或bpf用户空间加载器,你可以选择其中一个。

  • 所有表示libbpf安全包装的函数和结构体都位于libbpf.rshelpers.rs中,与libbpf中函数和结构体的名称相同(结构体名称已从snake_case更改为caml_case)。

  • 所有表示高级ebpf api的函数和结构体都是基于libbpf安全包装构建的。高级ebpf api分为userspace以加载bpf程序和bpf以编写bpf程序。

使用方法

添加到您的Cargo.toml中

[dependencies]
rebpf = "0.1.5"

要使用rebpf库创建您的第一个ebpf程序,您可以复制并重命名空项目模板,并编辑它,更改<your_project_name>/src/kern.rs和<your_project_name>/src/user.rs文件。

文档

链接.

要求

路线图和贡献

路线图由所有带有“roadmap”标签的问题组成。如果您想为这个仓库做出贡献以避免未来的冲突,您可以在带有“roadmap”标签的新问题中描述您正在实施的内容。

许可证

根据MIT许可证(MIT)许可 https://mit-license.org/

依赖

~9.5MB
~223K SLoC