From 96b3b6650dd7585b7203f6089d49cbe2fb5f1df5 Mon Sep 17 00:00:00 2001 From: Sebastian Ziebell Date: Mon, 13 May 2024 16:52:08 +0200 Subject: [PATCH] Add function to return A record A NameServer can now return the `Record::A` entry for itself. --- README.md | 4 ++-- .../src/resolver/dnssec/scenarios/secure.rs | 4 ++-- packages/dns-test/examples/explore.rs | 6 ++---- packages/dns-test/src/name_server.rs | 7 ++++++- packages/dns-test/src/tshark.rs | 6 ++---- 5 files changed, 14 insertions(+), 13 deletions(-) diff --git a/README.md b/README.md index 34c594e1..1de72e41 100644 --- a/README.md +++ b/README.md @@ -70,8 +70,8 @@ let com_ns: NameServer; // for `com.` zone let nameservers_ns: NameServer; // for `nameservers.com.` zone nameservers_ns - .add(Record::a(root_ns.fqdn().clone(), root_ns.ipv4_addr())) - .add(Record::a(com_ns.fqdn().clone(), com_ns.ipv4_addr())); + .add(root_ns.a()) + .add(com_ns.a()); // each `NameServer` will start out with an A record of its FQDN to its own IPv4 address in its // zone file so NO need to add that one in the preceding statement diff --git a/packages/conformance-tests/src/resolver/dnssec/scenarios/secure.rs b/packages/conformance-tests/src/resolver/dnssec/scenarios/secure.rs index 4f2d5579..373ca82f 100644 --- a/packages/conformance-tests/src/resolver/dnssec/scenarios/secure.rs +++ b/packages/conformance-tests/src/resolver/dnssec/scenarios/secure.rs @@ -2,7 +2,7 @@ use std::net::Ipv4Addr; use dns_test::client::{Client, DigSettings}; use dns_test::name_server::NameServer; -use dns_test::record::{Record, RecordType}; +use dns_test::record::RecordType; use dns_test::zone_file::Root; use dns_test::{Network, Resolver, Result, TrustAnchor, FQDN}; @@ -14,7 +14,7 @@ use crate::resolver::dnssec::fixtures; fn can_validate_without_delegation() -> Result<()> { let network = Network::new()?; let mut ns = NameServer::new(&dns_test::PEER, FQDN::ROOT, &network)?; - ns.add(Record::a(ns.fqdn().clone(), ns.ipv4_addr())); + ns.add(ns.a()); let ns = ns.sign()?; let root_ksk = ns.key_signing_key().clone(); diff --git a/packages/dns-test/examples/explore.rs b/packages/dns-test/examples/explore.rs index bc13d63a..73a43a86 100644 --- a/packages/dns-test/examples/explore.rs +++ b/packages/dns-test/examples/explore.rs @@ -4,7 +4,7 @@ use std::sync::mpsc; use dns_test::client::Client; use dns_test::name_server::NameServer; -use dns_test::record::{Record, RecordType}; +use dns_test::record::RecordType; use dns_test::zone_file::Root; use dns_test::{Network, Resolver, Result, TrustAnchor, FQDN}; @@ -22,9 +22,7 @@ fn main() -> Result<()> { let mut com_ns = NameServer::new(peer, FQDN::COM, &network)?; let mut nameservers_ns = NameServer::new(peer, FQDN("nameservers.com.")?, &network)?; - nameservers_ns - .add(Record::a(root_ns.fqdn().clone(), root_ns.ipv4_addr())) - .add(Record::a(com_ns.fqdn().clone(), com_ns.ipv4_addr())); + nameservers_ns.add(root_ns.a()).add(com_ns.a()); let nameservers_ns = if args.dnssec { let nameservers_ns = nameservers_ns.sign()?; diff --git a/packages/dns-test/src/name_server.rs b/packages/dns-test/src/name_server.rs index 32488f40..6e599a9d 100644 --- a/packages/dns-test/src/name_server.rs +++ b/packages/dns-test/src/name_server.rs @@ -55,7 +55,7 @@ impl Graph { leaf.container.network(), )?; - leaf.add(Record::a(nameserver.fqdn().clone(), nameserver.ipv4_addr())); + leaf.add(nameserver.a()); nameservers.push(nameserver); zone = parent; @@ -409,6 +409,11 @@ impl NameServer { pub fn fqdn(&self) -> &FQDN { &self.zone_file.soa.nameserver } + + /// Returns the [`Record::A`] record for this server. + pub fn a(&self) -> Record { + Record::a(self.fqdn().clone(), self.ipv4_addr()) + } } pub struct Stopped; diff --git a/packages/dns-test/src/tshark.rs b/packages/dns-test/src/tshark.rs index 1307f4f7..6364d437 100644 --- a/packages/dns-test/src/tshark.rs +++ b/packages/dns-test/src/tshark.rs @@ -264,7 +264,7 @@ struct Ip { mod tests { use crate::client::{Client, DigSettings}; use crate::name_server::NameServer; - use crate::record::{Record, RecordType}; + use crate::record::RecordType; use crate::zone_file::Root; use crate::{Implementation, Network, Resolver, FQDN}; @@ -313,9 +313,7 @@ mod tests { let mut nameservers_ns = NameServer::new(&Implementation::Unbound, FQDN("nameservers.com.")?, network)?; - nameservers_ns - .add(Record::a(root_ns.fqdn().clone(), root_ns.ipv4_addr())) - .add(Record::a(com_ns.fqdn().clone(), com_ns.ipv4_addr())); + nameservers_ns.add(root_ns.a()).add(com_ns.a()); let nameservers_ns = nameservers_ns.start()?; com_ns.referral(