| Crates.io | netlink-ip |
| lib.rs | netlink-ip |
| version | 0.0.1 |
| created_at | 2018-07-11 00:12:41.512838+00 |
| updated_at | 2018-07-11 00:12:41.512838+00 |
| 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: