Crates.io | netlink-ip |
lib.rs | netlink-ip |
version | 0.0.1 |
source | src |
created_at | 2018-07-11 00:12:41.512838 |
updated_at | 2018-07-11 00:12:41.512838 |
description | route netlink protocol (a.k.a. rtnl) |
homepage | https://github.com/little-dude/netlink |
repository | https://github.com/little-dude/netlink |
max_upload_size | |
id | 73687 |
size | 36,620 |
This project aims at providing building blocks for the netlink
protocol (see man 7 netlink
).
The netlink protocol is huge but the two most widely used subprotocols are
the generic netlink protocol and the route
netlink protocol (see
man 7 rtnetlink
).
The project is in its early stages, and I'm currently focusing on the route netlink protocol.
netlink-sys
crate provides low level building blocks:
constants, socket, and packet parsingnetlink-ip
crate provides higher level abstractions for
the route netlink protocol. It is fully asynchronous and built on top of
tokio.Before starting working on this library, I've checked a bunch of other projects but none seems to be really complete.
RTM_{NEW,DEL,GET}ROUTE
and
RTM_{NEW,DEL,GET}ADDRESS
messages). However, many attributes supported by
netlink-sys
are not covered.libnl
: netlink implementation in
C. Very complete with awesome documentation.pyroute2
: a very complete and readable implementation in pure python.netlink
: a very complete and very actively maintained go project, seems to be widely used.My main resource so far have been the source code of
pyroute2
and netlink
a lot. These two
projects are great, and very nicely written. As someone who does not read C
fluently, and that does not know much about netlink, they have been invaluable.
I'd also like to praise libnl
for
its documentation. It helped me a lot in understanding the protocol basics.
The whole packet parsing logic is inspired by @whitequark excellent blog posts
(part 1,
part 2
and part 3,
although I've only really used the concepts described in the first blog post).
These ideas are also being used in @m-labs's
smoltcp
project.
Thanks also to the people behing tokio, especially @carllerche, for the amazing tool they are building, and the support they provide. The project structure and code quality are mind blowing, and some parts of this projects are basically rip-offs from tokio's source code.
Finally, thanks to the Rust community, which helped me in multiple occations.
Other resources I particularly appreciated: