package mirage-types

  1. Overview
  2. Docs

Single network stack

A complete TCP/IPv4 stack that can be used by applications to receive and transmit network traffic.

type console

Abstract type of a console logger.

type netif

Abstract type of a network interface that is used to transmit and receive traffic associated with this stack.

type mode

Abstract type of the configuration modes associated with this interface. These can consist of the IPv4 address binding, or a DHCP interface.

type ('a, 'b, 'c) config = ('a, 'b, 'c) stackv4_config

Abstract type for the collection of user configuration specified to construct a stack.

type ipv4addr = Ipaddr.V4.t

Abstract type of an IPv4 address

type buffer = Cstruct.t

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

type udpv4

Abstract type for a UDPv4 stack.

type tcpv4

Abstract type for a TCPv4 stack.

type ipv4

Abstract type for a IPv4 stack

type error = [
  1. | `Unknown of string
]

I/O operation errors

include V1.DEVICE with type error := error and type id = (console, netif, mode) config with type 'a io = 'a Lwt.t
type 'a io = 'a Lwt.t

A potentially blocking I/O operation

type t

The type representing the internal state of the device

type id = (console, netif, mode) config

Type defining an identifier for this device that uniquely identifies it among a device tree.

val id : t -> id

Return the identifier that was used to construct this device

val connect : id -> [ `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.

module UDPV4 : V1.UDPV4 with type +'a io = 'a io and type ipv4addr = ipv4addr and type buffer = buffer and type t = udpv4

A UDPv4 stack that can send and receive datagrams.

module TCPV4 : V1.TCPV4 with type +'a io = 'a io and type ipv4addr = ipv4addr and type buffer = buffer and type t = tcpv4

A TCPv4 stack that can send and receive reliable streams using the TCP protocol.

module IPV4 : V1.IPV4 with type +'a io = 'a io and type ipv4addr = ipv4addr and type buffer = buffer and type t = ipv4

An IPv4 stack that parses Ethernet frames into IPv4 packets

val udpv4 : t -> udpv4

udpv4 t obtains a descriptor for use with the UDPV4 module, usually to transmit traffic.

val tcpv4 : t -> tcpv4

tcpv4 t obtains a descriptor for use with the TCPV4 module, usually to initiate outgoing connections.

val ipv4 : t -> ipv4

ipv4 t obtains a descriptor for use with the IPV4 module, which can handle raw IPv4 frames, or manipulate IP address configuration on the stack interface.

val listen_udpv4 : t -> port:int -> UDPV4.callback -> unit

listen_udpv4 t ~port cb will register the cb callback on the UDPv4 port and immediately return. Multiple bindings to the same port will overwrite previous bindings, so callbacks will not chain if ports clash.

val listen_tcpv4 : t -> port:int -> TCPV4.callback -> unit

listen_tcpv4 t ~port cb will register the cb callback on the TCPv4 port and immediately return. Multiple bindings to the same port will overwrite previous bindings, so callbacks will not chain if ports clash.

val listen : t -> unit io

listen t will cause the stack to listen for traffic on the network interface associated with the stack, and demultiplex traffic to the appropriate callbacks.

OCaml

Innovation. Community. Security.