package tcpip

  1. Overview
  2. Docs
type buffer = Cstruct.t

The type for memory buffers.

type ip = Ipv4.t

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

type ipaddr = Ipaddr.V4.t

The type for an IP address representations.

type ipinput = direct_ipv4_input

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 V1.DEVICE with type error := error and type id := ip 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

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.