- adapt to mirage-vnetif 0.6.2 changes (#517 @hannesm)
- Add
type prefix = Ipaddr.Prefix.t
andIP.configured_ips : t -> prefix
to the IP layers (#516 @hannesm) - Mark
get_ips
as deprecated, useconfigured_ips
instead (#516 @hannesm)
- remove mirage-random-test dependency (#514 @hannesm)
- remove calls to mirage-profile in tests, now support mirage-vnetif 0.6.1 (#514 @hannesm)
- TCP: add
src : flow -> ipaddr * int
, implemented bygetsockname
on unix (#511 @hannesm) - TCP unix stack: increase TCP buffer size (was 4096, is now 65536) (#510 @edwintorok)
- TCP: adapt to mirage-flow 4.0:
add
val shutdown : flow -> [ `read | `write | `read_write ] -> unit Lwt.t
(#512 @hannesm, review by @djs55)
-
TCP: add ID for PCB for connection tracking (#495 @TheLortex)
-
Unix stack, UDP: copy buffer before passing it to client (#502 @reynir)
-
API renamings (due to ppx_cstruct removal): accessors such as Icmpv4_wire.get_icmpv4_ty are now Icmpv4_wire.get_ty ("_icmpv4" is removed) (#505)
-
API change: remove deprecated V4-only and V6-only stack The module types Stack.V4 and Stack.V6 no longer exist The bindings Stack.V4V6.listen_udp and listen_tcp have been removed (#494 @hannesm)
-
Use Cstruct.to_string instead of deprecated Cstruct.copy (#506 @hannesm)
-
Remove ppx_cstruct dependency (#505 @hannesm)
-
Remove mirage-profile dependency (#504 @hannesm)
-
Remove Mirage3 cross-compilation runes (#507 @hannesm)
-
opam: add lower bounds for cmdliner and alcotest (#506 @hannesm)
- TCP: fix memory leaks on connection close in three scenarios (#489 @TheLortex)
- simultanous close: set up the timewait timer in the
Closing(1) - Recv_ack(2) -> Time_wait
state transition - client sends a RST instead of a FIN: enable sending a challenge ACK even when the reception thread is stopped
- client doesn't ACK server's FIN: enable the retransmit timer in the
Closing(_)
state
- simultanous close: set up the timewait timer in the
- Ndpv6: demote more logs to debug level (#480 @reynir)
- Ndpv6: set RS opt header (#482 @reynir)
- Icmpv6: add redirect parsing (#481 @reynir)
- Improve log messages of connect and disconnect of various layers and stacks: separate IP addresses with ", " (#485 @hannesm)
- TCP log sources: prefix "tcp" to distinguish them (#484 @reynir)
- Work with MSVC compiler (@jonahbeckford, #476)
- Skip
Lwt_bytes
UDP tests on Windows (@MisterDA, #469) - Run
PKG_CONFIG_PATH
through cypath (@MisterDA, #469) - Add Windows CI via GitHub Action (@MisterDA, #469)
- Remove
which
command and replace it bycommand -v
(@hannesm, #472) - Fix some typos (@MisterDA, #471)
- Update binaries to
cmdliner.1.1.0
(@dinosaure, #475) - Be able to extract via functor/
functoria
the TCP/IP stack (@dinosaure, #474) - Remove missing deprecated usage of
Cstruct.len
(@dinosaure, #477)
- Fix cancellation of Unix socket when we don't use
Stack.connect
(@dinosaure, @hannesm, #466)
- Fix memory leak in processing RST packets (#460 @balrajsingh, reported in #456 by @dinosaure)
- Move module types (IP, UDP, TCP, STACK, ICMP) into tcpip core library (#463 @hannesm)
- API breakage:
Tcpip_checksum
is now part of tcpip.checksum (used to be part of tcpip #463 @hannesm) - API breakage: tcpip.unix has been removed (#463 @hannesm)
- Use Lwt.pause instead of deprecated
Lwt_{unix,main}.yield
(#461 @dinosaure)
- Adapt to mirage-protocols 6.0.0 API (#457 @hannesm)
- TCP and UDP now have a listen and unlisten function (fixes #452)
- type ipinput (in TCP and UDP) and listener (in TCP) have been removed
- Use Cstruct.length instead of deprecated Cstruct.len (#454 @hannesm)
- Avoid deprecated Fmt functions (#455 @hannesm)
- Remove rresult dependency (#455 @hannesm)
- Require OCaml 4.08
- Record TCP statistics via metrics library (#455 @hannesm)
- This allows to listen on the same port as sending via UDP in the dual socket stack, and avoids file descriptor leaks in the socket stack.
- Socket stack: avoid file descriptor leaks (remember opened file descriptors in data structure, close them in disconnect) (#449 @reynir @hannesm, fixes #446 #450)
- Socket stack: convert an incoming packet on a dual socket to v4 source IP if received via IPv4 (#451 @reynir @hannesm)
- Allow freestanding compilation without opam (#447 @sternenseemann)
- Adapt to alcotest 1.4.0 breaking change (#448 @CraigFE)
- checksum stubs: Drop
caml_
from their name (@hannesm, #445) - Add cancellation on
tcpip.stack-socket
(@dinosaure, @talex5, @hannesm, #443) - Ensure that listen really binds the given socket before
creating a task on
tcpip.stack-socket
(@dinosaure, @hannesm, #439) - Add
ppx_cstruct
as a dependency (@hannesm, @dinosaure, #439) - Upgrade to ocamlformat.0.17.0 (@dinosaure, #442)
- Drop the support of OCaml 4.08.0 (@dinosaure, #442)
- Use the usual layout to compile freestanding C stubs and link them to
a Solo5 unikernel (@dinosaure, @hannesm, #441)
breaking changes
C stubs are prepended by
mirage_
. Symbols such as checksum's symbols arecaml_mirage_tcpip_*
instead ofcaml_tcpip_*
tcpip.unix
is a fake sub-package and user does not it anymore, he can safely remove it from its project. - Conflict with
< ocaml-freestanding.0.4.1
(@hannesm, #441)
- Dual IPv4 and IPv6 socket and direct stack support, now requires mirage-stack 2.2.0 and mirage-protocols 5.0.0 (#433 @hannesm)
- The above change also unified arguments passed to connect functions which are API-breaking changes
- IPv6 waits for timeout after sending neighbour advertisement (for duplicate address detection)
- Remove Xen cross-compilation runes, with mirage-xen 6.0.0 they're provided by mirage-xen (#434 @hannesm)
- Move to dune 2.7.0 (and bisect instrumentation if desired) (#436 @hannesm)
- Assorted IPv6 improvements (#428 #431 #432 @MagnusS @hannesm)
- set length in packets to be sent
- preserve updated ctx from Ndv6.handle
- fix ICMP checksum computation
- implement Mirage_stack.V6 signature
- add connect, mtu, iperf tests
- fix DAD protocol implementation (and test it)
- avoid out of bounds accesses of IPv6 packets (check length before accessing)
- Fix 32 bit issues (@MagnusS)
- Implement stack-direct and tcp disconnect: tear down existing connections (#429 @hannesm)
- Treat broadcast address of network as broadcast as well (#430 @hannesm, reported in #427)
- Static_ipv4.connect API change: takes a cidr:Ipaddr.V4.Prefix.t instead of ip:Ipaddr.V4.t and network:Ipaddr.V4.Prefix.t (#426 @hannesm)
- Adapt to ipaddr 5.0.0 API changes (#426 @hannesm)
- Revert "Ipv4.Fragments use a Lru.M.t instead of Lru.F.t" (#423 by @hannesm) A Lru.M.t allocates a Hashtbl.t of size = capacity (= 256 * 1024 in our case), this leads to excessive ~2MB memory consumption for each Fragment cache, reported by @xaki23 in mirage/qubes-mirage-firewall#93
- use SOCK_RAW for an ICMP socket in the unix sockets API (previously used SOCK_DGRAM which did not work) reported by @justinc1 in #358, fixed in #424 by @hannesm
- tcp is now compatible with lwt >= 5.0.0 (where Lwt.async requires a function of (unit -> unit Lwt.t) (#370 #425 @cfcs @hannesm, issue #392 @emillon)
- Add a dependency on dune-configurator to support dune 2.0.0 (#421 @avsm)
- Adapt to mirage-protocols 4.0.0, mirage-net 3.0.0, mirage-time 2.0.0, mirage-clock 3.0.0, mirage-stack 2.0.0 interface changes (#420 @hannesm)
- Revise Static_ipv4.connect signature (for more safety):
val connect : ip:(Ipaddr.V4.Prefix.t * Ipaddr.V4.t) -> ?gateway:Ipaddr.V4.t ->
?fragment_cache_size:int -> E.t -> A.t -> t Lwt.t
it used to be:
val connect : ?ip:Ipaddr.V4.t -> ?network:Ipaddr.V4.Prefix.t ->
?gateway:Ipaddr.V4.t option -> C.t -> E.t -> A.t -> t Lwt.t
The clock
C.t
is gone (due to mirage-clock 3.0.0),~ip
and~network
are now required and passed as pair~ip
. The optional argument?gateway
is of type Ipaddr.V4.t. The new optional labeled argument~fragment_cache_size
specifies the byte size of the IPv4 fragment cache (#420 @hannesm)
- Add ?ttl:int parameter to Udp and Icmp write (#416 @phaer)
- Ipv4.Fragments use a Lru.M.t instead of Lru.F.t (#418 @hannesm)
- Adapt to mirage-protocols 3.1.0 changes (#419 @hannesm)
- removed IP.set_ip
- added `Would_fragment to Ip.error
- provide Fragments.fragment for the write side of fragmentation, use in Static_ipv4 (#415, @hannesm)
- support ipaddr/macaddr.4.0.0 interfaces (@avsm)
- remove extraneous debug messages from Ipv4.Fragments (@hannesm, #410)
- opam: ensure Xen bindings are built with right mirage-xen-ocaml CFLAGS (@avsm)
- opam: correctly register mirage-xen-ocaml as a depopt (@avsm)
- use mirage-protocols-3.0 interface for ipaddr printing (#408 @yomimono @linse)
- remove dependency on configurator and use dune's builtin one instead (@avsm)
- drop IPv4 packets which destination address is not us or broadcast (#407 by @hannesm)
- ipv4 reassembly requires lru 0.3.0 now (#406 by @hannesm)
- ICMP test maintenance (#405 by @yomimono @linse)
- remove usage of Cstruct.set_len (use Cstruct.sub with offset 0 instead) (#403 by @hannesm)
- fix ICMPv4 checksum calculation (#401 by @yomimono)
- add Ipv4_packet.Unmarshal.header_of_cstruct (#397 by @linse)
- require cstruct version 3.2.0 (#398 by @hannesm)
- Adjust to mirage-protocols 2.0.0 changes (#394 by @hannesm)
- Ethif is now Ethernet (#394 by @hannesm)
- IPv4 write now fragments if payload exceeds MTU (and the optional labeled fragment argument is not false) (#394 by @hannesm)
- Use
Lwt_dllist
instead ofLwt_sequence
, due to the latter being deprecated upstream in Lwt (ocsigen/lwt#361) (#388 by @avsm). - Remove arpv4 and ethif sublibraries, now provided by ethernet and arp-mirage opam packages (#380 by @hannesm).
- Upgrade from jbuilder to dune (#391 @avsm)
- Switch from topkg to dune-release (#391 @avsm)
-
The IPv4 implementation now supports reassembly of IPv4 fragments (#375 by @hannesm)
- using a LRU cache using up to 256KB memory
- out of order fragments are supported
- maximum number of fragments is 16
- timeout between first and last fragment is 10s
- overlapping fragments are dropped
-
IPv6: use correct timeout value after first NS message (#334 @djs55)
-
Use
Ipaddr.pp
instead ofIpaddr.pp_hum
due to upstream interface changes (#385 @hannesm).
- socket stack (tcp/udp): catch exception in recv_from and accept (#376 @hannesm)
- use mirage-random-test for testing (Stdlibrandom got removed from mirage-random>1.2.0, #377 @hannesm)
- Ipv4: require Mirage_random.C, used for generating IPv4 identifier instead of using OCaml's stdlib Random directly (#371 @hannesm)
- Tcp: use entire 32 bits at random for the initial sequence number, thanks to Spencer Michaels and Jeff Dileo of NCC Group for reporting (#371 @hannesm)
- adjust to mirage-protocols 1.4.0 and mirage-stack 1.3.0 changes (#371 @hannesm) Arp no longer contains the type alias ethif Ethif no longer contains the type alias netif Static_ipv4 no longer contains the type alias ethif and prefix Ipv6 no longer contains the type alias ethif and prefix Mirage_protocols_lwt.IPV4 no longer contains the type alias ethif Mirage_protocols_lwt.UDPV4 and TCPV4 no longer contain the type alias ip
- remove unused types: 'a config, netif, and id from socket and direct stack (#371 @hannesm)
- remove usage of Result, depending on OCaml >= 4.03.0 (#372 @hannesm)
Note the use of the new TCP keep-alive feature can cause excessive amounts of memory to be used in some circumstances, see #367
- Ensure a zero UDP checksum is sent as 0xffff, not 0x0000 (#359 @stedolan)
- Avoid leaking a file descriptor in the socket stack if the connection fails (#363 @hannesm)
- Avoid raising an exception with
Lwt.fail
whenwrite
fails in the socket stack (#363 @hannesm) - Ignore
EBADF
errors inclose
in the socket stack (#366 @hannesm) - Emit a warning when TCP keep-alives are used (#368 @djs55)
- expose tcp_socket_options in the socket stack, fixing downstream builds (#356 @yomimono)
- add missing dependencies and constraints (#354 @yomimono, #353 @rgrinberg)
- remove leftover ocamlbuild files (#353 @rgrinberg)
- Add support for TCP keepalives (#338 @djs55)
- Fix TCP deadlock (#343 @mfp)
- Update the CI to test OCaml 4.04, 4.05, 4.06 (#344 @yomimono)
- Add an example for user-space
ping
, and some socket ICMPv4 fixes (#336 @djs55) - Make tcpip safe-string-safe (and buildable by default on OCaml 4.06.0) (#341 @djs55)
- Test with current mirage-www master (#323 @yomimono)
- Improve the Tcp.Wire API (#325 @samoht)
- Add dependency from stack-unix to io-page-unix (@avsm)
- Replace dependency on cstruct.lwt with cstruct-lwt (#322 @yomimono)
- Update to lwt 3.0 (#326 @samoht)
- Replace oUnit with alcotest (#329 @samoht)
- Fix stub linking on Xen (#332 @djs55)
- Add support for ICMP sockets on Windows (#333 @djs55)
- port to jbuilder. Build time is now roughly 4-5x faster than the old oasis-based build system.
- packs have been replaced by module aliases.
- avoid linking to cstruct.ppx in the compiled library and only use it at build time (#316 @djs55)
- use improved packet size support in
mirage-vnetif>=0.4.0
to test the MTU fixes in #313.
- involve the IP layer's MTU in the TCP MSS calculation (hopefully correctly) (#313, by @yomimono)
- impose a maximum TCP MSS of 1460 to avoid sending over-large datagrams on 1500 MTU links (#309, by @hannesm)
- fix parsing 20-byte cstructs as ipv4 packets (#307, by @yomimono)
- udp: payload length parse fix (#307, by @yomimono)
- support lwt >= 2.7.0 (#308, by @djs55)
- 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)
- 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
- if no UDP source port is given to UDP.write, choose a random one (#272, by @hannesm)
- remove
Ipv4.Routing.No_route_to_destination_address
exception; treat routing failures as normal packet loss in TCP (#269, by @yomimono) - Ipv6.connect takes a list of IPs (#268, by @yomimono)
- remove exception "Refused" in TCP (#267, by @yomimono)
- remove DHCP module. Users may be interested in the replacement charrua-core (#260, 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)
- 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)
- 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)
- 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)
- Add optional arguments for settings in ip v6 and v4 connects (#170, by @Drup)
- Expose
Ipv4.Routing.No_route_to_destination_address
(#166, by @yomimono)
- ARP now handles ARP frames, not Ethernet frames with ARP payload (#164, by @hannesm)
- Check length of received ethernet frame to avoid cstruct exceptions (#117, by @hannesm)
- Pull arpv4 module out of ipv4. Also add unit-tests for the newly created ARP library (#155, by @yomimono)
- 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")
every time 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)
- The test runs now produce
.pcap
files (#141, by @MagnusS) - Strip trailing bytes from network packets (#145, by @talex5)
- Add tests for uniform packet loss (#147, by @MagnusS)
- fixed bug where in case of out of order packets the ack and window were set incorrectly (#140, #146)
- Properly handle RST packets (#107, #148)
- Add a
Log
module to control at runtime the debug statements which are displayed (#142) - Writing in a PCB which does not have the right state now returns an error instead of blocking (#150)
- Fix infinite loop in
Channel.read_line
when the line does not contain a CRLF sequence (#131)
- Fix a memory leak in
Channel
(#119, by @yomimono) - Add basic unit-test for channels (#119, by @yomimono)
- Add alcotest testing templates
- Modernize Travis CI scripts
- Merge between 2.4.0 and 2.3.1
- ARP improvements (#118)
- Do not raise an assertion if an IP frame has extra trailing bytes (#221).
- Fix
STACKV4
for theDEVICE
signature which hasconnect
removed (in Mirage types 2.3+).
- Add ICMPv6 error reporting functions (#101)
- Add universal IP address converters (#108)
- Add
error_message
functions for human-readable errors (#98) - Improve debug logging for ICMP Destination Unreachable packets.
- Filter incoming frames by MAC address to stop sending unnecessary RSTs. (#114)
- Unhook unused modules
Sliding_window
andProfiler
from the build. (#112) - Add an explicit
connect
method to the signatures. (#100)
- Readded tracing and ARP fixes which got accidentally reverted in the IPv6 merge. (#96)
- Use
Bytes
instead ofString
to begin the-safe-string
migration in OCaml 4.02.0 (#93). - Remove dependency on
uint
to avoid the need for a C stub (#92).
Add IPv6 support. This changeset minimises interface changes to the existing
STACKV4
interfaces to facilitate a progressive merge. The only visible
interface changes are:
IPV4.set_ipv4_*
functions have been renamedIPV4.set_ip_*
because they are shared between IPV4 and IPV6.IPV4.get_ipv4
andget_ipv4_netmask
now return alist
ofIpaddr.V4.t
(again because this is the common semantics with IPV6.)- Several types that had
v4
in their names (likeIPV4.ipv4addr
) have lost that particle.
- Improve console printing for the DHCP client to output line breaks properly on Xen consoles.
- Build Xen stubs separately, with
CFLAGS
frommirage-xen
2.1.0+. This allows us to use the red zone under x86_64 Unix again. - Adding tracing labels and counters, which introduces a new dependency on the
mirage-profile
package.
- Fixed race waiting for ARP response (#86).
- Move the the code that configures IPv4 address, netmask and gateways
after receiving a successful lease out of the
Dhcp_clientv4
module and intoStackv4
(#87)
- Add IPv4 multicast to MAC address mapping in IPv4 output processing (#81 from Luke Dunstan).
- Improve formatting of DHCP console logging, including printing out options (#83).
- Build with -mno-red-zone on x86_64 to avoid stack corruption on Xen (#80).
- Fixed race condition in the signalling between the rx/tx threads under load.
- Experimentally switch to immediate ACKs in TCPv4 by default instead of delayed ones.
- Moved 1s complement checksum C code here from mirage-platform.
- Depend on
Console_unix
andConsole_xen
instead ofConsole
. - [socket] Do not return an
Eof
when writing 0-length buffer (#76). - [socket] Accept callbacks now run in async threads instead of being serialised (#75).
- Quieten down the stack logging rate by not announcing IPv6 packet discards.
- Raise exception
Bad_option
for unparsable or invalid TCPv4 options (#57). - Fix linking error with module
Tcp_checksum
by lifting it into top library (#60). - Add
opam
file to permit easier local pinning, and fix Travis to use this.
- Ensure that DHCP completes before the application is started, so that unikernels that establish outgoing connections can do so without a race. (fix from Mindy Preston in #53, followup in #55)
- Add
echo
,chargen
anddiscard
services into theexamples/
directory. (from Mindy Preston in #52).
- [tcp] Fully process the last
ACK
in a 3-way handshake for server connections. This ensures that aFIN
is correctly transmitted upon application-initiated connection close. (fix from Mindy Preston in #51).
- Expose IPV4 through the STACKV4 interface.
- Fix DHCP variable length option parsing for MTU responses, which in turns improves robustness on Amazon EC2 (fix from @yomimono via #48)
- Catch and ignore top-level socket exceptions (#219).
- Set
SO_REUSEADDR
on listening sockets for Unix (#218). - Adapt the Stack interfaces to the v1.1.1 mirage-types interface (see mirage/mirage#226 for details).
- Rewrite of the library as a set of functors that parameterize the
stack across the
V1_LWT
module types from Mirage 1.1.x. This removes the need to compile separate Xen and Unix versions of the stack.
- Build for either Xen or Unix, depending on the value of the
OS
envvar. - Shift to the
mirage-types
0.5.0+ interfaces, which breaks the socket backend (temporarily). - Port the direct stack to the new interfaces.
- Add Travis CI scripts.
- Use the
Ipaddr
external library and remove the Homebrew equivalents inNettypes
.
- Changes in module Manager: Removed some functions from the `.mli (plug/unplug) and added some modifications in the way the Manager interacts with the underlying module Netif. The Netif.create function does not take a callback anymore.
- Improve TCP state machine for connection teardown.
- Limit fragment number to 8, and coalesce buffers if it goes higher.
- Adapt to mirage-platform-0.9.2 API changes.
- Depend on mirage-platform-0.9.1 direct tuntap interfaces.
- Version bump to catch up with mirage-platform.
- Encourage scatter-gather I/O all the time, rather than playing tricks with packet header buffers. This simplifies the output path considerably and cuts minor heap allocations down.
- Install the packed
cmx
along with thecmxa
to ensure that the compiler can do cross-module optimization (this is not a fatal error, but will impact performance if thecmx
file is not present).
- Update socket stack to use Cstruct 0.6.0 API
- Update Cstruct API to 0.6.0
- [tcp] write now blocks if the write buffer and write window are full
- Add iperf self-test that creates two VIFs and transmits across them. This is a useful local test which stresses the bridge code using just one VM.
- Add support for attaching existing devices when initialising the
network manager, via an optional
attached
parameter. - Constrain TCP connect to be a
unit Lwt.t
instead of a polymorphic return value. - Expose IPv4 netmask function.
- Reduce ARP verbosity to the console.
- Fix TCP fast recovery to wait until all in-flight packets are acked, rather then exiting early.
- Require OCaml-4.00.0 or higher, and add relevant build fixes to deal with module packing.
- Fix the DHCP client marshalling for IPv4 addresses.
- Expose the interface MAC address in the Manager signature.
- Tweak TCP ISN calculation to be more friendly on a 32-bit host.
- Add Manager.create ?devs to control the number of Netif devices constructed by default.
- Add Ethif.set/disable_promiscuous to permit directly tapping a network interface.
- Initial public release.