xenstore: read_backend now waits for the backend-id key to be written by Xen before reading it to avoid raising an exception (@palainp, #107)
netback: go to closed state before removing vif from xenstore (@palainp, #105, addresses mirage/qubes-mirage-firewall#157)
Lwt.catchon the listen callback (@hannesm, @dinosaure, #103)
Lint OPAM file (@hannesm, #100)
Update the project with
Adapt to mirage-xen 6.0.0 API changes (Solo5 based Xen PVH, #99 @mato)
MirageOS (mirage-net) defines the MTU as the link-level payload size, adjust from 1514 to 1500 (@hannesm, #98)
Only pass the sub-buffer of requested size to the fill function (solves mirage/qubes-mirage-firewall#111, @hannesm, #98)
listen: do not catch out of memory exception (@hannesm, #97)
Adapt to mirage-xen 5.0.0 API changes (@hannesm, #95)
Adapt to mirage-net 3.0.0 API changes (@hannesm, #95)
Cope with frontend moving directly to Closed state (@talex5, #89)
Remove colons in log prefixes (@yomimono, #91)
Os_xeninterface (@TheLortex, #90)
Fix MAC address for netback devices (@talex5, #87). This changes the
CONFIGURATIONsignature to provide both
read_backend_mac, and changes the XenStore implementation to return
Use the new grant API provided by mirage-xen (@talex5 and @yomimono, #85).
Zero buffers before calling fill functions (@yomimono and @hannesm, #83).
Adapt to mirage-net 2.0.0 changes (@hannesm)
Port build from jbuilder to dune (@avsm)
Switch to dune-release from topkg (@avsm)
Clean up opam build depends and ppx (@avsm)
Use lwt-dllist to remove deprecated
require OCaml 4.03, remove "result" dependency (#77, from @hannesm)
require ipaddr 3.0 (#79, from @hannesm)
Support client-initiated shutdown (#67, from @talex5)
Improve shared ring handling between Netback and Netfront (#68, from @talex5)
Fix a number of build errors and improve documentation (various, from @djs55 and @talex5)
Switch to jbuilder
Split into mirage-net-xen and netchannel
Add dependency on io-page-xen
Build against MirageOS version 3, and drop support for previous versions.
Log exceptions from the
Use Cstruct.hexdump_pp to dump frames on error.
Use the Logs library for logging.
Use a monotonic counter for the RX id.
Generate a unique ID for each page shared with Xen for receiving data
Don't assume the first interface is meant when id can't be decoded
Remove camlp4 dependency, add OCaml 4.02.ppx dependency
Add simple xen-build Makefile target which tests via Docker
Generate a unique ID for each Netfront request. Before, we used the grant ref, but multiple requests may use the same ref. This could lead to pages being returned to the free pool before they had been read by netback.
Add netback support, allowing mirage-net-xen to provide virtual network interfaces to other domains. This API is currently experimental.
Add support for fragmented frames, including frames larger than one page.
Cstruct.fillvinstead of our own copy (which was incorrect, but the buggy path didn't get called unless the frame was fragmented, which we didn't support anyway).
Use the offset field (previously we assumed it was always zero).
listennow starts and returns the polling thread. Before, it returned a dummy thread that never resolved. This means that errors in the
listenthread should now be reported.
Errors in the user function passed to
listenare now handled by
Lwt.async(however that is configured). Before, we always printed the exception and then continued.
Don't discard frames sent before
Shared_page_poolout into its own module.
Fixed some compiler warnings.
Require shared-memory-ring >= 1.1.1 (#25).
Require io-page >= 1.5.0 for
Wait for the backend network device to enter the
Connectedstate before transmitting packets. This fixes a race condition in a fast-booting unikernel that caused the first packet to be lost (#20, #23).
connectfunction to interface (#19).
When waiting for space in the transmit queue, we would sometimes fail to notice when space became available. (#15)
Copy out-bound data into pre-shared pages for performance, security and simplicity. (#17)
Use a centrally sourced Travis file and test OCaml 4.02+ as well.
Add profiling tracepoints and labels (#13). Introduces a dependency on
opamfile present in source repository for OPAM 1.2 workflow.
Revert the serialization in 1.1.2 as Xen/ARM (4.5 and backport to 4.4) has been fixed to support granting the same page multiple times. Backport is in https://github.com/mirage/xen-arm-builder.
Wait for packets to be processed by the backend before returning from a
writevcall. Without this, the caller has no way to know when it's safe to reuse the buffer (#11).
Do not send oversized frames to the backend Netfront (#9 from Edwin Torok).
Depend on the unified io-page library instead of io-page-xen.
Depend on new
Add Travis CI scripts.
Adapt to V1.NETWORK from mirage-types-0.5.0.
Initial release based on mirage-platform-0.9.8 Netif.