Support reading the root hints file
This commit is contained in:
parent
81cb3dbded
commit
84457a67dc
@ -139,15 +139,16 @@ impl Parser {
|
||||
&mut self,
|
||||
lexer: Lexer,
|
||||
origin: Option<Name>,
|
||||
class: Option<DNSClass>,
|
||||
) -> ParseResult<(Name, BTreeMap<RrKey, RecordSet>)> {
|
||||
let mut lexer = lexer;
|
||||
let mut records: BTreeMap<RrKey, RecordSet> = BTreeMap::new();
|
||||
|
||||
let mut origin: Option<Name> = origin;
|
||||
let mut class: Option<DNSClass> = class;
|
||||
let mut current_name: Option<Name> = None;
|
||||
let mut rtype: Option<RecordType> = None;
|
||||
let mut ttl: Option<u32> = None;
|
||||
let mut class: Option<DNSClass> = None;
|
||||
let mut state = State::StartLine;
|
||||
|
||||
while let Some(t) = lexer.next_token()? {
|
||||
|
@ -192,7 +192,7 @@ impl FileAuthority {
|
||||
|
||||
let lexer = Lexer::new(&buf);
|
||||
let (origin, records) = Parser::new()
|
||||
.parse(lexer, Some(origin))
|
||||
.parse(lexer, Some(origin), None)
|
||||
.map_err(|e| format!("failed to parse {}: {:?}", config.zone_file_path, e))?;
|
||||
|
||||
info!(
|
||||
|
@ -59,7 +59,7 @@ tech. 3600 in soa ns0.centralnic.net. hostmaster.centralnic.ne
|
||||
"###,
|
||||
);
|
||||
|
||||
let records = Parser::new().parse(lexer, Some(Name::from_str("isi.edu").unwrap()));
|
||||
let records = Parser::new().parse(lexer, Some(Name::from_str("isi.edu").unwrap()), None);
|
||||
if records.is_err() {
|
||||
panic!("failed to parse: {:?}", records.err())
|
||||
}
|
||||
@ -437,7 +437,7 @@ a A 127.0.0.1
|
||||
"###,
|
||||
);
|
||||
|
||||
let records = Parser::new().parse(lexer, Some(Name::from_str("isi.edu").unwrap()));
|
||||
let records = Parser::new().parse(lexer, Some(Name::from_str("isi.edu").unwrap()), None);
|
||||
|
||||
if records.is_err() {
|
||||
panic!("failed to parse: {:?}", records.err())
|
||||
@ -465,7 +465,7 @@ b A 127.0.0.2
|
||||
"###,
|
||||
);
|
||||
|
||||
let records = Parser::new().parse(lexer, Some(Name::from_str("isi.edu").unwrap()));
|
||||
let records = Parser::new().parse(lexer, Some(Name::from_str("isi.edu").unwrap()), None);
|
||||
|
||||
if records.is_err() {
|
||||
panic!("failed to parse: {:?}", records.err())
|
||||
@ -492,7 +492,7 @@ a A 127.0.0.1
|
||||
"###,
|
||||
);
|
||||
|
||||
let records = Parser::new().parse(lexer, Some(Name::from_str("isi.edu").unwrap()));
|
||||
let records = Parser::new().parse(lexer, Some(Name::from_str("isi.edu").unwrap()), None);
|
||||
|
||||
if records.is_err() {
|
||||
panic!("failed to parse: {:?}", records.err())
|
||||
@ -502,3 +502,24 @@ a A 127.0.0.1
|
||||
|
||||
assert!(InMemoryAuthority::new(origin, records, ZoneType::Primary, false).is_ok());
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_named_root() {
|
||||
let lexer = Lexer::new(
|
||||
r###"
|
||||
. 3600000 NS A.ROOT-SERVERS.NET.
|
||||
"###,
|
||||
);
|
||||
|
||||
let records = Parser::new().parse(lexer, Some(Name::root()), Some(DNSClass::IN));
|
||||
|
||||
if records.is_err() {
|
||||
panic!("failed to parse: {:?}", records.err())
|
||||
}
|
||||
|
||||
let (_, records) = records.unwrap();
|
||||
let key = RrKey::new(LowerName::from(Name::root()), RecordType::NS);
|
||||
|
||||
assert!(records.contains_key(&key));
|
||||
assert_eq!(records[&key].dns_class(), DNSClass::IN)
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user