package tcpip

  1. Overview
  2. Docs

Parameters

module Time : V1_LWT.TIME
module Random : V1.RANDOM
module Ethif : V1_LWT.ETHIF with type netif = Netif.t
module Arpv4 : V1_LWT.ARP
module Ipv4 : V1_LWT.IPV4 with type ethif = Ethif.t
module Udpv4 : UDPV4_DIRECT with type ip = Ipv4.t
module Tcpv4 : TCPV4_DIRECT with type ip = Ipv4.t

Signature

include V1_LWT.STACKV4 with type console = Console.t and type netif = Netif.t and type mode = V1_LWT.direct_stack_config and type udpv4 = Udpv4.t and type tcpv4 = Tcpv4.t and type ipv4 = Ipv4.t and module IPV4 = Ipv4 and module TCPV4 = Tcpv4 and module UDPV4 = Udpv4
type console = Console.t

The type for console logger.

type netif = Netif.t

The type for network interface that is used to transmit and receive traffic associated with this stack.

The type for 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) V1_LWT.stackv4_config

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

type ipv4addr = Ipaddr.V4.t

The type for IPv4 addresses.

type buffer = Cstruct.t

The type for memory buffers.

type udpv4 = Udpv4.t

The type for UDPv4 stacks.

type tcpv4 = Tcpv4.t

The type for TCPv4 stacks.

type ipv4 = Ipv4.t

The type for IPv4 stacks.

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

The type for 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

The type for potentially blocking I/O operation

type t

The type representing the internal state of the device

type id = (console, netif, mode) config

This type is no longer used and will be removed once other * modules stop using it in their type signatures.

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 = Udpv4
module TCPV4 = Tcpv4
module IPV4 = Ipv4
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. If port is invalid (not between 0 and 65535 inclusive), it raises Invalid_argument. 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 immediatey return. If port is invalid (not between 0 and 65535 inclusive), it raises Invalid_argument. 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.

val connect : (console, netif, mode) V1_LWT.stackv4_config -> Ethif.t -> Arpv4.t -> Ipv4.t -> Udpv4.t -> Tcpv4.t -> [> `Ok of t | `Error of error ] Lwt.t