Releases: smoltcp-rs/smoltcp
Releases Β· smoltcp-rs/smoltcp
v0.12.0
Almost a year in the making, the highlights of the release are the migration to core::net IP types, IPv6 multicast, TCP improvements, and many fixes. Smoltcp now connects your gadgets to the Internet better than ever.
- Minimum Supported Rust Version (MSRV) bumped to 1.80.
- iface
- IPv6 multicast (#914, #976, #988, #1009, #1012)
- Add
poll_egress()andpoll_ingress_single()methods for finer-grained control of what and how many packets are processed. (#954, #991, #993) - Multicast join/leave no longer requires access to device+timestamp. (#985)
- Reset expiry of entries in the neighbor cache on packet reception (#966)
- Honor
any_ipfor ARP (#880) - Honor
any_ipfor IPv6 (#900) - Use own source address for ARP and NDISC Solicitations (#984)
- fix panic when discarding HBH Option with multicast destination address (#996)
- fix panic with 6lowpan frag datagram_size < 40 (#997)
- fix panic if no suitable IPv6 src_addr is found (#895)
- Fix specific length IP packets not being fragmented (#1008)
- tcp
- Add support for congestion control (#907)
- Add support for simultaneous open (#1001)
- Add support for Timestamp option (#939)
- Send immediate ACKs after RMSS bytes of data (#1002)
- Do not ignore FIN if segment is partially outside the window. (#977)
- Correctly set internal sACK flag for client sockets (#995)
- Only reset remote_last_ts if some data is enqueued (#917)
- Don't delay ACKs for significant window updates (#935)
- Add
listen_endpointgetter (#1005)
- socket
- phy
- wire
- Use core::net types for IP addresses. (#937, #994)
- Add missing exports in wire for DNS (#891)
- rename Scope to MulticastScope (#898)
- Re-export
dhcpv4::Flagsanddhcpv4::OpCode(#901) - Make Address:v6() constructor const (#975)
- Ipv6RoutingHeader::clear_reserved: fix offsets for Type 2 routing headers. (#882)
v0.11.0
Additions
- wire/ipsec: add basic IPsec parsing/emitting (#821).
- phy: add support for
TUNSETIFFon MIPS, PPC and SPARC (#839). - socket/tcp: accept FIN on zero window (#845).
- wire/ipv6: add
is_unique_local()to IPv6 addresses (#862). - wire/ipv6: add
is_global_unicast()to IPv6 addresses (#864). - iface/neigh: add
fill_with_expiration(#871).
Fixes
- icmpv6: truncate packet to MTU (#807, #808).
- wire/rpl: DAO-ACK DODAG ID was wrongly read (#824).
- socket/tcp: don't panic when calling
listenagain on the same local endpoint (#841). - wire/dhcpv4: don't panic when parsing addresses with incorrect amount of bytes (#843).
- iface/ndisc: prevent ndisc when the medium is IP (#865).
- wire/ieee802154: better parsing of security fields. Correctly parse frame type (3 bits instead of 2 bits) (#868).
- wire/ieee802154: better handle address fields for new frame version (#870).
- iface/tcp: don't send TCP RST with unspecified addresses (#867).
- iface: don't handle empty packets (this would panic when reading the IP version) (#866).
- socket/dhcp: Add an upper bound to the renew/rebind timeout in
RetryConfig(#835).
Changes
- iface: rewrite
IpPacketsuch that IPv6 packets can contain owned extension headers (#802). - iface: remove generic
T: [u8]in functions. This reduced the server example by 10KB (#810). - SocketSet: add comment about using static lifetime for SocketSets with owned storage (#813).
- phy/RawSocket: open raw socket with
O_NONBLOCK(#817). - tests/rstest: use rstest for fixture based testing (#823).
- docs/readme: update readme about IEEE802.15.4 and 6LoWPAN (#826).
- wire/ipv6-hbh: IPv6 HBH has owned options instead of references (#827).
- wire/sixlowpan: 6LoWPAN is split into multiple modules (#828).
- sockets: match the behaviour of
peek_sliceandrecv_slice(#834). - dependencies: update to headpless v0.8 (#853).
- config: make
configconstants public (#855). - phy/ieee802154: clarify
mtu+=2for IEEE802.15.4 (#857). - sockets:
recv_slicereturnsRcvError::Truncatedwhen the length of the slice is smaller than the data received by the socket (#859). - iface/ipv6:
get_source_addressuses RFC 6724 for address selection (#864). - pcap: use IEEE 802.15.4 without FCS for PCAP link types (#874).
- iface: rename
IpPacket/Ipv4Packet/Ipv6PackettoPacet/PacketV4/PacketV4. This is to remove the ambiguity withIpPacketinsrc/wire/(#873). - wire/ndisc: rewrite parse function (3.1KiB -> 1.9KiB) (#878)
- iface: Check IPv6 address after processing HBH (#861)