From 0ea13974809bf053aec3bdac09dc8f5a51794277 Mon Sep 17 00:00:00 2001 From: Sebastian Ziebell Date: Mon, 13 May 2024 17:52:26 +0200 Subject: [PATCH] Add function to return root hint This adds a function to `NameServer` to return root hints. --- .../dnssec/rfc4035/section_3/section_3_2.rs | 10 +++------- .../rfc4035/section_3/section_3_2/section_3_2_2.rs | 4 +--- .../dnssec/rfc4035/section_4/section_4_1.rs | 4 +--- .../src/resolver/dnssec/scenarios/secure.rs | 3 +-- packages/dns-test/examples/explore.rs | 10 +++------- packages/dns-test/src/name_server.rs | 5 +++++ packages/dns-test/src/resolver.rs | 13 +++++-------- packages/dns-test/src/tshark.rs | 8 ++------ 8 files changed, 21 insertions(+), 36 deletions(-) diff --git a/packages/conformance-tests/src/resolver/dnssec/rfc4035/section_3/section_3_2.rs b/packages/conformance-tests/src/resolver/dnssec/rfc4035/section_3/section_3_2.rs index 7d2bd623..8d947214 100644 --- a/packages/conformance-tests/src/resolver/dnssec/rfc4035/section_3/section_3_2.rs +++ b/packages/conformance-tests/src/resolver/dnssec/rfc4035/section_3/section_3_2.rs @@ -5,7 +5,6 @@ use dns_test::{ name_server::NameServer, record::{Record, RecordType}, tshark::{Capture, Direction}, - zone_file::Root, Network, Resolver, Result, FQDN, }; @@ -16,8 +15,7 @@ fn do_bit_not_set_in_request() -> Result<()> { let ns = NameServer::new(&dns_test::PEER, FQDN::ROOT, network)? .sign()? .start()?; - let resolver = Resolver::new(network, Root::new(ns.fqdn().clone(), ns.ipv4_addr())) - .start(&dns_test::SUBJECT)?; + let resolver = Resolver::new(network, ns.root_hint()).start(&dns_test::SUBJECT)?; let mut tshark = resolver.eavesdrop()?; @@ -61,8 +59,7 @@ fn if_do_bit_not_set_in_request_then_requested_dnssec_record_is_not_stripped() - let ns = NameServer::new(&dns_test::PEER, FQDN::ROOT, network)? .sign()? .start()?; - let resolver = Resolver::new(network, Root::new(ns.fqdn().clone(), ns.ipv4_addr())) - .start(&dns_test::SUBJECT)?; + let resolver = Resolver::new(network, ns.root_hint()).start(&dns_test::SUBJECT)?; let client = Client::new(network)?; let settings = *DigSettings::default().recurse(); @@ -88,8 +85,7 @@ fn do_bit_set_in_request() -> Result<()> { let ns = NameServer::new(&dns_test::PEER, FQDN::ROOT, network)? .sign()? .start()?; - let resolver = Resolver::new(network, Root::new(ns.fqdn().clone(), ns.ipv4_addr())) - .start(&dns_test::SUBJECT)?; + let resolver = Resolver::new(network, ns.root_hint()).start(&dns_test::SUBJECT)?; let mut tshark = resolver.eavesdrop()?; diff --git a/packages/conformance-tests/src/resolver/dnssec/rfc4035/section_3/section_3_2/section_3_2_2.rs b/packages/conformance-tests/src/resolver/dnssec/rfc4035/section_3/section_3_2/section_3_2_2.rs index ce9b6ab5..13e13fa0 100644 --- a/packages/conformance-tests/src/resolver/dnssec/rfc4035/section_3/section_3_2/section_3_2_2.rs +++ b/packages/conformance-tests/src/resolver/dnssec/rfc4035/section_3/section_3_2/section_3_2_2.rs @@ -4,7 +4,6 @@ use dns_test::{ client::{Client, DigSettings}, name_server::NameServer, record::RecordType, - zone_file::Root, Network, Resolver, Result, FQDN, }; @@ -14,8 +13,7 @@ use crate::resolver::dnssec::fixtures; fn copies_cd_bit_from_query_to_response() -> Result<()> { let network = &Network::new()?; let ns = NameServer::new(&dns_test::PEER, FQDN::ROOT, network)?.start()?; - let resolver = Resolver::new(network, Root::new(ns.fqdn().clone(), ns.ipv4_addr())) - .start(&dns_test::SUBJECT)?; + let resolver = Resolver::new(network, ns.root_hint()).start(&dns_test::SUBJECT)?; let client = Client::new(network)?; let settings = *DigSettings::default().checking_disabled().recurse(); diff --git a/packages/conformance-tests/src/resolver/dnssec/rfc4035/section_4/section_4_1.rs b/packages/conformance-tests/src/resolver/dnssec/rfc4035/section_4/section_4_1.rs index 61244953..56c4d8da 100644 --- a/packages/conformance-tests/src/resolver/dnssec/rfc4035/section_4/section_4_1.rs +++ b/packages/conformance-tests/src/resolver/dnssec/rfc4035/section_4/section_4_1.rs @@ -2,7 +2,6 @@ use dns_test::client::{Client, DigSettings}; use dns_test::name_server::NameServer; use dns_test::record::RecordType; use dns_test::tshark::{Capture, Direction}; -use dns_test::zone_file::Root; use dns_test::{Network, Resolver, Result, FQDN}; #[test] @@ -10,8 +9,7 @@ use dns_test::{Network, Resolver, Result, FQDN}; fn edns_support() -> Result<()> { let network = &Network::new()?; let ns = NameServer::new(&dns_test::PEER, FQDN::ROOT, network)?.start()?; - let resolver = Resolver::new(network, Root::new(ns.fqdn().clone(), ns.ipv4_addr())) - .start(&dns_test::SUBJECT)?; + let resolver = Resolver::new(network, ns.root_hint()).start(&dns_test::SUBJECT)?; let mut tshark = resolver.eavesdrop()?; diff --git a/packages/conformance-tests/src/resolver/dnssec/scenarios/secure.rs b/packages/conformance-tests/src/resolver/dnssec/scenarios/secure.rs index 373ca82f..7778d53e 100644 --- a/packages/conformance-tests/src/resolver/dnssec/scenarios/secure.rs +++ b/packages/conformance-tests/src/resolver/dnssec/scenarios/secure.rs @@ -3,7 +3,6 @@ use std::net::Ipv4Addr; use dns_test::client::{Client, DigSettings}; use dns_test::name_server::NameServer; use dns_test::record::RecordType; -use dns_test::zone_file::Root; use dns_test::{Network, Resolver, Result, TrustAnchor, FQDN}; use crate::resolver::dnssec::fixtures; @@ -27,7 +26,7 @@ fn can_validate_without_delegation() -> Result<()> { eprintln!("root.zone:\n{}", ns.zone_file()); let trust_anchor = &TrustAnchor::from_iter([root_ksk.clone(), root_zsk.clone()]); - let resolver = Resolver::new(&network, Root::new(ns.fqdn().clone(), ns.ipv4_addr())) + let resolver = Resolver::new(&network, ns.root_hint()) .trust_anchor(trust_anchor) .start(&dns_test::SUBJECT)?; let resolver_addr = resolver.ipv4_addr(); diff --git a/packages/dns-test/examples/explore.rs b/packages/dns-test/examples/explore.rs index dc080c30..f92dd4fc 100644 --- a/packages/dns-test/examples/explore.rs +++ b/packages/dns-test/examples/explore.rs @@ -5,7 +5,6 @@ use std::sync::mpsc; use dns_test::client::Client; use dns_test::name_server::NameServer; use dns_test::record::RecordType; -use dns_test::zone_file::Root; use dns_test::{Network, Resolver, Result, TrustAnchor, FQDN}; fn main() -> Result<()> { @@ -74,12 +73,9 @@ fn main() -> Result<()> { } println!("building docker image..."); - let resolver = Resolver::new( - &network, - Root::new(root_ns.fqdn().clone(), root_ns.ipv4_addr()), - ) - .trust_anchor(&trust_anchor) - .start(&dns_test::SUBJECT)?; + let resolver = Resolver::new(&network, root_ns.root_hint()) + .trust_anchor(&trust_anchor) + .start(&dns_test::SUBJECT)?; println!("DONE\n\n"); let (tx, rx) = mpsc::channel(); diff --git a/packages/dns-test/src/name_server.rs b/packages/dns-test/src/name_server.rs index d8549303..9ac28dc5 100644 --- a/packages/dns-test/src/name_server.rs +++ b/packages/dns-test/src/name_server.rs @@ -419,6 +419,11 @@ impl NameServer { pub fn a(&self) -> Record { Record::a(self.fqdn().clone(), self.ipv4_addr()) } + + /// Returns the [`Root`] hint for this server. + pub fn root_hint(&self) -> Root { + Root::new(self.fqdn().clone(), self.ipv4_addr()) + } } pub struct Stopped; diff --git a/packages/dns-test/src/resolver.rs b/packages/dns-test/src/resolver.rs index 4abf28f8..40352159 100644 --- a/packages/dns-test/src/resolver.rs +++ b/packages/dns-test/src/resolver.rs @@ -183,8 +183,7 @@ mod tests { fn terminate_unbound_works() -> Result<()> { let network = Network::new()?; let ns = NameServer::new(&Implementation::Unbound, FQDN::ROOT, &network)?.start()?; - let resolver = Resolver::new(&network, Root::new(ns.fqdn().clone(), ns.ipv4_addr())) - .start(&Implementation::Unbound)?; + let resolver = Resolver::new(&network, ns.root_hint()).start(&Implementation::Unbound)?; let logs = resolver.terminate()?; eprintln!("{logs}"); @@ -197,8 +196,7 @@ mod tests { fn terminate_bind_works() -> Result<()> { let network = Network::new()?; let ns = NameServer::new(&Implementation::Unbound, FQDN::ROOT, &network)?.start()?; - let resolver = Resolver::new(&network, Root::new(ns.fqdn().clone(), ns.ipv4_addr())) - .start(&Implementation::Bind)?; + let resolver = Resolver::new(&network, ns.root_hint()).start(&Implementation::Bind)?; let logs = resolver.terminate()?; eprintln!("{logs}"); @@ -211,10 +209,9 @@ mod tests { fn terminate_hickory_works() -> Result<()> { let network = Network::new()?; let ns = NameServer::new(&Implementation::Unbound, FQDN::ROOT, &network)?.start()?; - let resolver = Resolver::new(&network, Root::new(ns.fqdn().clone(), ns.ipv4_addr())) - .start(&Implementation::Hickory(Repository( - "https://github.com/hickory-dns/hickory-dns", - )))?; + let resolver = Resolver::new(&network, ns.root_hint()).start(&Implementation::Hickory( + Repository("https://github.com/hickory-dns/hickory-dns"), + ))?; let logs = resolver.terminate()?; // Hickory-DNS start sequence log has been consumed in `ResolverSettings.start`. diff --git a/packages/dns-test/src/tshark.rs b/packages/dns-test/src/tshark.rs index 6af22c17..ba40a6cb 100644 --- a/packages/dns-test/src/tshark.rs +++ b/packages/dns-test/src/tshark.rs @@ -265,7 +265,6 @@ mod tests { use crate::client::{Client, DigSettings}; use crate::name_server::NameServer; use crate::record::RecordType; - use crate::zone_file::Root; use crate::{Implementation, Network, Resolver, FQDN}; use super::*; @@ -322,11 +321,8 @@ mod tests { root_ns.referral_nameserver(&com_ns); let root_ns = root_ns.start()?; - let resolver = Resolver::new( - network, - Root::new(root_ns.fqdn().clone(), root_ns.ipv4_addr()), - ) - .start(&Implementation::Unbound)?; + let resolver = + Resolver::new(network, root_ns.root_hint()).start(&Implementation::Unbound)?; let mut tshark = resolver.eavesdrop()?; let resolver_addr = resolver.ipv4_addr();