package tcpip

  1. Overview
  2. Docs

Parameters

Signature

include Mirage_protocols.UDP with type ipaddr = IP.ipaddr and type ipinput = src:IP.ipaddr -> dst:IP.ipaddr -> Cstruct.t -> unit Lwt.t
type error

The type for UDP errors.

val pp_error : error Fmt.t

pp is the pretty-printer for errors.

type ipaddr = IP.ipaddr

The type for an IP address representations.

type ipinput = src:IP.ipaddr -> dst:IP.ipaddr -> Cstruct.t -> unit Lwt.t

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:ipaddr -> ?src_port:int -> ?ttl:int -> dst:ipaddr -> dst_port:int -> t -> Cstruct.t -> (unit, error) result Lwt.t

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

val connect : IP.t -> t Lwt.t
OCaml

Innovation. Community. Security.