package mirage-protocols

  1. Overview
  2. Docs

User datagram protocol layer: connectionless message-oriented communication.

type error

The type for UDP errors.

val pp_error : error Fmt.t

pp is the pretty-printer for errors.

type ipaddr

The type for an IP address representations.

type ipinput

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

include Mirage_device.S
type t

The type representing the internal state of the device

val disconnect : t -> unit Lwt.t

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 -> Cstruct.t -> unit Lwt.t

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 -> Cstruct.t -> (unit, error) result Lwt.t

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