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