Releases: mirage/mirage-tcpip
Releases · mirage/mirage-tcpip
Limit TCP MSS
Parsing fixes, lwt 2.7.0+ compat
MTU + bugfixes
- implement MTU setting and querying in the Ethernet module (compatibility with mirage-protocols version 1.1.0), and use this value to inform TCP's MSS. (#288, by @djs55)
- rename the ~payload argument of TCP/UDP marshallers to ~payload_len, in an attempt to clarify that the payload will not be copied to the Cstruct.t returned by these functions (#301, by @talex5)
- functorize ipv6 over a random implementation (#298, by @olleolleolle and @hannesm)
- add tests for sending and receiving UDP packets over IPv6 (#300, by @mattgray)
- avoid float in TCP RTO calculations. (#295, by @olleolleolle and @mattgray)
- numerous bugfixes in header marshallers and unmarshallers (#301, by @talex5 and @yomimono)
- replace polymorphic equality in _packet.equals functions (#302, by @yomimono)
MirageOS 3 + many improvements
- adapt to MirageOS 3 API changes (many PRs, from @hannesm, @samoht, and @yomimono):
- replace error polyvars in many functions with result types
- define and use error types
connect
in various modules now returns the device directly or raises an exception- refer to mirage-protocols and mirage-stacks, rather than mirage-types
- remove DHCP module. Users may be interested in the replacement charrua-core (#260, by @yomimono)
- the Ethernet layer now uses
source
anddestination
, the IP layer usessrc
anddst
, and the TCP and UDP layers usesrc_port
anddst_port
consistently.TCP.get_dest
, for getting an IP and port from a given flow, has been replaced byTCP.dst
. (#214 by @yomimono) - if no UDP source port is given to UDP.write, choose a random one (#272, by @hannesm)
- remove exceptions Ipv4.Routing.No_route_to_destination_address exception and Tcp.Refused
- Ipv6.connect takes a list of IPs (#268, by @yomimono)
- move Ipv4 to Static_ipv4, which can be used by other IPv4 modules with their own configuration logic (#260, by @yomimono)
- remove
mode
from STACKV4 record and configuration; Ipv4.connect now requires address parameters and the module exposes no methods for modifying them. (#260, by @yomimono) - remove unused
id
types no longer required by mirage-types (#255, by @yomimono) - overhaul how
random
is used and handled (#254 and others, by @hannesm) - fix redundant
memset
that zeroed out options in Tcp_packet.Marshal.into_cstruct (#250, by @balrajsingh) - add vnetif backend for triggering fast retransmit in iperf tests (#248, by @MagnusS)
- fixes for incorrect timer values (#247, by @balrajsingh)
- add vnetif backend that drops packets with no payload (#246, by @MagnusS)
- fix a race when closing test pcap files (#246, by @MagnusS)
Better TCP fast-retransmission
- Set the TCP congestion window correctly when going into fast-recovery mode. (#244, by @balrajsingh)
- When TCP packet loss is discovered by timeout, allow transition into fast-recovery mode. (#244, by @balrajsingh)
Independent ICMP
- Provide an implementation for the ICMPV4 module type defined in mirage-types 2.8.0. Remove default ICMP handling from the IPv4 module, but preserve it in tcpip-stack-direct. (#195 by @yomimono)
- Explicitly require the use of an OCaml compiler >= 4.02.3 . (#195 by @yomimono)
- Explicitly depend on result. (#195 by @yomimono)
Lots of fixes, better tests, no more camlp4 dependency
- Raise Invalid_argument if given an invalid port number in listen_{tcp,udp}v4
(#173 by @matildah and #175 by @hannesm) - Improve TCP options marshalling/unmarshalling (#174 by @yomimono)
- Add state tests and fixes for closure conditions (#177 #176 by @yomimono)
- Remove bogus warning (#178 by @talex5)
- Clean up IPv6 stack (#179 by @nojb)
- RST checking from RFC5961 (#182 by @ppolv)
- Transform EPIPE exceptions into `Eof (#183 by @djs55)
- Improve error strings in IPv4 (#184 by @yomimono)
- Replace use of cstruct.syntax with cstruct.ppx (#188 by @djs55)
- Make the Unix subpackages optional, so the core builds on Win32
(#191 by @djs55)
Expose IPv4 exception and add optional arguments to the connect functions
Better ARP
Fix regression which causes slow-downs on packet loss, close connection cleanly and extract the channels out
- Fix regression introduced in 2.5.0 where packet loss could lead to the
connection to become very slow (#157, MagnusS, @talex5, @yomimono and
@balrajsingh) - Improve the tests: more logging, more tracing and compile to native code when
available, etc (@MagnusS and @talex5) - Do not raise
Invalid_argument("Lwt.wakeup_result")
everytime a connection
is closed. Also now pass the raised exceptions toLwt.async_exception_hook
instead of ignoring them transparently, so the user can decide to shutdown
its application if something wrong happens (#153, #156, @yomomino and @talex5) - The
channel
library now lives in a separate repository and is released
separately (#159, @samoht)