package tcpip

  1. Overview
  2. Docs

Parameters

module Time : Mirage_time.S
module Random : Mirage_random.S
module Netif : Mirage_net.S
module Ethernet : Ethernet.S
module Ipv6 : Tcpip.Ip.S with type ipaddr = Ipaddr.V6.t
module Udpv6 : Tcpip.Udp.S with type ipaddr = Ipaddr.V6.t
module Tcpv6 : Tcpip.Tcp.S with type ipaddr = Ipaddr.V6.t

Signature

include Tcpip.Stack.V6 with module IP = Ipv6 and module TCP = Tcpv6 and module UDP = Udpv6
type t

The type representing the internal state of the IPv6 stack.

val disconnect : t -> unit Lwt.t

Disconnect from the IPv6 stack. While this might take some time to complete, it can never result in an error.

module UDP = Udpv6
module TCP = Tcpv6
module IP = Ipv6
val udp : t -> UDP.t

udp t obtains a descriptor for use with the UDPV6 module, usually to transmit traffic.

val tcp : t -> TCP.t

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

val ip : t -> IP.t

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

val listen_udp : t -> port:int -> UDP.callback -> unit

listen_udp t ~port cb registers the cb callback on the UDPv6 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.

  • deprecated use UDP.listen instead (since mirage-protocols 6.0.0).
val listen_tcp : ?keepalive:Tcpip.Tcp.Keepalive.t -> t -> port:int -> (TCP.flow -> unit Lwt.t) -> unit

listen_tcp ~keepalive t ~port cb registers the cb callback on the TCPv6 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. If ~keepalive is provided then these keepalive settings will be applied to the accepted connections before the callback is called.

  • deprecated use TCP.listen instead (since mirage-protocols 6.0.0).
val listen : t -> unit Lwt.t

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

val connect : Netif.t -> Ethernet.t -> Ipv6.t -> Udpv6.t -> Tcpv6.t -> t Lwt.t

connect assembles the arguments into a network stack, then calls `listen` on the assembled stack before returning it to the caller. The initial `listen` functions to ensure that the lower-level layers are functioning, so that if the user wishes to establish outbound connections, they will be able to do so.

OCaml

Innovation. Community. Security.