type callback =
src:ipaddr ->
dst:ipaddr ->
src_port:int ->
Cstruct.t ->
unit Lwt.t
val any_v6 : Unix.inet_addr
type t = {
interface : [ `Any
| `Ip of Unix.inet_addr * Unix.inet_addr
| `V4_only of Unix.inet_addr
| `V6_only of Unix.inet_addr ];
listen_fds : (int, Lwt_unix.file_descr * Lwt_unix.file_descr option)
Stdlib.Hashtbl.t;
mutable switched_off : unit Lwt.t;
}
val set_switched_off : t -> unit Lwt.t -> unit
val ignore_canceled : exn -> unit Lwt.t
val get_udpv4v6_listening_fd :
?preserve:bool ->
?v4_or_v6:[< `Both | `V4 | `V6 Both ] ->
t ->
int ->
(bool * Lwt_unix.file_descr list) Lwt.t
type error = [
| `Sendto_failed
| `Different_ip_version
]
val pp_error :
Stdlib.Format.formatter ->
[< `Different_ip_version | `Sendto_failed ] ->
unit
val close : Lwt_unix.file_descr -> unit Lwt.t
val connect :
ipv4_only:bool ->
ipv6_only:bool ->
Ipaddr.V4.Prefix.t ->
Ipaddr.V6.Prefix.t option ->
t Lwt.t
val disconnect : t -> unit Lwt.t
val write :
?src:'a ->
?src_port:int ->
?ttl:'b ->
dst:Ipaddr.t ->
dst_port:int ->
t ->
Cstruct.t ->
(unit, [> `Different_ip_version | `Sendto_failed ]) Stdlib.result Lwt.t
val unlisten : t -> port:int -> unit
val listen :
t ->
port:int ->
(src:Ipaddr.t ->
dst:('a, Ipaddr.V6.t) Ipaddr.v4v6 ->
src_port:int ->
Cstruct.t ->
unit Lwt.t) ->
unit