package mirage-types

  1. Overview
  2. Docs

A UDPv4 stack that can send and receive datagrams.

type buffer = 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 = 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 with type +'a io = 'a io with type t = udpv4
type +'a io = 'a io

A potentially blocking I/O operation

type t = udpv4

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.