Add function to return A record

A NameServer can now return the `Record::A` entry for itself.
This commit is contained in:
Sebastian Ziebell 2024-05-13 16:52:08 +02:00 committed by Jorge Aparicio
parent 14ee8fd6cc
commit 96b3b6650d
5 changed files with 14 additions and 13 deletions

View File

@ -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

View File

@ -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();

View File

@ -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()?;

View File

@ -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<S> NameServer<S> {
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;

View File

@ -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(