diff options
Diffstat (limited to '')
-rw-r--r-- | resolver/src/lib.rs | 33 |
1 files changed, 33 insertions, 0 deletions
diff --git a/resolver/src/lib.rs b/resolver/src/lib.rs new file mode 100644 index 0000000..d66ad5e --- /dev/null +++ b/resolver/src/lib.rs @@ -0,0 +1,33 @@ +use std::net::SocketAddr; +use server::handle_query; +use tokio::net::UdpSocket; +use packet::Result; + +mod server; +mod config; + +pub use config::Config as Config; + +pub struct DnsResolver { + config: Config +} + +impl DnsResolver { + + pub fn new(config: Config) -> Self { + Self { config } + } + + pub async fn bind(self, addr: SocketAddr) -> Result<()> { + + let socket = UdpSocket::bind(addr).await?; + + loop { + match handle_query(&socket, &self.config).await { + Ok(_) => {} + Err(e) => eprintln!("An error occurred: {}", e), + } + } + } + +}
\ No newline at end of file |