Source file mirage_protocols_lwt.ml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
(** Ethernet *)
module type ETHERNET = Mirage_protocols.ETHERNET
with type 'a io = 'a Lwt.t
and type buffer = Cstruct.t
and type macaddr = Macaddr.t
(** ARP *)
module type ARP = Mirage_protocols.ARP
with type 'a io = 'a Lwt.t
and type buffer = Cstruct.t
and type ipaddr = Ipaddr.V4.t
and type macaddr = Macaddr.t
(** IP *)
module type IP = Mirage_protocols.IP
with type 'a io = 'a Lwt.t
and type buffer = Cstruct.t
(** IPv4 stack *)
module type IPV4 = IP
with type ipaddr = Ipaddr.V4.t
(** IPv6 stack *)
module type IPV6 = IP
with type ipaddr = Ipaddr.V6.t
(** ICMP module *)
module type ICMP = Mirage_protocols.ICMP
with type 'a io = 'a Lwt.t
and type buffer = Cstruct.t
(** ICMPV4 module *)
module type ICMPV4 = ICMP
with type ipaddr = Ipaddr.V4.t
(** UDP stack *)
module type UDP = Mirage_protocols.UDP
with type 'a io = 'a Lwt.t
and type buffer = Cstruct.t
(** UDP stack over IPv4 *)
module type UDPV4 = UDP
with type ipaddr = Ipaddr.V4.t
(** UDP stack over IPv6 *)
module type UDPV6 = UDP
with type ipaddr = Ipaddr.V6.t
(** TCP stack *)
module type TCP = Mirage_protocols.TCP
with type 'a io = 'a Lwt.t
and type buffer = Cstruct.t
(** TCP module over IPv4 *)
module type TCPV4 = TCP
with type ipaddr = Ipaddr.V4.t
(** TCP module over IPv6 *)
module type TCPV6 = TCP
with type ipaddr = Ipaddr.V6.t
(** Configuration *)
type ipv4_config = {
address : Ipaddr.V4.t;
network : Ipaddr.V4.Prefix.t;
gateway : Ipaddr.V4.t option;
}
type ipv6_config = {
address : Ipaddr.V6.t list;
netmasks : Ipaddr.V6.Prefix.t list;
gateways : Ipaddr.V6.t list;
}
(** {2 DHCP client}
* A client which engages in lease transactions. *)
module type DHCP_CLIENT = sig
type t = ipv4_config Lwt_stream.t
end