1 个不稳定版本
| 0.8.3 | 2022 年 4 月 16 日 |
|---|
#33 在 #netlink
55KB
904 行
netlink-sys-mio0.8
从 netlink-sys 分支,将 mio 版本提升到 0.8。
原始 README.md 以下
Netlink
此项目旨在为 netlink 提供构建块(参见 man 7 netlink)。
组织
netlink_sys插件提供 netlink 套接字。与mio和tokio的集成是可选的。- 每个 netlink 协议都有一个
netlink-packet-<protocol_name>插件,为该协议提供数据包netlink-packet-route为 路由协议 提供消息netlink-packet-audit为 审计 协议提供消息netlink-packet-sock-diag为 sock-diag 协议提供消息netlink-packet-generic为 通用 netlink 协议提供消息netlink-packet-netfilter为NETLINK_NETFILTER协议提供消息
netlink-packet-core是其他所有netlink-packet-*插件之间的粘合剂。它提供了一个NetlinkMessage<T>类型,代表任何子协议的任何 netlink 消息。- “
netlink_proto”是一个异步实现的netlink协议的crate。它只依赖于netlink-packet-core库中的NetlinkMessage类型和netlink-sys库来处理socket。 - “
rtnetlink”crate为路由协议提供了更高层次的抽象。 - “
audit”crate为审计协议提供了更高层次的抽象。 - “
genetlink”crate为通用netlink协议提供了更高层次的抽象。 - “
ethtool”crate为ethtool netlink协议提供了更高层次的抽象。
替代方案
- https://github.com/jbaublitz/neli:这些crate的主要替代方案,因为它正在积极开发中。
- 其他但开发不那么活跃的替代方案
致谢
到目前为止,我的主要资源是pyroute2(Python)和netlink(Golang)的源代码。这两个项目都非常好,编写得非常棒。作为一名不精通C语言,对netlink了解不多的开发者,它们非常有价值。
我还想赞扬libnl的文档。它极大地帮助我理解了协议的基本知识。
整个数据包解析逻辑受到了@whitequark出色的博客文章的启发(第1部分、第2部分和第3部分,尽管我实际上只使用了第一篇博客中描述的概念)。
还要感谢tokio背后的人们,他们正在构建一个令人惊叹的工具,并提供支持。
依赖关系
~0.2–14MB
~127K SLoC