Expand description
Dominion
A crate to implement DNS Servers and clients.
Server
use dominion::{Server, ServerService, DnsPacket};
use std::net::SocketAddr;
struct Echo;
impl ServerService for Echo {
fn run<'a>(&self, _client: SocketAddr, question: DnsPacket<'a>) -> Option<DnsPacket<'a>> { Some(question) }
}
Server::default()
.bind("127.0.0.1:5454".parse().unwrap())
.unwrap()
.serve(Echo);
Client
Modules
The body of the DNS packet (Questions and Resource Records)
The header of the DNS packet
Domain name structure and funtions
Structs
A DNS header.
Represents a complete DNS packet.
DNS Flags
A domain name represented as an inverted list of labels.
A query for a ResourceRecord of the specified QType and Class.
The ResourceRecord preamble. Common data to all resource record types.
A description of a resource that can be used as an answer to a question
or to provide additional information in the authority
or additional
fields
of a DNS packet.
A DNS server
Enums
DNSSEC flag to indicate if the data has been cryptographically authenticated
Flag to indicate if the answer is authoritative
DNSSEC flag to indicate if the client has enabled checking of the data.
An enumeration of the different available DNS Classes.
Standard query (0), Inverse query (1), Server status query (2), Notify (4), Update (5), DSO (6)
An error was encountered when trying to parse a byte buffer into a DNS packet
Query (0) or Response (1) packet.
The ResourceRecord data associated with the corresponding Name.
Flag to indicate if recursion is available by the server.
Flag to indicate if recursion is desired by the client.
Response code
Flag to indicate if the packet has been truncated.
The type of ResourceRecord.
Reserved, should be 0.
Traits
A DNS service, it recieves a DnsPacket as a question and it has to return anotherone as a response.