package mirage
sectionYPositions = computeSectionYPositions($el), 10)"
x-init="setTimeout(() => sectionYPositions = computeSectionYPositions($el), 10)"
>
The MirageOS library operating system
Install
dune-project
Dependency
Authors
Maintainers
Sources
mirage-4.0.0.tbz
sha256=f804161872de6cf20699364f09d03370ed06aafffb12f1d586190832c73a194d
sha512=75c1c1cac4c6f862c0055381c7ced123785193234b40da8a8e238cb289cba1a4494378587c4edf2ed872aee7fbfc756f84087941c1037ac19cbd1733ff6cca6a
doc/src/mirage.impl/mirage_impl_udp.ml.html
Source file mirage_impl_udp.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 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95open Functoria open Mirage_impl_ip open Mirage_impl_misc open Mirage_impl_random module Key = Mirage_key type 'a udp = UDP type udpv4 = v4 udp type udpv6 = v6 udp type udpv4v6 = v4v6 udp let udp = Type.Type UDP let udpv4 : udpv4 typ = udp let udpv6 : udpv6 typ = udp let udpv4v6 : udpv4v6 typ = udp (* Value restriction ... *) let udp_direct_func () = let packages_v = right_tcpip_library ~sublibs:[ "udp" ] "tcpip" in let connect _ modname = function | [ ip; _random ] -> Fmt.str "%s.connect %s" modname ip | _ -> failwith (connect_err "udp" 2) in impl ~packages_v ~connect "Udp.Make" (ip @-> random @-> udp) let direct_udp ?(random = default_random) ip = udp_direct_func () $ ip $ random let udpv4_socket_conf ipv4_key = let keys = [ Key.v ipv4_key ] in let packages_v = right_tcpip_library ~sublibs:[ "udpv4-socket" ] "tcpip" in let configure i = match get_target i with | `Unix | `MacOSX -> Action.ok () | _ -> Action.error "UDPv4 socket not supported on non-UNIX targets." in let connect _ modname _ = Fmt.str "%s.connect %a" modname pp_key ipv4_key in impl ~keys ~packages_v ~configure ~connect "Udpv4_socket" udpv4 let socket_udpv4 ?group ip = let ip = match ip with | None -> Ipaddr.V4.Prefix.global | Some ip -> Ipaddr.V4.Prefix.make 32 ip in udpv4_socket_conf @@ Key.V4.network ?group ip let udpv6_socket_conf ipv6_key = let keys = [ Key.v ipv6_key ] in let packages_v = right_tcpip_library ~sublibs:[ "udpv6-socket" ] "tcpip" in let configure i = match get_target i with | `Unix | `MacOSX -> Action.ok () | _ -> Action.error "UDPv6 socket not supported on non-UNIX targets." in let connect _ modname _ = Fmt.str "%s.connect %a" modname pp_key ipv6_key in impl ~keys ~packages_v ~configure ~connect "Udpv6_socket" udpv6 let socket_udpv6 ?group ip = let ip = match ip with | None -> None | Some ip -> Some (Ipaddr.V6.Prefix.make 128 ip) in udpv6_socket_conf @@ Key.V6.network ?group ip let udpv4v6_socket_conf ~ipv4_only ~ipv6_only ipv4_key ipv6_key = let keys = [ Key.v ipv4_only; Key.v ipv6_only; Key.v ipv4_key; Key.v ipv6_key ] in let packages_v = right_tcpip_library ~sublibs:[ "udpv4v6-socket" ] "tcpip" in let configure i = match get_target i with | `Unix | `MacOSX -> Action.ok () | _ -> Action.error "UDPv4v6 socket not supported on non-UNIX targets." in let connect _ modname _ = Fmt.str "%s.connect ~ipv4_only:%a ~ipv6_only:%a %a %a" modname pp_key ipv4_only pp_key ipv6_only pp_key ipv4_key pp_key ipv6_key in impl ~keys ~packages_v ~configure ~connect "Udpv4v6_socket" udpv4v6 let socket_udpv4v6 ?group ipv4 ipv6 = let ipv4 = match ipv4 with | None -> Ipaddr.V4.Prefix.global | Some ip -> Ipaddr.V4.Prefix.make 32 ip and ipv6 = match ipv6 with | None -> None | Some ip -> Some (Ipaddr.V6.Prefix.make 128 ip) and ipv4_only = Key.ipv4_only ?group () and ipv6_only = Key.ipv6_only ?group () in udpv4v6_socket_conf ~ipv4_only ~ipv6_only (Key.V4.network ?group ipv4) (Key.V6.network ?group ipv6)
sectionYPositions = computeSectionYPositions($el), 10)"
x-init="setTimeout(() => sectionYPositions = computeSectionYPositions($el), 10)"
>