Module Dns_stub_mirage.Make

Parameters

module R : Mirage_crypto_rng_mirage.S
module T : Mirage_time.S
module P : Mirage_clock.PCLOCK
module C : Mirage_clock.MCLOCK
module S : Tcpip.Stack.V4V6

Signature

val metrics : [ `Authoritative_answers | `Authoritative_errors | `Decoding_errors | `On_update | `Queries | `Reserved_answers | `Resolver_answers | `Resolver_nodata | `Resolver_nodomain | `Resolver_notimp | `Resolver_queries | `Resolver_servfail | `Tcp_connections | `Tcp_queries | `Udp_queries ] -> unit
module H : sig ... end
module Client : sig ... end
module Dns_flow : sig ... end
type t = {
  1. client : Client.t;
  2. reserved : Dns_server.t;
  3. mutable server : Dns_server.t;
  4. on_update : old:Dns_trie.t -> ?authenticated_key:[ `raw ] Domain_name.t -> update_source:Ipaddr.t -> Dns_trie.t -> unit Lwt.t;
}
val query_server : Dns_server.t -> Dns.Packet.Question.t -> Dns.Packet.data -> (?additional:Dns.Name_rr_map.t -> [> `Answer of Dns.Packet.Answer.t | `Rcode_error of Dns.Rcode.t * Dns.Opcode.t * Dns.Packet.Answer.t option ] -> 'a) -> 'b option
val tsig_decode_sign : Dns_server.t -> Dns.proto -> Dns.Packet.t -> string -> ([> `Rcode_error of Dns.Rcode.t * Dns.Opcode.t * 'a option ] -> 'b) -> ([ `raw ] Domain_name.t option * (Dns.Packet.data -> string option), 'c) Stdlib.result
val axfr_server : Dns_server.t -> Dns.proto -> Dns.Packet.t -> Dns.Packet.Question.t -> string -> ([> `Rcode_error of Dns.Rcode.t * Dns.Opcode.t * 'a option ] -> string) -> string option
val update_server : t -> Dns.proto -> Ipaddr.t -> Dns.Packet.t -> Dns.Packet.Question.t -> Dns.Packet.Update.t -> string -> ([> `Rcode_error of Dns.Rcode.t * Dns.Opcode.t * 'a option ] -> string) -> string option Lwt.t
val server : t -> Dns.proto -> Ipaddr.t -> Dns.Packet.t -> string -> (?additional:Dns.Name_rr_map.t -> [> `Answer of Dns.Packet.Answer.t | `Rcode_error of Dns.Rcode.t * Dns.Opcode.t * Dns.Packet.Answer.t option ] -> string) -> string option Lwt.t
val resolve : t -> Dns.Packet.Question.t -> Dns.Packet.data -> ([> `Answer of Dns.Name_rr_map.t * Dns.Name_rr_map.t | `Rcode_error of Dns.Rcode.t * Dns.Opcode.t * (Dns.Name_rr_map.t * Dns.Name_rr_map.t) option ] -> 'a) -> 'b option Lwt.t
val handle : t -> Dns.proto -> Ipaddr.t -> string -> string option Lwt.t
val create : ?cache_size:int -> ?edns:[ `Auto | `Manual of Dns.Edns.t | `None ] -> ?nameservers:string list -> ?timeout:int64 -> ?on_update: (old:Dns_trie.t -> ?authenticated_key:[ `raw ] Domain_name.t -> update_source:Ipaddr.t -> Dns_trie.t -> unit Lwt.t) -> Dns_server.Primary.s -> happy_eyeballs:H.t -> S.t -> t Lwt.t