package mirage-types

  1. Overview
  2. Docs
On This Page
  1. UDP stack

UDP stack

A UDP stack that can send and receive datagrams.

type buffer

The type for memory buffers.

type ip

The type for IPv4/6 stacks for this stack to connect to.

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.

type error = [
  1. | `Unknown of string
    (*

    an undiagnosed error

    *)
]

The type for IO operation errors.

include DEVICE with type error := error and type id := ip
type +'a io

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 : ?source_port:int -> dest_ip:ipaddr -> dest_port:int -> t -> buffer -> unit io

write ~source_port ~dest_ip ~dest_port udp data is a thread that writes data from an optional source_port to a dest_ip and dest_port IPv4 address pair.

OCaml

Innovation. Community. Security.