- Fixed memory bug in
NlSocket::drop_mcast_membership()unsafe code found using valgrind
- CI and clippy maintenance
- Added support for option user header in netlink protocol for generic netlink
- Added method to get socket PID
- Added support for converting to a
FlagBufferfrom a bitmask
- Fixed up
examplesdirectory to compile successfully withcargo build --examples
- Removed unnecessary features and dependencies (PR from MaxVerevkin)
- CI and clippy maintenance
- Bug fix for
RtBufferandGenlBuffersize calculation - Bug fix for
Rtattrsize calculation - Bug fixes in tokio usage
- Bug fix where padding at the end of an empty netlink packet caused errors
- Better debug logging
See all pull requests and issues that went into this release here!
- Fixed problem where
Tcmsgcould not be created due to padding. - Fixed problem with listing multicast groups.
- Addition of
neli-proc-macroscrate to handle most of trait generation. - More testing!
- Changed the core traits from
Nlto a number of different, more granular traits. - Consolidated
iter()anditer2(). - Major changes to async module.
- Changes to how bit flag sets are handled.
- Bug fix for
Ifinfomsg.ifi_changebeing serialized twice. - Bug fix for
Ndmsgwhere it could not be constructed due to private padding fields. - Bug fix for
Ifinfomsg.ifi_change. This should be of typeIffFlags, notIff. - Fixed assumption in
NlSocketHandle::recv()where this method never expected an ACK to be returned with no data.- The behavior of
NlSocketHandle::recv()has changed slightly. It will now return ACKs and only returnsNonewhen nonblocking. UseNlSocketHandle::iter()for handling of streams of messages.
- The behavior of
- Fixed bug for deserialization of errors returned at the application level.
- Fixed bug in subscription to multicast groups.
- The API has been changed and
U32Bitmaskhas been replaced byNetlinkBitArray.
- The API has been changed and
- More constants in
Arphrd. - More constants in
Ifla. - Addition of
NlSocketHandle::iter2()that does not restrict users to theNlWrapperTypetype for packet parsing. - Addition of convenience methods on
RtBufferandGenlBuffertypes to make parsing nested attributes easier.
- Update to tokio 1.0.
- Fixed bug in
Ifaddrmsgserialization and deserialization. Thanks,@joshtriplett!
- Fixed bug in ACK handling.
- This change makes
NlSocketHandleexclusively responsible for handling ACKs.
- This change makes
- Change from
bufferingstructs for serialization to regular slices to allow buffer size tracking for each layer of serialization and deserialization and easy slicing into smaller, sized pieces. - Change
streamfeature toasyncfor clarity with higher level API. - Remove
seqandpidtracking. This will eventually be added to higher level APIs. - Make
NlSocket::send/::recvtake an immutable reference due to the case made for message vs. stream based sockets. - Remove universal exports of constants from the
constsmodule. - Update to tokio 0.3.
- Split lower level and higher level synchronous netlink socket calls
across two structs,
NlSocketandNlSocketHandle. - Factor out parsing code so that it can be used across multiple socket types.
- Add nested netlink attribute parsing for routing netlink attributes.
- Changes to the
Nlmsgstruct to support handling application errors returned by the kernel. Previously, there was no easy way to handle application errors returned inside of anNlmsgpacket. - Added the ability to define the visibility for constants defined by
the
constsmacros.
- Add genetlink ID to family name/multicast group name lookup.
- Add
Indextype for nested attributes returned as a numbered list. NlSocketfunctions to leave/list multicast groups.- Macro infrastructure for generating
serializeanddeserializemethods safely. attrmodule for shared attribute code.- Debug logging enabled through the
loggingfeature.
Nlattr.get_nested_attributes()in favor of.get_attr_handle()NlSocket.set_mcast_groups()in favor of.add_multicast_membership()
- Bug fixes for rtnetlink
- Updates to the documentation.
- More examples.
- Links to the referenced data structures.
- Feature flagged NFLOG support, in the
netfiltermodule.
- Resolved issue relating to allowing documentation annotations in macros for enum variants representing netlink constants.
- Change
Nlattr.add_nested_attribute()to take a reference
- Support
RTM_*constants inconsts.rs - Fix length calculation errors
- Add methods to Nl trait with default implementations - does not break API
- Additional tests for padding
- Add design decision documentation for new padding handling
- Deprecate
.size()usage forVec<Nlattr>- use.asize()instead
consts.rsis nowconsts/with a corresponding submodule for each category of constant - not a breaking change- Start enforcing rustfmt in CI and use cargo fmt to switch over to new formatting
- Merge PR fixing rtnetlink support
- 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
- Particular notable changes for nested attribute handling
- Rework API in a number of places:
- Tokio support for sockets
- Many socket functions
- Generic netlink
- Support for rtnetlink
- Iterative message parsing from
NlSocket
- Support parsing multiple netlink messages returned in the same socket read buffer
- Missing documentation added
- Fix alignment bugs when serializing netlink attributes
- Migration 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.
- Fix documentation bug
- After looking at tokio's
Fileimplementation, the file descriptor should block for theStreamimplementation
- Type signature of
bindandconnectcalls'groupsparameter was changed to be aVec<u32>which will allow specifying a list of IDs and the group bitmask will be calculated for the user. pollimplementation of forNlSocketfortokio::prelude::Streamtrait will now returnio::ErrorKind::InvalidDataif 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 anio::ErrorKind::WouldBlockvalue or the desired data.- There is now an
nlattrmodule to group together all of the netlink attribute code.
- A function
blockwas added to allow reversingnonblockfunction onNlSocket. is_blockingwas added and returns aboolindicating whether reads will block on this socket.
get_payload_aswas deprecated in favor ofget_payload_with.
None