···1122let send_wol mac port broadcast =
33 Eio_posix.run @@ fun env ->
44- Wol.send ~net:env#net ~port ~broadcast mac
44+ Wol_eio.send ~net:env#net ~port ~broadcast mac
5566let () =
77 let open Cmdliner in
+17-1
dune-project
···1919 (name wol)
2020 (synopsis "A short synopsis")
2121 (description "A longer description")
2222- (depends ocaml dune eio_main ipaddr)
2222+ (depends ipaddr)
2323+ (tags
2424+ (topics "to describe" your project)))
2525+2626+(package
2727+ (name wol-mirage)
2828+ (synopsis "A short synopsis")
2929+ (description "A longer description")
3030+ (depends wol tcpip)
3131+ (tags
3232+ (topics "to describe" your project)))
3333+3434+(package
3535+ (name wol-eio)
3636+ (synopsis "A short synopsis")
3737+ (description "A longer description")
3838+ (depends wol eio eio_main)
2339 (tags
2440 (topics "to describe" your project)))
2541
···11+let magic_packet (mac : Macaddr.t) =
22+ let mac = Macaddr.to_octets mac in
33+ let buf = Cstruct.create 102 in
44+ for i = 0 to 5 do
55+ Cstruct.set_uint8 buf i 0xFF
66+ done;
77+ for i = 0 to 15 do
88+ for j = 0 to 5 do
99+ Cstruct.set_char buf (6 + (i * 6) + j) mac.[j]
1010+ done
1111+ done;
1212+ buf
···11+module Make (D : Tcpip.Udp.S with type ipaddr = Ipaddr.V4.t) = struct
22+ let send ?(port = 9) ?(broadcast="255.255.255.255") sock mac =
33+ let addr = Ipaddr.V4.of_string_exn broadcast in
44+ let packet = Wol.magic_packet mac in
55+ D.write sock ~dst:addr ~dst_port:port packet
66+end