From 4a301c7b62b4732cbf526f1ccc3e2d07094613f2 Mon Sep 17 00:00:00 2001 From: Thomas Gazagnaire Date: Tue, 9 Jun 2020 20:31:39 +0200 Subject: [PATCH] random: use the right rng device by default When users provide mclock and time, build a default random generator using these. --- lib/mirage/mirage.mli | 10 +++++----- lib/mirage/mirage_impl_resolver.ml | 4 ++-- lib/mirage/mirage_impl_resolver.mli | 2 +- lib/mirage/mirage_impl_stackv4.ml | 6 +++--- lib/mirage/mirage_impl_stackv4.mli | 4 ++-- lib/mirage/mirage_impl_tcp.ml | 6 +++--- lib/mirage/mirage_impl_tcp.mli | 4 ++-- 7 files changed, 18 insertions(+), 18 deletions(-) diff --git a/lib/mirage/mirage.mli b/lib/mirage/mirage.mli index a7aa44945..6b6ed6b0b 100644 --- a/lib/mirage/mirage.mli +++ b/lib/mirage/mirage.mli @@ -363,9 +363,9 @@ val tcpv4 : tcpv4 typ val tcpv6 : tcpv6 typ val direct_tcp : - ?clock:mclock impl -> - ?random:random impl -> + ?mclock:mclock impl -> ?time:time impl -> + ?random:random impl -> 'a ip impl -> 'a tcp impl @@ -379,9 +379,9 @@ val stackv4 : stackv4 typ (** Implementation of the [Mirage_types.STACKV4] signature. *) val direct_stackv4 : - ?clock:mclock impl -> - ?random:random impl -> + ?mclock:mclock impl -> ?time:time impl -> + ?random:random impl -> network impl -> ethernet impl -> arpv4 impl -> @@ -446,9 +446,9 @@ val resolver : resolver typ val resolver_dns : ?ns:Ipaddr.V4.t -> ?ns_port:int -> - ?random:random impl -> ?time:time impl -> ?mclock:mclock impl -> + ?random:random impl -> stackv4 impl -> resolver impl diff --git a/lib/mirage/mirage_impl_resolver.ml b/lib/mirage/mirage_impl_resolver.ml index d7b2525e9..577055521 100644 --- a/lib/mirage/mirage_impl_resolver.ml +++ b/lib/mirage/mirage_impl_resolver.ml @@ -43,8 +43,8 @@ let resolver_dns_conf ~ns ~ns_port = impl ~packages ~keys ~connect "Resolver_mirage.Make_with_stack" (random @-> time @-> mclock @-> stackv4 @-> resolver) -let resolver_dns ?ns ?ns_port ?(random = default_random) ?(time = default_time) - ?(mclock = default_monotonic_clock) stack = +let resolver_dns ?ns ?ns_port ?(time = default_time) + ?(mclock = default_monotonic_clock) ?(random = rng ~time ~mclock ()) stack = let ns = Key.resolver ?default:ns () and ns_port = Key.resolver_port ?default:ns_port () in resolver_dns_conf ~ns ~ns_port $ random $ time $ mclock $ stack diff --git a/lib/mirage/mirage_impl_resolver.mli b/lib/mirage/mirage_impl_resolver.mli index dd2761a2d..27db6298a 100644 --- a/lib/mirage/mirage_impl_resolver.mli +++ b/lib/mirage/mirage_impl_resolver.mli @@ -10,9 +10,9 @@ val resolver : resolver typ val resolver_dns : ?ns:Ipaddr.V4.t -> ?ns_port:int -> - ?random:random impl -> ?time:time impl -> ?mclock:mclock impl -> + ?random:random impl -> Mirage_impl_stackv4.stackv4 impl -> resolver impl diff --git a/lib/mirage/mirage_impl_stackv4.ml b/lib/mirage/mirage_impl_stackv4.ml index f66d9b1a3..fa1fae007 100644 --- a/lib/mirage/mirage_impl_stackv4.ml +++ b/lib/mirage/mirage_impl_stackv4.ml @@ -36,8 +36,8 @@ let stackv4_direct_conf () = @-> tcpv4 @-> stackv4 ) -let direct_stackv4 ?(clock = default_monotonic_clock) ?(random = default_random) - ?(time = default_time) network eth arp ip = +let direct_stackv4 ?(mclock = default_monotonic_clock) ?(time = default_time) + ?(random = rng ~time ~mclock ()) network eth arp ip = stackv4_direct_conf () $ time $ random @@ -47,7 +47,7 @@ let direct_stackv4 ?(clock = default_monotonic_clock) ?(random = default_random) $ ip $ Mirage_impl_icmp.direct_icmpv4 ip $ direct_udp ~random ip - $ direct_tcp ~clock ~random ~time ip + $ direct_tcp ~mclock ~random ~time ip let dhcp_ipv4_stack ?(random = default_random) ?(time = default_time) ?(arp = arp ?time:None) tap = diff --git a/lib/mirage/mirage_impl_stackv4.mli b/lib/mirage/mirage_impl_stackv4.mli index 46e80d4a8..40c1beceb 100644 --- a/lib/mirage/mirage_impl_stackv4.mli +++ b/lib/mirage/mirage_impl_stackv4.mli @@ -3,9 +3,9 @@ type stackv4 val stackv4 : stackv4 Functoria.typ val direct_stackv4 : - ?clock:Mirage_impl_mclock.mclock Functoria.impl -> - ?random:Mirage_impl_random.random Functoria.impl -> + ?mclock:Mirage_impl_mclock.mclock Functoria.impl -> ?time:Mirage_impl_time.time Functoria.impl -> + ?random:Mirage_impl_random.random Functoria.impl -> Mirage_impl_network.network Functoria.impl -> Mirage_impl_ethernet.ethernet Functoria.impl -> Mirage_impl_arpv4.arpv4 Functoria.impl -> diff --git a/lib/mirage/mirage_impl_tcp.ml b/lib/mirage/mirage_impl_tcp.ml index 29a8b7ce7..7228c0371 100644 --- a/lib/mirage/mirage_impl_tcp.ml +++ b/lib/mirage/mirage_impl_tcp.ml @@ -28,9 +28,9 @@ let tcp_direct_func () = impl ~packages_v ~connect "Tcp.Flow.Make" (ip @-> time @-> mclock @-> random @-> tcp) -let direct_tcp ?(clock = default_monotonic_clock) ?(random = default_random) - ?(time = default_time) ip = - tcp_direct_func () $ ip $ time $ clock $ random +let direct_tcp ?(mclock = default_monotonic_clock) ?(time = default_time) + ?(random = rng ~time ~mclock ()) ip = + tcp_direct_func () $ ip $ time $ mclock $ random let tcpv4_socket_conf ipv4_key = let keys = [ Key.v ipv4_key ] in diff --git a/lib/mirage/mirage_impl_tcp.mli b/lib/mirage/mirage_impl_tcp.mli index 983056261..2f597898e 100644 --- a/lib/mirage/mirage_impl_tcp.mli +++ b/lib/mirage/mirage_impl_tcp.mli @@ -11,9 +11,9 @@ val tcpv4 : tcpv4 Functoria.typ val tcpv6 : tcpv6 Functoria.typ val direct_tcp : - ?clock:Mirage_impl_mclock.mclock Functoria.impl -> - ?random:Mirage_impl_random.random Functoria.impl -> + ?mclock:Mirage_impl_mclock.mclock Functoria.impl -> ?time:Mirage_impl_time.time Functoria.impl -> + ?random:Mirage_impl_random.random Functoria.impl -> 'a Mirage_impl_ip.ip Functoria.impl -> 'a tcp Functoria.impl