Dns_client_mirage.Make
module Transport : sig ... end
include sig ... end
type t = Dns_client.Make(Transport).t
val transport : t -> Transport.t
val create :
?cache_size:int ->
?edns:[ `Auto | `Manual of Dns.Edns.t | `None ] ->
?nameservers:(Dns.proto * Transport.io_addr list) ->
?timeout:int64 ->
Transport.stack ->
t
val nameservers : t -> Dns.proto * Transport.io_addr list
val getaddrinfo :
t ->
'response Dns.Rr_map.key ->
'a Domain_name.t ->
('response, [> `Msg of string ]) Stdlib.result Transport.io
val gethostbyname :
t ->
[ `host ] Domain_name.t ->
(Ipaddr.V4.t, [> `Msg of string ]) Stdlib.result Transport.io
val gethostbyname6 :
t ->
[ `host ] Domain_name.t ->
(Ipaddr.V6.t, [> `Msg of string ]) Stdlib.result Transport.io
val get_resource_record :
t ->
'response Dns.Rr_map.key ->
'a Domain_name.t ->
('response,
[> `Msg of string
| `No_data of [ `raw ] Domain_name.t * Dns.Soa.t
| `No_domain of [ `raw ] Domain_name.t * Dns.Soa.t ])
Stdlib.result
Transport.io
val get_raw_reply :
t ->
'response Dns.Rr_map.key ->
'a Domain_name.t ->
(Dns.Packet.reply, [> `Msg of string | `Partial ]) Stdlib.result Transport.io
val nameserver_of_string :
string ->
(Dns.proto * Transport.io_addr, [> `Msg of string ]) Stdlib.result
nameserver_of_string authenticators str
returns a Transport.io_addr
from the given string. The format is:
udp:<ipaddr>(:port)?
for a plain nameserver and we will communicate with it via the UDP protocoltcp:<ipaddr>(:port)?
for a plain nameserver and we will communicate with it via the TCP protocoltls:<ipaddr>(:port)?((!hostname)?!authenticator)?
for a nameserver and we will communicate with it via the TCP protocol plus the TLS encrypted layer. The user can verify the nameserver via an authenticator (see X509.Authenticator.of_string
for the format of it). The hostname can be provided to be used as peer name by the authenticator. By default, Ca_certs_nss.authenticator
is used.val connect :
?cache_size:int ->
?edns:[ `None | `Auto | `Manual of Dns.Edns.t ] ->
?nameservers:string list ->
?timeout:int64 ->
Transport.stack ->
t Lwt.t
connect ?cache_size ?edns ?nameservers ?timeout (stack, happy_eyeballs)
creates a DNS entity which is able to resolve domain-name. It expects few optional arguments:
cache_size
the size of the LRU cache,edns
the behaviour of whether or not to send edns in queries,nameservers
a list of nameservers used to resolve domain-names,timeout
(in nanoseconds), passed to create
.The provided happy_eyeballs
will use t
for resolving hostnames.