vmnetversion
Userlevel network bridging on MacOS X
MacOS X 10.10 (Yosemite) introduced the somewhat undocumented vmnet
framework. This exposes virtual network interfaces to userland applications.
There are a number of advantages of this over previous implementations:
- Unlike tuntaposx, this is builtin to MacOS X now and so is easier to package up and distribute for end users.
vmnet
uses the XPC sandboxing interfaces and should make it easier to drop a hard dependency on running networking applications asroot
.- Most significantly,
vmnet
supports bridging network traffic to the outside world, which was previously unsupported.
These OCaml bindings are constructed against the documentation contained
in the <vmnet.h>
header file in Yosemite, and may not be correct due to
the lack of any other example code. However, they do suffice to run
MirageOS applications that can connect to the
outside world. The bindings are also slightly complicated by the need
to interface GCD
thread pools with the OCaml runtime, so please report any instabilities
that you see when using this interface as a consumer.
There are two libraries provided:
Vmnet
is the raw OCaml binding to thevmnet
framework, using OCaml preemptive threads to handle synchronisation.Lwt_vmnet
uses the Lwt framework to provide a monadic asynchronous I/O interface at a higher level.
Most users should use Lwt_vmnet
to handle guest traffic.
Author | Anil Madhavapeddy <anil@recoil.org> |
---|---|
License | ISC |
Published | |
Homepage | https://github.com/mirage/ocaml-vmnet |
Issue Tracker | https://github.com/mirage/ocaml-vmnet/issues |
Maintainer | Anil Madhavapeddy <anil@recoil.org> |
Available | os = "macos" |
Dependencies | |
Source [http] | https://github.com/mirage/ocaml-vmnet/archive/v1.0.1.tar.gz sha256=f8103fe73db50011a1e6f347dee00fea02a99fac5d76463e1d92b7c941074fba md5=b1ff2c7323a8a7ff158227f5b2713bbd |
Edit | https://github.com/ocaml/opam-repository/tree/master/packages/vmnet/vmnet.1.0.1/opam |
- mirage-net-macosx<1.6.0