package dns-stub
Library
Module
Module type
Parameter
Class
Class type
An address for a given flow type, usually this will consist of IP address + a TCP/IP or UDP/IP port number, but for some flow types it can carry additional information for purposes of cryptographic verification. TODO at least that would be nice in the future. TODO
type ns_addr = [ `TCP | `UDP ] * io_addr
TODO well this is kind of crude; it's a tuple to prevent having to do endless amounts of currying things when implementing flow types, and we need to know the protocol used so we can prefix packets for DNS-over-TCP and set correct socket options etc. therefore we can't just use the opaque io_addr
. TODO
type stack = S.t
A stack with which to connect, e.g. IPv4.tcpv4
create ~rng ~nameserver stack
creates the state record of the DNS client.
The address of a nameserver that is supposed to work with the underlying flow, can be used if the user does not want to bother with configuring their own.
val rng : t -> int -> Cstruct.t
rng t
is a random number generator.
connect addr
is a new connection (flow
) to addr
, or an error.
send flow buffer
sends buffer
to the flow
upstream.
recv flow
tries to read a buffer
from the flow
downstream.
val lift : 'a -> 'a io