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次
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.rs和helpers.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文件。
文档
链接.
要求
- 最近的linux内核
- LLVM 9
- libelf
- zlib
路线图和贡献
路线图由所有带有“roadmap”标签的问题组成。如果您想为这个仓库做出贡献以避免未来的冲突,您可以在带有“roadmap”标签的新问题中描述您正在实施的内容。
许可证
根据MIT许可证(MIT)许可 https://mit-license.org/。
依赖
~9.5MB
~223K SLoC