This project aims at providing building blocks for netlink (see man 7 netlink).
- the
netlink_syscrate provides netlink sockets. Integration withmioandtokiois optional. - Each netlink protocol has a
netlink-packet-<protocol_name>crate that provides the packets for this protocol:netlink-packet-routeprovides messages for the route protocolnetlink-packet-auditprovides messages for the audit protocolnetlink-packet-sock-diagprovides messages for the sock-diag protocolnetlink-packet-genericprovides message for the generic netlink protocolnetlink-packet-netfilterprovides message for theNETLINK_NETFILTERprotocol
- the
netlink-packet-coreis the glue for all the othernetlink-packet-*crates. It provides aNetlinkMessage<T>type that represent any netlink message for any sub-protocol. - the
netlink_protocrate is an asynchronous implementation of the netlink protocol. It only depends onnetlink-packet-corefor theNetlinkMessagetype andnetlink-sysfor the socket. - the
rtnetlinkcrate provides higher level abstraction for the route protocol - the
auditcrate provides higher level abstractions for the audit protocol. - the
genetlinkcrate provide higher level abstraction for the generic netlink protocol - the
ethtoolcrate provide higher level abstraction for ethtool netlink protocol
- https://github.com/jbaublitz/neli: the main alternative to these crates, as it is actively developed.
- Other but less actively developed alternatives:
My main resource so far has been the source code of pyroute2 (python) and netlink (golang)
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).
Thanks also to the people behind tokio for the amazing tool they are building, and the support they provide.