Library
Module
Module type
Parameter
Class
Class type
Parameters
module Time : Mirage_time.S
module Random : Mirage_random.C
module Netif : Mirage_net_lwt.S
module Ethif : Mirage_protocols_lwt.ETHIF
module Arpv4 : Mirage_protocols_lwt.ARP
module Ipv4 : Mirage_protocols_lwt.IPV4
module Icmpv4 : Mirage_protocols_lwt.ICMPV4
module Udpv4 : UDPV4_DIRECT
module Tcpv4 : TCPV4_DIRECT
Signature
include Mirage_stack_lwt.V4
with 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
include Mirage_stack.V4
with type 'a io = 'a Lwt.t
and type ipv4addr = Ipaddr.V4.t
and type buffer = Cstruct.t
with type udpv4 = Udpv4.t
with type tcpv4 = Tcpv4.t
with type ipv4 = Ipv4.t
with module IPV4 = Ipv4
with module TCPV4 = Tcpv4
with module UDPV4 = Udpv4
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 implementations.
type tcpv4 = Tcpv4.t
The type for TCPv4 implementations.
type ipv4 = Ipv4.t
The type for IPv4 implementations.
include Mirage_device.S with type 'a io = 'a Lwt.t
type 'a io = 'a Lwt.t
The type for potentially blocking I/O operation
module UDPV4 = Udpv4
module TCPV4 = Tcpv4
module IPV4 = Ipv4
udpv4 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.
val listen_udpv4 : t -> port:int -> UDPV4.callback -> unit
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 io) ->
unit
listen_tcpv4 ~keepalive t ~port cb
registers 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. If ~keepalive
is provided then these keepalive settings will be applied to the accepted connections before the callback is called.
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 (e.g. ARP) are functioning, so that if the user wishes to establish outbound connections, they will be able to do so.