Crates.io | netlink-packet |
lib.rs | netlink-packet |
version | 0.1.1 |
source | src |
created_at | 2019-01-02 01:29:46.804566 |
updated_at | 2019-01-02 02:13:11.747402 |
description | netlink packet types |
homepage | https://github.com/little-dude/netlink |
repository | https://github.com/little-dude/netlink |
max_upload_size | |
id | 104907 |
size | 345,394 |
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 and audit netlink protocols.
netlink_sys
crate provides netlink sockets.
Integration with mio
and
tokio
is optional.netlink_packet
crate defines the netlink messages,
and method for serializing and deserializing them.netlink_proto
crate provides the Tokio integration.rtnetlink
crate provides higher level abstraction for
the route protocol
(see man 7 rtnetlink
). This is probably what users want to use, if they
want to manipulate IP addresses, route tables, etc.audit
crate provides higher level abstractions for the
audit protocol.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
rtnetlink
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 has 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: