Tcpip_stack_direct.MakeSourcemodule Time : Mirage_time.Smodule Random : Mirage_random.Smodule Netif : Mirage_net.Smodule Ethernet : Mirage_protocols.ETHERNETmodule Arpv4 : Mirage_protocols.ARPmodule Ipv4 : Mirage_protocols.IP with type ipaddr = Ipaddr.V4.tmodule Icmpv4 : Mirage_protocols.ICMP with type ipaddr = Ipaddr.V4.tmodule Udpv4 : UDPV4_DIRECTmodule Tcpv4 : TCPV4_DIRECTinclude Mirage_stack.V4
with module IPV4 = Ipv4
and module TCPV4 = Tcpv4
and module UDPV4 = Udpv4The type representing the internal state of the IPv4 stack.
Disconnect from the IPv4 stack. While this might take some time to complete, it can never result in an error.
module UDPV4 = Udpv4module TCPV4 = Tcpv4module IPV4 = Ipv4udpv4 t obtains a descriptor for use with the UDPV4 module, usually to transmit traffic.
tcpv4 t obtains a descriptor for use with the TCPV4 module, usually to initiate outgoing connections.
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.
listen_udpv4 t ~port cb registers 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 :
?keepalive:Mirage_protocols.Keepalive.t ->
t ->
port:int ->
(TCPV4.flow -> unit Lwt.t) ->
unitlisten_tcpv4 ~keepalive t ~port cb registers the cb callback on the TCPv4 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.
val connect :
Netif.t ->
Ethernet.t ->
Arpv4.t ->
Ipv4.t ->
Icmpv4.t ->
Udpv4.t ->
Tcpv4.t ->
t Lwt.tconnect 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 (e.g. ARP) are functioning, so that if the user wishes to establish outbound connections, they will be able to do so.