digs/
dns.rs

1use std::net;
2use std::str::FromStr;
3
4use hickory_client::client::{Client, SyncClient};
5use hickory_client::op::DnsResponse;
6use hickory_client::rr::{DNSClass, Name, RecordType};
7use hickory_client::udp::UdpClientConnection;
8
9use crate::error::Error;
10
11pub fn query(
12    domain: &str,
13    rtype: RecordType,
14    address: net::SocketAddr,
15) -> Result<DnsResponse, Error> {
16    let conn = UdpClientConnection::new(address)?;
17    let client = SyncClient::new(conn);
18
19    let name = Name::from_str(&format!("{}.", domain))?;
20    Ok(client.query(&name, DNSClass::IN, rtype)?)
21}