OCaml TCP/IP networking stack, used in MirageOS
Library tcpip_ethif
Module Ethif . Make



include Mirage_protocols_lwt.ETHIF
type error#row

The type for ethernet interface errors.

and error = private [>
| Mirage_protocols.Ethif.error

The type for ethernet interface errors.

val pp_error : error Fmt.t

pp_error is the pretty-printer for errors.

type buffer = Cstruct.t

The type for memory buffers.

type macaddr = Macaddr.t

The type for unique MAC identifiers.

include Mirage_device.S with type 'a io = 'a Lwt.t
type 'a io = 'a Lwt.t

The type for potentially blocking I/O operation

type t

The type representing the internal state of the device

val disconnect : t -> unit io

Disconnect from the device. While this might take some time to complete, it can never result in an error.

val write : t -> buffer -> ( unit, error ) result io

write nf buf outputs buf to netfront nf.

val writev : t -> buffer list -> ( unit, error ) result io

writev nf bufs output a list of buffers to netfront nf as a single packet.

val mac : t -> macaddr

mac nf is the MAC address of nf.

val mtu : t -> int

mtu nf is the Maximum Transmission Unit of the nf i.e. the maximum size of the payload, not including the ethernet frame header.

val input : arpv4:( buffer -> unit io ) -> ipv4:( buffer -> unit io ) -> ipv6:( buffer -> unit io ) -> t -> buffer -> unit io

listen nf fn is a blocking operation that calls fn buf with every packet that is read from the interface. The function can be stopped by calling disconnect in the device layer.

val connect : ?mtu:int -> N.t -> t Lwt.t

connect ?mtu netif connects an ethernet layer on top of the raw network device netif. The Maximum Transfer Unit may be set via the optional ?mtu parameter, otherwise a default value of 1500 will be used.