All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
No unreleased changes yet.
TUNSETIFF
on MIPS, PPC and SPARC (#839).is_unique_local()
to IPv6 addresses (#862).is_global_unicast()
to IPv6 addresses (#864).fill_with_expiration
(#871).listen
again on the same local endpoint (#841).RetryConfig
(#835).IpPacket
such that IPv6 packets can contain owned extension headers (#802).T: [u8]
in functions. This reduced the server example by 10KB (#810).O_NONBLOCK
(#817).peek_slice
and recv_slice
(#834).config
constants public (#855).mtu+=2
for IEEE802.15.4 (#857).recv_slice
returns RcvError::Truncated
when the length of the slice is smaller than the data received by the socket (#859).get_source_address
uses RFC 6724 for address selection (#864).IpPacket
/Ipv4Packet
/Ipv6Packet
to Pacet
/PacketV4
/PacketV4
. This is to remove the ambiguity with IpPacket
in src/wire/
(#873).Add optional packet metadata. Allows tracking packets by ID across the whole stack, between the Device
impl and sockets. One application is timestamping packets with the PHY's collaboration, allowing implementing PTP (#628)
Work-in-progress implementation of RPL (Routing Protocol for Low-Power and Lossy Networks), commonly used for IEEE 802.15.4 / 6LoWPAN networks. Wire is mostly complete, full functionality will be in 0.11 hopefully! (#627, #766, #767, #772, #773, #777, #790, #798, #804)
dhcp: Add support for rebinding (#744)
iface:
tcp:
6lowpan:
wire:
Modify hardware_addr
and neighbor_cache
to be not Option
, add HardwareAddress::Ip
(#745)
Add file descriptor support for tuntap devices, needed for the Android VPN API. (#776)
implement Display and Error for error types (#750, #756, #757)
Better defmt for Instant, Duration and Ipv6Address (#754, #758)
Add Hash trait for enum_with_unknown macro (#755)
Error
enum that all methods returned. Now methods that can fail have their own error enums, with only the actual errors they can return. (#617, #667, #730)phy::Device
tokens is now infallible.phy::Device
implementations must return None
from the transmit
/receive
methods. (Previously, they could either do that, or return tokens and then return Error::Exhausted
when consuming them. The latter wasted computation since it'd make smoltcp pointlessly spend effort preparing the packet, and is now disallowed).phy::Device
implementations should drop the packet and handle the error themselves. (Either log it and forget it, or buffer/count it and offer methods to let the user retrieve the error queue/counts.) Returning the error to have it bubble up to Interface::poll()
is no longer supported.trait Device
now uses Generic Associated Types (GAT) for the TX and RX tokens. The main impact of this is Device
impls can now borrow data (because previously, thefor<'a> T: Device<'a>
bounds required to workaround the lack of GATs essentially implied T: 'static
.) (#572)Interface
API has been significantly simplified and cleaned up.Interface
now owns the list of addresses (#719), routes, neighbor cache (#722), 6LoWPAN address contexts, and fragmentation buffers (#736) instead of borrowing them with managed
.trait AnySocket
object-safe (#718)peek
and peek_slice
methods (#734)0
, since that means the checksum is not computed (#632)IpRepr::Unspecified
, IpVersion::Unspecified
, IpAddress::Unspecified
(#579, #616)[::]:12345
) (#732)rust-1_28
(#725)rand_core
dep. (#589)defmt
logging support (#455)Context
struct that must be passed to some socket methods (#500)SocketSet
, sockets are owned by Interface
now. (#557, #571)close()
method to unbind socket. (#475, #482)std::error::Error
for smoltcp::Error
(#485)managed
from 0.7 to 0.8 (442)Device
in PcapWriter
(#524)recv()
now returns Error::Finished
. On ungraceful close, Error::Illegal
is returned, as before. (351)proto-dhcpv4
feature by default. (327)ack_reply()
. (353)