NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
crates.io · #1486 most downloaded on crates.io
Type safe netlink library written in Rust
Last release 8 months ago
28 Jan 2026
Release timing varies
gaps range from 4 weeks to 1.4 years
Most releases are documented
notes for 19 of 26 stable releases
1 version withdrawn
withdrawn after publishing
9 years old
35 releases · first in 2018
https://github.com/jbaublitz/neli/milestone/28?closed=1
https://github.com/jbaublitz/neli/milestone/27?closed=1
One column per quarter.
https://github.com/jbaublitz/neli/milestone/26?closed=1
https://github.com/jbaublitz/neli/milestone/19?closed=1
FromBytes and ToBytes for statically sized arraysSee milestone: https://github.com/jbaublitz/neli/milestone/11?closed=1
See milestone: https://github.com/jbaublitz/neli/milestone/11?closed=1
FromBytes and FromBytesWithInput have had the lifetime parameter removed. This
removes the ability to borrow data from the buffer written to by the recv() syscall.
This is intentional as it provides more ergonomic support for NlRouter to send
messages across threads. A new trait, FromBytesWithInputBorrowed, has been added to
support the use case of borrowing payloads from attributes as &str or &[u8].async feature API has been completely redesigned to more closely resemble
it's corresponding synchronous API.new() methods and public fields on data structures used to construct packets
have been replaced by the builder pattern.Arc.sync has been added as a Cargo feature. If a user is only interested in asynchronous
functionality, sync can be disabled to disable the higher level synchronous API
and reduce the number of required dependencies.Merge pull request #257 from jbaublitz/release
Merge pull request #257 from jbaublitz/release
neli-0.7.0-rc3 and neli-proc-macros-0.2.0-rc3
Nothing published for this version
Nothing published for this version
Nothing published for this version
Fixed bug in error intepretation for Nlmsgerr.
FromBytes/ToBytes implementations for u128.Thanks to the upstream contributors who provided the code for this release!
Fixed memory bug in NlSocket::drop_mcast_membership() unsafe code found using valgrind
NlSocket::drop_mcast_membership() unsafe code found using
valgrindAdded support for option user header in netlink protocol for generic netlink
FlagBuffer from a bitmaskexamples directory to compile successfully with cargo build --examplesBug fix for RtBuffer and GenlBuffer size calculation
RtBuffer and GenlBuffer size calculationRtattr size calculationSee all pull requests and issues that went into this release here!
Fixed problem where Tcmsg could not be created due to padding.
Tcmsg could not be created due to padding.neli-proc-macros crate to handle most of trait
generation.Nl to a number of different, more
granular traits.iter() and iter2().Bug fix for Ifinfomsg.ifi_change being serialized twice.
Ifinfomsg.ifi_change being serialized twice.Ndmsg where it could not be constructed due to
private padding fields.Ifinfomsg.ifi_change. This should be of type
IffFlags, not Iff.NlSocketHandle::recv() where this method
never expected an ACK to be returned with no data.
NlSocketHandle::recv() has changed slightly.
It will now return ACKs and only returns None when nonblocking.
Use NlSocketHandle::iter() for handling of streams of messages.U32Bitmask has been replaced by
NetlinkBitArray.Arphrd.Ifla.NlSocketHandle::iter2() that does not restrict
users to the NlWrapperType type for packet parsing.RtBuffer and GenlBuffer
types to make parsing nested attributes easier.Fixed bug in Ifaddrmsg serialization and deserialization. Thanks, `@joshtriplett`!
Ifaddrmsg serialization and deserialization.
Thanks, @joshtriplett!This change makes NlSocketHandle exclusively responsible for handling ACKs.
NlSocketHandle exclusively responsible
for handling ACKs.Change from buffering structs for serialization to regular slices to allow buffer size tracking for each layer of serialization and deserialization an
buffering structs for serialization to regular slices
to allow buffer size tracking for each layer of serialization
and deserialization and easy slicing into smaller, sized pieces.stream feature to async for clarity with higher level
API.seq and pid tracking. This will eventually be added to
higher level APIs.NlSocket::send/::recv take an immutable reference due to
the case made for message vs. stream based sockets.consts module.NlSocket and NlSocketHandle.Nlmsg struct to support handling application
errors returned by the kernel. Previously, there was no easy way
to handle application errors returned inside of an Nlmsg packet.consts macros.Index type for nested attributes returned as a numbered list.NlSocket functions to leave/list multicast groups.serialize and deserialize
methods safely.attr module for shared attribute code.logging feature.Nlattr.get_nested_attributes() in favor of .get_attr_handle()NlSocket.set_mcast_groups() in favor of .add_multicast_membership()Feature flagged NFLOG support, in the netfilter module.
netfilter module.Nothing published for this version
consts.rs is now consts/ with a corresponding submodule for each category of constant - not a breaking change
Nlattr.add_nested_attribute() to take a referenceRTM_* constants in consts.rs.size() usage for Vec<Nlattr> - use .asize() insteadconsts.rs is now consts/ with a corresponding submodule for each category of constant -
not a breaking changeNothing published for this version
Nothing published for this version
Update buffering to 0.3.4 minimum to force stable channel support for neli
Revert to builder pattern for creating/parsing generic netlink messages with attributes
Rework API in a number of places:
NlSocketMigration to buffering crate for buffer operations - _this does change the API_
For record keeping it should be noted that semantic versioning was misused here. 0.3.0-r1 and 0.3.0-r2 should have been 0.3.1 and 0.3.2 respectively.
get_payload_as was deprecated in favor of get_payload_with.
bind and connect calls' groups parameter was changed to be a Vec<u32>
which will allow specifying a list of IDs and the group bitmask will be calculated for the user.poll implementation of for NlSocket for tokio::prelude::Stream trait will now return
io::ErrorKind::InvalidData if the socket file descriptor is not set to non-blocking
before polling. This is intentional as Tokio docs rely on polls being non-blocking and my
implementation requires a read that either returns an io::ErrorKind::WouldBlock value or
the desired data.nlattr module to group together all of the netlink attribute code.block was added to allow reversing nonblock function on NlSocket.is_blocking was added and returns a bool indicating whether reads will block on this socket.get_payload_as was deprecated in favor of get_payload_with.None
### Bug fixes * Fix documentation bug
After looking at tokio's File implementation, the file descriptor should block for the Stream implementation
File implementation, the file descriptor should block for
the Stream implementationNothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Your coding agent can read these notes before it upgrades. Set up the MCP server →