Module Tcpip_stack_direct.MakeV4V6

Parameters

module Time : Mirage_time.S
module Random : Mirage_crypto_rng_mirage.S
module Netif : Mirage_net.S
module Ethernet : Ethernet.S
module Arpv4 : Arp.S
module Ip : Tcpip.Ip.S with type ipaddr = Ipaddr.t and type prefix = Ipaddr.Prefix.t
module Icmpv4 : Icmpv4.S
module Udp : Tcpip.Udp.S with type ipaddr = Ipaddr.t
module Tcp : Tcpip.Tcp.S with type ipaddr = Ipaddr.t

Signature

include Tcpip.Stack.V4V6 with module IP = Ip and module TCP = Tcp and module UDP = Udp
type t

The type representing the internal state of the dual IPv4 and IPv6 stack.

val disconnect : t -> unit Lwt.t

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

module UDP = Udp
module TCP = Tcp
module IP = Ip
val udp : t -> UDP.t

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

val tcp : t -> TCP.t

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

val ip : t -> IP.t

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

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 -> Arpv4.t -> Ip.t -> Icmpv4.t -> Udp.t -> Tcp.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.