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