renet/CHANGELOG.md

6.6 KiB

Changelog

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.

Unreleased

  • Version bumped to 0.8
  • Minimum Supported Rust Version (MSRV) bumped from 1.40 to 1.46
  • Update managed from 0.7 to 0.8 (442)
  • udp: Add close() method to unbind socket.

0.7.5 - 2021-06-28

  • dhcpv4: emit DNS servers in repr (#505)

0.7.4 - 2021-06-11

  • tcp: fix "subtract sequence numbers with underflow" on remote window shrink. (#490)
  • tcp: fix substract with overflow when receiving a SYNACK with unincremented ACK number. (#491)
  • tcp: use nonzero initial sequence number to workaround misbehaving servers. (#492)

0.7.3 - 2021-05-29

  • Fix "unused attribute" error in recent nightlies.

0.7.2 - 2021-05-29

  • iface: check for ipv4 subnet broadcast addrs everywhere (#462)
  • dhcp: always send parameter_request_list. (#456)
  • dhcp: Clear expiration time on reset. (#456)
  • phy: fix FaultInjector returning a too big buffer when simulating a drop on tx (#463)
  • tcp rtte: fix "attempt to multiply with overflow". (#476)
  • tcp: LastAck should only change to Closed on ack of fin. (#477)
  • wire/dhcpv4: account for lease time, router and subnet options in DhcpRepr::buffer_len (#478)

0.7.1 - 2021-03-27

  • ndisc: Fix NeighborSolicit incorrectly asking for src addr instead of dst addr (419)
  • dhcpv4: respect lease time from the server instead of renewing every 60 seconds. (437)
  • Fix build errors due to invalid combinations of features (416, 447)
  • wire/ipv4: make some functions const (420)
  • phy: fix BPF on OpenBSD (421, 427)
  • phy: enable RawSocket, TapInterface on Android (435)
  • phy: fix phy_wait for waits longer than 1 second (449)

0.7.0 - 2021-01-20

  • Minimum Supported Rust Version (MSRV) bumped from 1.36 to 1.40

New features

  • tcp: Allow distinguishing between graceful (FIN) and ungraceful (RST) close. On graceful close, recv() now returns Error::Finished. On ungraceful close, Error::Illegal is returned, as before. (351)
  • sockets: Add support for attaching async/await Wakers to sockets. Wakers are woken on socket state changes. (394)
  • tcp: Set retransmission timeout based on an RTT estimation, instead of the previously fixed 100ms. This improves performance on high-latency links, such as mobile networks. (406)
  • tcp: add Delayed ACK support. On by default, with a 10ms delay. (404)
  • ip: Process broadcast packets directed to the subnet's broadcast address, such as 192.168.1.255. Previously broadcast packets were only processed when directed to the 255.255.255.255 address. (377)

Fixes

  • udp,raw,icmp: Fix packet buffer panic caused by large payload (332)
  • dhcpv4: use offered ip in requested ip option (310)
  • dhcpv4: Re-export dhcp::clientv4::Config
  • dhcpv4: Enable proto-dhcpv4 feature by default. (327)
  • ethernet,arp: Allow for ARP retry during egress (368)
  • ethernet,arp: Only limit the neighbor cache rate after sending a request packet (369)
  • tcp: use provided ip for TcpSocket::connect instead of 0.0.0.0 (329)
  • tcp: Accept data packets in FIN_WAIT_2 state. (350)
  • tcp: Always send updated ack number in ack_reply(). (353)
  • tcp: allow sending ACKs in FinWait2 state. (388)
  • tcp: fix racey simultaneous close not sending FIN. (398)
  • tcp: Do not send window updates in states that shouldn't do so (360)
  • tcp: Return RST to unexpected ACK in SYN-SENT state. (367)
  • tcp: Take MTU into account during TcpSocket dispatch. (384)
  • tcp: don't send data outside the remote window (387)
  • phy: Take Ethernet header into account for MTU of RawSocket and TapInterface. (393)
  • phy: add null terminator to c-string passed to libc API (372)

Quality of Life™ improvements

  • Update to Rust 2018 edition (396)
  • Migrate CI to Github Actions (390)
  • Fix clippy lints, enforce clippy in CI (395, 402, 403, 405, 407)
  • Use #[non_exhaustive] for enums and structs (409, 411)
  • Simplify lifetime parameters of sockets, SocketSet, EthernetInterface (410, 413)