2022-08-25 12:57:03 +00:00
|
|
|
open Mirage
|
|
|
|
|
|
|
|
type paf = Paf
|
|
|
|
let paf = typ Paf
|
|
|
|
|
|
|
|
let paf_conf () =
|
|
|
|
let packages = [ package "paf" ~sublibs:[ "mirage" ] ] in
|
|
|
|
impl ~packages "Paf_mirage.Make" (time @-> tcpv4v6 @-> paf)
|
|
|
|
|
|
|
|
let uri =
|
|
|
|
let doc = Key.Arg.info ~doc:"URI" [ "u"; "uri" ] in
|
|
|
|
Key.(create "uri" Arg.(required string doc))
|
|
|
|
|
|
|
|
let mirror =
|
|
|
|
foreign "Unikernel.Make"
|
|
|
|
~keys:[ Key.v uri ]
|
|
|
|
~packages:[ package "paf" ~min:"0.0.9" ; package "paf-cohttp" ~min:"0.0.7" ]
|
2022-08-25 13:13:42 +00:00
|
|
|
(time @-> pclock @-> stackv4v6 @-> dns_client @-> paf @-> job)
|
2022-08-25 12:57:03 +00:00
|
|
|
|
|
|
|
let paf time stackv4v6 = paf_conf () $ time $ tcpv4v6_of_stackv4v6 stackv4v6
|
|
|
|
|
|
|
|
let stackv4v6 = generic_stackv4v6 default_network
|
|
|
|
|
|
|
|
let () = register "mirror"
|
2022-08-25 13:13:42 +00:00
|
|
|
[ mirror $ default_time $ default_posix_clock $ stackv4v6 $ generic_dns_client stackv4v6 $ paf default_time stackv4v6 ]
|