MirageOS signatures for network protocols
Module type Mirage_protocols_lwt . UDP
type error

The type for UDP errors.

val pp_error : error Fmt.t

pp is the pretty-printer for errors.

type buffer = Cstruct.t

The type for memory buffers.

type ipaddr

The type for an IP address representations.

type ipinput

The type for input function continuation to pass onto the underlying IP stack. This will normally be a NOOP for a conventional kernel, but a direct implementation will parse the buffer.

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.

type callback = src:ipaddr -> dst:ipaddr -> src_port:int -> buffer -> unit io

The type for callback functions that adds the UDP metadata for src and dst IP addresses, the src_port of the connection and the buffer payload of the datagram.

val input : listeners:( dst_port:int -> callback option ) -> t -> ipinput

input listeners t demultiplexes incoming datagrams based on their destination port. The listeners callback will either return a concrete handler or a None, which results in the datagram being dropped.

val write : ?src_port:int -> ?ttl:int -> dst:ipaddr -> dst_port:int -> t -> buffer -> ( unit, error ) Pervasives.result io

write ~src_port ~ttl ~dst ~dst_port udp data is a thread that writes data from an optional src_port to a dst and dst_port IPv4 address pair. An optional time-to-live (ttl) is passed through to the IP stack.