package mirage-net-xen
 sectionYPositions = computeSectionYPositions($el), 10)"
  x-init="setTimeout(() => sectionYPositions = computeSectionYPositions($el), 10)"
  >
  
  
On This Page
  - v2.1.6 (2025-08-18)
 - v2.1.5 (2024-05-09)
 - v2.1.4 (2024-04-29)
 - v2.1.3 (2023-07-22)
 - v2.1.2 (2022-11-10)
 - v2.1.1 (2022-03-14)
 - v2.1.0 (2022-02-01)
 - v2.0.0 (2020-10-21)
 - v1.13.1 (2020-07-01)
 - v1.13.0 (2019-11-01)
 - v1.12.0 (2019-06-26)
 - v1.11.0 (2019-05-05)
 - v1.10.2 (2019-04-01)
 - v1.10.1 (2019-03-20)
 - v1.10.0 (2019-02-24)
 - v1.9.0 (2019-02-04)
 - v1.8.1 (2019-01-07):
 - 1.8.0 (2017-12-14):
 - 1.7.1 (2016-06-16):
 - 1.7.0 (2017-01-24):
 - 1.6.1 (2016-05-02):
 - 1.6.0 (2016-04-09):
 - 1.5.0 (2016-01-08):
 - 1.4.1 (2015-03-14):
 - 1.4.0 (2015-03-07):
 - 1.3.0 (2015-01-24):
 - 1.2.0 (2014-12-17):
 - 1.1.3 (2014-08-08):
 - 1.1.2 (2014-07-23):
 - 1.1.1 (2014-05-27):
 - 1.1.0 (2014-02-01):
 - 0.9.0 (2013-12-10):
 
  Network device for reading and writing Ethernet frames via then Xen netfront/netback protocol
Install
    
    dune-project
 Dependency
Authors
Maintainers
Sources
  
    
      mirage-net-xen-2.1.7.tbz
    
    
        
    
  
  
  
    
  
  
    
  
        sha256=6e314790e9052f072d152df65d708e0baa67db5c62d5df252577588fac71bc28
    
    
  sha512=936ba507cbfe0a639b20e14b6d769e5754cbb04b5697fce51e05fb66d85d37127a498f0e7d4f294af87a7d5b148082c2fadfe2045f01b6f65d1453414fe31557
    
    
  doc/CHANGES.html
v2.1.7 (2025-10-09)
- read MTU from xenstore instead of using a hardcoded 1500 (#115 @hannesm, reviewed by @palainp)
 
v2.1.6 (2025-08-18)
- Pre-allocate 1MB for the RX ring in 
connect, and use and reuse these pages (#114 @palainp) 
v2.1.5 (2024-05-09)
- Fix TX.Request structure decoding and encoding (introduced in 2.1.4, #110 -- fixed by @palainp #112) -- due to this bug, 2.1.4 is marked as unavailable in opam-repository
 
v2.1.4 (2024-04-29)
- Remove mirage-profile dependency (#109 @hannesm)
 - Remove sexplib, ppx_sexp_conv and ppx_cstruct dependency (#110 @hannesm)
 - Merge netchannel and mirage-net-xen into single opam pacakge (#111 @hannesm)
 
v2.1.3 (2023-07-22)
- 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)
 
v2.1.2 (2022-11-10)
- netback: go to closed state before removing vif from xenstore (@palainp, #105, addresses mirage/qubes-mirage-firewall#157)
 
v2.1.1 (2022-03-14)
- Do not 
Lwt.catchon the listen callback (@hannesm, @dinosaure, #103) 
v2.1.0 (2022-02-01)
- Lint OPAM file (@hannesm, #100)
 - Update the project with 
cstruct.6.0.0(@hannesm, #100) - Rename 
OSbyXen_os(@dinosaure, #101) 
v2.0.0 (2020-10-21)
- Adapt to mirage-xen 6.0.0 API changes (Solo5 based Xen PVH, #99 @mato)
 
v1.13.1 (2020-07-01)
- 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)
 
v1.13.0 (2019-11-01)
- Adapt to mirage-xen 5.0.0 API changes (@hannesm, #95)
 - Adapt to mirage-net 3.0.0 API changes (@hannesm, #95)
 
v1.12.0 (2019-06-26)
- Cope with frontend moving directly to Closed state (@talex5, #89)
 - Remove colons in log prefixes (@yomimono, #91)
 - Use mirage-xen.4.0.0 
Os_xeninterface (@TheLortex, #90) 
v1.11.0 (2019-05-05)
- Fix MAC address for netback devices (@talex5, #87). This changes the 
CONFIGURATIONsignature to provide bothread_frontend_macandread_backend_mac, and changes the XenStore implementation to returnfe:ff:ff:ff:ff:fffor backends. 
v1.10.2 (2019-04-01)
- Use the new grant API provided by mirage-xen (@talex5 and @yomimono, #85).
 
v1.10.1 (2019-03-20)
- Zero buffers before calling fill functions (@yomimono and @hannesm, #83).
 
v1.10.0 (2019-02-24)
- Adapt to mirage-net 2.0.0 changes (@hannesm)
 
v1.9.0 (2019-02-04)
- 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 
Lwt_sequence(@avsm) 
v1.8.1 (2019-01-07):
- require OCaml 4.03, remove "result" dependency (#77, from @hannesm)
 - require ipaddr 3.0 (#79, from @hannesm)
 
1.8.0 (2017-12-14):
- 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)
 
1.7.1 (2016-06-16):
- Switch to jbuilder
 - Add topkg
 - Split into mirage-net-xen and netchannel
 - Add dependency on io-page-xen
 
1.7.0 (2017-01-24):
- Build against MirageOS version 3, and drop support for previous versions.
 - Log exceptions from the 
listencallback. - Use Cstruct.hexdump_pp to dump frames on error.
 - Use the Logs library for logging.
 - Use a monotonic counter for the RX id.
 
1.6.1 (2016-05-02):
- Generate a unique ID for each page shared with Xen for receiving data
 
1.6.0 (2016-04-09):
- 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
 
1.5.0 (2016-01-08):
- 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.
 - Use 
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 thelistenthread should now be reported.- Errors in the user function passed to 
listenare now handled byLwt.async(however that is configured). Before, we always printed the exception and then continued. - Don't discard frames sent before 
listenis called. - Split 
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 
page_size(#21). 
1.4.1 (2015-03-14):
- 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). 
1.4.0 (2015-03-07):
- Add explicit 
connectfunction to interface (#19). 
1.3.0 (2015-01-24):
- 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.
 
1.2.0 (2014-12-17):
- Add profiling tracepoints and labels (#13). Introduces a dependency on 
mirage-profile. - New 
opamfile present in source repository for OPAM 1.2 workflow. 
1.1.3 (2014-08-08):
- 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.
 
1.1.2 (2014-07-23):
- 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). 
1.1.1 (2014-05-27):
- Do not send oversized frames to the backend Netfront (#9 from Edwin Torok).
 
1.1.0 (2014-02-01):
- Depend on the unified io-page library instead of io-page-xen.
 - Depend on new 
xen-eventandxen-grantpackages. 
0.9.0 (2013-12-10):
- Add Travis CI scripts.
 - Adapt to V1.NETWORK from mirage-types-0.5.0.
 - Initial release based on mirage-platform-0.9.8 Netif.
 
 sectionYPositions = computeSectionYPositions($el), 10)"
  x-init="setTimeout(() => sectionYPositions = computeSectionYPositions($el), 10)"
  >
  
  
  On This Page
  - v2.1.6 (2025-08-18)
 - v2.1.5 (2024-05-09)
 - v2.1.4 (2024-04-29)
 - v2.1.3 (2023-07-22)
 - v2.1.2 (2022-11-10)
 - v2.1.1 (2022-03-14)
 - v2.1.0 (2022-02-01)
 - v2.0.0 (2020-10-21)
 - v1.13.1 (2020-07-01)
 - v1.13.0 (2019-11-01)
 - v1.12.0 (2019-06-26)
 - v1.11.0 (2019-05-05)
 - v1.10.2 (2019-04-01)
 - v1.10.1 (2019-03-20)
 - v1.10.0 (2019-02-24)
 - v1.9.0 (2019-02-04)
 - v1.8.1 (2019-01-07):
 - 1.8.0 (2017-12-14):
 - 1.7.1 (2016-06-16):
 - 1.7.0 (2017-01-24):
 - 1.6.1 (2016-05-02):
 - 1.6.0 (2016-04-09):
 - 1.5.0 (2016-01-08):
 - 1.4.1 (2015-03-14):
 - 1.4.0 (2015-03-07):
 - 1.3.0 (2015-01-24):
 - 1.2.0 (2014-12-17):
 - 1.1.3 (2014-08-08):
 - 1.1.2 (2014-07-23):
 - 1.1.1 (2014-05-27):
 - 1.1.0 (2014-02-01):
 - 0.9.0 (2013-12-10):