package mirage-types

  1. Overview
  2. Docs

A UDPv4 stack that can send and receive datagrams.

type buffer

Abstract type for a memory buffer that may not be page aligned.

type ipv4

Abstract type for an IPv4 stack for this stack to connect to.

type ipv4addr

Abstract type for an IPv4 address representation.

type ipv4input

An input function continuation to pass onto the underlying ipv4 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

    *)
]

IO operation errors

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

A potentially blocking I/O operation

type t

The type representing the internal state of the device

val id : t -> ipv4

Return the identifier that was used to construct this device

val connect : ipv4 -> [ `Error of error | `Ok of t ] io

Connect to the device identified by id

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:ipv4addr -> dst:ipv4addr -> src_port:int -> buffer -> unit io

Callback function that adds the UDPv4 metadata for src and dst IPv4 addresses, the src_port of the connection and the buffer payload of the datagram.

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

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

val write : ?source_port:int -> dest_ip:ipv4addr -> 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.