Crate microdns

Source
Expand description

§microdns

A minimal DNS resolver library using only the Rust standard library.

This crate provides functionality to resolve various DNS record types, including MX records for mail servers and A/AAAA records for IP addresses.

§Example

use microdns::{lookup_mx_records, lookup_ip_addresses, resolve_mx_server_ips};

fn main() -> Result<(), microdns::Error> {
    let domain = "google.com";
     
    // Get MX records
    let mx_records = lookup_mx_records(domain)?;
     
    // Get IP addresses for a specific hostname
    let ips = lookup_ip_addresses("smtp.google.com")?;
     
    // Or resolve all MX servers to their IPs
    let server_ips = resolve_mx_server_ips(domain)?;
     
    Ok(())
}

Structs§

DnsConfig
DNS query configuration
DnsHeader
DNS header structure
DnsRecord
DNS record structure
MxRecord
MX record structure
ServerIpRecord
Server with resolved IP addresses

Enums§

Error
Error type for DNS operations
RecordData
DNS record data variants

Constants§

DEFAULT_DNS_SERVERS
Default DNS servers to try (in order)
DNS_TYPE_A
DNS record type constants
DNS_TYPE_AAAA
DNS_TYPE_MX

Functions§

build_dns_query
Build DNS query packet
lookup_dns_records
Send DNS query and get response using the specified configuration
lookup_ip_addresses
Lookup IP addresses for a hostname
lookup_ip_addresses_with_config
Lookup IP addresses for a hostname with custom configuration
lookup_mx_records
Lookup MX records for a domain
lookup_mx_records_with_config
Lookup MX records for a domain with custom configuration
parse_answer
Parse DNS answer record
parse_dns_header
Parse DNS header from buffer
parse_dns_name
Parse DNS name from buffer
parse_ip_records
Parse IP records from DNS response
parse_mx_records
Parse MX records from DNS response
resolve_mx_server_ips
Resolve MX records to their IP addresses
resolve_mx_server_ips_with_config
Resolve MX records to their IP addresses with custom configuration
skip_question
Skip DNS question section