Cleaning up interfaces of the A and AAAA RData

This commit is contained in:
Benjamin Fry 2016-05-09 19:17:43 -07:00
parent 42b7c0f08b
commit 3e4b50f98b
13 changed files with 117 additions and 126 deletions

View File

@ -3,6 +3,9 @@ All notable changes to this project will be documented in this file.
This project adheres to [Semantic Versioning](http://semver.org/).
## unreleased
### Added
- Documentation on all modules
### Fixed
- Added loop on TCP accept requests
- Added loop on UDP reads

View File

@ -758,10 +758,10 @@ pub mod authority_tests {
records.upsert(Record::new().name(origin.clone()).ttl(60).rr_type(RecordType::TXT).dns_class(DNSClass::IN).rdata(RData::TXT{ txt_data: vec!["$Id: example.com 4415 2015-08-24 20:12:23Z davids $".to_string()] }).clone(), 0);
// example.com. 86400 IN A 93.184.216.34
records.upsert(Record::new().name(origin.clone()).ttl(86400).rr_type(RecordType::A).dns_class(DNSClass::IN).rdata(RData::A{ address: Ipv4Addr::new(93,184,216,34) }).clone(), 0);
records.upsert(Record::new().name(origin.clone()).ttl(86400).rr_type(RecordType::A).dns_class(DNSClass::IN).rdata(RData::A(Ipv4Addr::new(93,184,216,34))).clone(), 0);
// example.com. 86400 IN AAAA 2606:2800:220:1:248:1893:25c8:1946
records.upsert(Record::new().name(origin.clone()).ttl(86400).rr_type(RecordType::AAAA).dns_class(DNSClass::IN).rdata(RData::AAAA{ address: Ipv6Addr::new(0x2606,0x2800,0x220,0x1,0x248,0x1893,0x25c8,0x1946) }).clone(), 0);
records.upsert(Record::new().name(origin.clone()).ttl(86400).rr_type(RecordType::AAAA).dns_class(DNSClass::IN).rdata(RData::AAAA(Ipv6Addr::new(0x2606,0x2800,0x220,0x1,0x248,0x1893,0x25c8,0x1946))).clone(), 0);
// TODO support these later...
@ -784,10 +784,10 @@ pub mod authority_tests {
records.upsert(Record::new().name(www_name.clone()).ttl(86400).rr_type(RecordType::TXT).dns_class(DNSClass::IN).rdata(RData::TXT{ txt_data: vec!["v=spf1 -all".to_string()] }).clone(), 0);
// www.example.com. 86400 IN A 93.184.216.34
records.upsert(Record::new().name(www_name.clone()).ttl(86400).rr_type(RecordType::A).dns_class(DNSClass::IN).rdata(RData::A{ address: Ipv4Addr::new(93,184,216,34) }).clone(), 0);
records.upsert(Record::new().name(www_name.clone()).ttl(86400).rr_type(RecordType::A).dns_class(DNSClass::IN).rdata(RData::A(Ipv4Addr::new(93,184,216,34))).clone(), 0);
// www.example.com. 86400 IN AAAA 2606:2800:220:1:248:1893:25c8:1946
records.upsert(Record::new().name(www_name.clone()).ttl(86400).rr_type(RecordType::AAAA).dns_class(DNSClass::IN).rdata(RData::AAAA{ address: Ipv6Addr::new(0x2606,0x2800,0x220,0x1,0x248,0x1893,0x25c8,0x1946) }).clone(), 0);
records.upsert(Record::new().name(www_name.clone()).ttl(86400).rr_type(RecordType::AAAA).dns_class(DNSClass::IN).rdata(RData::AAAA(Ipv6Addr::new(0x2606,0x2800,0x220,0x1,0x248,0x1893,0x25c8,0x1946))).clone(), 0);
// www.example.com. 3600 IN RRSIG NSEC 8 3 3600 20150925215757 20150905040848 54108 example.com. ZKIVt1IN3O1FWZPSfrQAH7nHt7RUFDjcbh7NxnEqd/uTGCnZ6SrAEgrY E9GMmBwvRjoucphGtjkYOpPJPe5MlnTHoYCjxL4qmG3LsD2KD0bfPufa ibtlQZRrPglxZ92hBKK3ZiPnPRe7I9yni2UQSQA7XDi7CQySYyo490It AxdXjAo=
// www.example.com. 3600 IN NSEC example.com. A TXT AAAA RRSIG NSEC
@ -820,7 +820,7 @@ pub mod authority_tests {
assert_eq!(**lookup.first().unwrap(), Record::new().name(authority.get_origin().clone()).ttl(60).rr_type(RecordType::TXT).dns_class(DNSClass::IN).rdata(RData::TXT{ txt_data: vec!["$Id: example.com 4415 2015-08-24 20:12:23Z davids $".to_string()] }).clone());
assert_eq!(**authority.lookup(authority.get_origin(), RecordType::A).unwrap().first().unwrap(), Record::new().name(authority.get_origin().clone()).ttl(86400).rr_type(RecordType::A).dns_class(DNSClass::IN).rdata(RData::A{ address: Ipv4Addr::new(93,184,216,34) }).clone());
assert_eq!(**authority.lookup(authority.get_origin(), RecordType::A).unwrap().first().unwrap(), Record::new().name(authority.get_origin().clone()).ttl(86400).rr_type(RecordType::A).dns_class(DNSClass::IN).rdata(RData::A(Ipv4Addr::new(93,184,216,34))).clone());
}
#[test]
@ -866,13 +866,13 @@ pub mod authority_tests {
assert_eq!(authority.verify_prerequisites(&[Record::new().name(authority.get_origin().clone()).ttl(0).dns_class(DNSClass::NONE).rr_type(RecordType::A).rdata(RData::NULL(NULL::new())).clone()]), Err(ResponseCode::YXRRSet));
// * zone rrset rr RRset exists (value dependent)
assert!(authority.verify_prerequisites(&[Record::new().name(authority.get_origin().clone()).ttl(0).dns_class(DNSClass::IN).rr_type(RecordType::A).rdata(RData::A{ address: Ipv4Addr::new(93,184,216,34) }).clone()]).is_ok());
assert!(authority.verify_prerequisites(&[Record::new().name(authority.get_origin().clone()).ttl(0).dns_class(DNSClass::IN).rr_type(RecordType::A).rdata(RData::A(Ipv4Addr::new(93,184,216,34))).clone()]).is_ok());
// wrong class
assert_eq!(authority.verify_prerequisites(&[Record::new().name(authority.get_origin().clone()).ttl(0).dns_class(DNSClass::CH).rr_type(RecordType::A).rdata(RData::A{ address: Ipv4Addr::new(93,184,216,34) }).clone()]), Err(ResponseCode::FormErr));
assert_eq!(authority.verify_prerequisites(&[Record::new().name(authority.get_origin().clone()).ttl(0).dns_class(DNSClass::CH).rr_type(RecordType::A).rdata(RData::A(Ipv4Addr::new(93,184,216,34))).clone()]), Err(ResponseCode::FormErr));
// wrong Name
assert_eq!(authority.verify_prerequisites(&[Record::new().name(not_in_zone.clone()).ttl(0).dns_class(DNSClass::IN).rr_type(RecordType::A).rdata(RData::A{ address: Ipv4Addr::new(93,184,216,24) }).clone()]), Err(ResponseCode::NXRRSet));
assert_eq!(authority.verify_prerequisites(&[Record::new().name(not_in_zone.clone()).ttl(0).dns_class(DNSClass::IN).rr_type(RecordType::A).rdata(RData::A(Ipv4Addr::new(93,184,216,24))).clone()]), Err(ResponseCode::NXRRSet));
// wrong IP
assert_eq!(authority.verify_prerequisites(&[Record::new().name(authority.get_origin().clone()).ttl(0).dns_class(DNSClass::IN).rr_type(RecordType::A).rdata(RData::A{ address: Ipv4Addr::new(93,184,216,24) }).clone()]), Err(ResponseCode::NXRRSet));
assert_eq!(authority.verify_prerequisites(&[Record::new().name(authority.get_origin().clone()).ttl(0).dns_class(DNSClass::IN).rr_type(RecordType::A).rdata(RData::A(Ipv4Addr::new(93,184,216,24))).clone()]), Err(ResponseCode::NXRRSet));
}
#[test]
@ -882,16 +882,16 @@ pub mod authority_tests {
let authority: Authority = create_example();
assert_eq!(authority.pre_scan(&[Record::new().name(not_zone.clone()).ttl(86400).rr_type(RecordType::A).dns_class(DNSClass::IN).rdata(RData::A{ address: Ipv4Addr::new(93,184,216,24) }).clone()]), Err(ResponseCode::NotZone));
assert_eq!(authority.pre_scan(&[Record::new().name(not_zone.clone()).ttl(86400).rr_type(RecordType::A).dns_class(DNSClass::IN).rdata(RData::A(Ipv4Addr::new(93,184,216,24))).clone()]), Err(ResponseCode::NotZone));
assert_eq!(authority.pre_scan(&[Record::new().name(up_name.clone()).ttl(86400).rr_type(RecordType::ANY).dns_class(DNSClass::IN).rdata(RData::NULL(NULL::new()) ).clone()]), Err(ResponseCode::FormErr));
assert_eq!(authority.pre_scan(&[Record::new().name(up_name.clone()).ttl(86400).rr_type(RecordType::AXFR).dns_class(DNSClass::IN).rdata(RData::NULL(NULL::new()) ).clone()]), Err(ResponseCode::FormErr));
assert_eq!(authority.pre_scan(&[Record::new().name(up_name.clone()).ttl(86400).rr_type(RecordType::IXFR).dns_class(DNSClass::IN).rdata(RData::NULL(NULL::new()) ).clone()]), Err(ResponseCode::FormErr));
assert!(authority.pre_scan(&[Record::new().name(up_name.clone()).ttl(86400).rr_type(RecordType::A).dns_class(DNSClass::IN).rdata(RData::A{ address: Ipv4Addr::new(93,184,216,24) }).clone()]).is_ok());
assert!(authority.pre_scan(&[Record::new().name(up_name.clone()).ttl(86400).rr_type(RecordType::A).dns_class(DNSClass::IN).rdata(RData::A(Ipv4Addr::new(93,184,216,24))).clone()]).is_ok());
assert!(authority.pre_scan(&[Record::new().name(up_name.clone()).ttl(86400).rr_type(RecordType::A).dns_class(DNSClass::IN).rdata(RData::NULL(NULL::new())).clone()]).is_ok());
assert_eq!(authority.pre_scan(&[Record::new().name(up_name.clone()).ttl(86400).rr_type(RecordType::A).dns_class(DNSClass::ANY).rdata(RData::A{ address: Ipv4Addr::new(93,184,216,24) }).clone()]), Err(ResponseCode::FormErr));
assert_eq!(authority.pre_scan(&[Record::new().name(up_name.clone()).ttl(0).rr_type(RecordType::A).dns_class(DNSClass::ANY).rdata(RData::A{ address: Ipv4Addr::new(93,184,216,24) }).clone()]), Err(ResponseCode::FormErr));
assert_eq!(authority.pre_scan(&[Record::new().name(up_name.clone()).ttl(86400).rr_type(RecordType::A).dns_class(DNSClass::ANY).rdata(RData::A(Ipv4Addr::new(93,184,216,24))).clone()]), Err(ResponseCode::FormErr));
assert_eq!(authority.pre_scan(&[Record::new().name(up_name.clone()).ttl(0).rr_type(RecordType::A).dns_class(DNSClass::ANY).rdata(RData::A(Ipv4Addr::new(93,184,216,24))).clone()]), Err(ResponseCode::FormErr));
assert_eq!(authority.pre_scan(&[Record::new().name(up_name.clone()).ttl(0).rr_type(RecordType::AXFR).dns_class(DNSClass::ANY).rdata(RData::NULL(NULL::new())).clone()]), Err(ResponseCode::FormErr));
assert_eq!(authority.pre_scan(&[Record::new().name(up_name.clone()).ttl(0).rr_type(RecordType::IXFR).dns_class(DNSClass::ANY).rdata(RData::NULL(NULL::new())).clone()]), Err(ResponseCode::FormErr));
assert!(authority.pre_scan(&[Record::new().name(up_name.clone()).ttl(0).rr_type(RecordType::ANY).dns_class(DNSClass::ANY).rdata(RData::NULL(NULL::new())).clone()]).is_ok());
@ -902,7 +902,7 @@ pub mod authority_tests {
assert_eq!(authority.pre_scan(&[Record::new().name(up_name.clone()).ttl(0).rr_type(RecordType::AXFR).dns_class(DNSClass::NONE).rdata(RData::NULL(NULL::new())).clone()]), Err(ResponseCode::FormErr));
assert_eq!(authority.pre_scan(&[Record::new().name(up_name.clone()).ttl(0).rr_type(RecordType::IXFR).dns_class(DNSClass::NONE).rdata(RData::NULL(NULL::new())).clone()]), Err(ResponseCode::FormErr));
assert!(authority.pre_scan(&[Record::new().name(up_name.clone()).ttl(0).rr_type(RecordType::A).dns_class(DNSClass::NONE).rdata(RData::NULL(NULL::new())).clone()]).is_ok());
assert!(authority.pre_scan(&[Record::new().name(up_name.clone()).ttl(0).rr_type(RecordType::A).dns_class(DNSClass::NONE).rdata(RData::A{ address: Ipv4Addr::new(93,184,216,24) }).clone()]).is_ok());
assert!(authority.pre_scan(&[Record::new().name(up_name.clone()).ttl(0).rr_type(RecordType::A).dns_class(DNSClass::NONE).rdata(RData::A(Ipv4Addr::new(93,184,216,24))).clone()]).is_ok());
assert_eq!(authority.pre_scan(&[Record::new().name(up_name.clone()).ttl(86400).rr_type(RecordType::A).dns_class(DNSClass::CH).rdata(RData::NULL(NULL::new())).clone()]), Err(ResponseCode::FormErr));
}
@ -916,8 +916,8 @@ pub mod authority_tests {
let mut original_vec: Vec<Record> = vec![
Record::new().name(www_name.clone()).ttl(86400).rr_type(RecordType::TXT).dns_class(DNSClass::IN).rdata(RData::TXT{ txt_data: vec!["v=spf1 -all".to_string()] }).clone(),
Record::new().name(www_name.clone()).ttl(86400).rr_type(RecordType::A).dns_class(DNSClass::IN).rdata(RData::A{ address: Ipv4Addr::new(93,184,216,34) }).clone(),
Record::new().name(www_name.clone()).ttl(86400).rr_type(RecordType::AAAA).dns_class(DNSClass::IN).rdata(RData::AAAA{ address: Ipv6Addr::new(0x2606,0x2800,0x220,0x1,0x248,0x1893,0x25c8,0x1946) }).clone(),
Record::new().name(www_name.clone()).ttl(86400).rr_type(RecordType::A).dns_class(DNSClass::IN).rdata(RData::A(Ipv4Addr::new(93,184,216,34))).clone(),
Record::new().name(www_name.clone()).ttl(86400).rr_type(RecordType::AAAA).dns_class(DNSClass::IN).rdata(RData::AAAA(Ipv6Addr::new(0x2606,0x2800,0x220,0x1,0x248,0x1893,0x25c8,0x1946))).clone(),
];
original_vec.sort();
@ -935,11 +935,11 @@ pub mod authority_tests {
//
// zone rrset rr Add to an RRset
let add_record = &[Record::new().name(new_name.clone()).ttl(86400).rr_type(RecordType::A).dns_class(DNSClass::IN).rdata(RData::A{ address: Ipv4Addr::new(93,184,216,24) }).clone()];
let add_record = &[Record::new().name(new_name.clone()).ttl(86400).rr_type(RecordType::A).dns_class(DNSClass::IN).rdata(RData::A(Ipv4Addr::new(93,184,216,24))).clone()];
assert!(authority.update_records(add_record, 0).is_ok());
assert_eq!(authority.lookup(&new_name, RecordType::ANY).unwrap_or(vec![]), add_record.iter().collect::<Vec<&Record>>());
let add_www_record = &[Record::new().name(www_name.clone()).ttl(86400).rr_type(RecordType::A).dns_class(DNSClass::IN).rdata(RData::A{ address: Ipv4Addr::new(10,0,0,1) }).clone()];
let add_www_record = &[Record::new().name(www_name.clone()).ttl(86400).rr_type(RecordType::A).dns_class(DNSClass::IN).rdata(RData::A(Ipv4Addr::new(10,0,0,1))).clone()];
assert!(authority.update_records(add_www_record, 0).is_ok());
{
@ -954,7 +954,7 @@ pub mod authority_tests {
//
// NONE rrset rr Delete an RR from an RRset
let del_record = &[Record::new().name(new_name.clone()).ttl(86400).rr_type(RecordType::A).dns_class(DNSClass::NONE).rdata(RData::A{ address: Ipv4Addr::new(93,184,216,24) }).clone()];
let del_record = &[Record::new().name(new_name.clone()).ttl(86400).rr_type(RecordType::A).dns_class(DNSClass::NONE).rdata(RData::A(Ipv4Addr::new(93,184,216,24))).clone()];
assert!(authority.update_records(del_record, 0).is_ok());
{
println!("after delete of specific record: {:?}", authority.lookup(&new_name, RecordType::ANY));
@ -962,7 +962,7 @@ pub mod authority_tests {
}
// remove one from www
let del_record = &[Record::new().name(www_name.clone()).ttl(86400).rr_type(RecordType::A).dns_class(DNSClass::NONE).rdata(RData::A{ address: Ipv4Addr::new(10,0,0,1) }).clone()];
let del_record = &[Record::new().name(www_name.clone()).ttl(86400).rr_type(RecordType::A).dns_class(DNSClass::NONE).rdata(RData::A(Ipv4Addr::new(10,0,0,1))).clone()];
assert!(authority.update_records(del_record, 0).is_ok());
{
let mut www_rrset = authority.lookup(&www_name, RecordType::ANY).unwrap_or(vec![]);
@ -977,7 +977,7 @@ pub mod authority_tests {
assert!(authority.update_records(del_record, 0).is_ok());
let mut removed_a_vec: Vec<_> = vec![
Record::new().name(www_name.clone()).ttl(86400).rr_type(RecordType::TXT).dns_class(DNSClass::IN).rdata(RData::TXT{ txt_data: vec!["v=spf1 -all".to_string()] }).clone(),
Record::new().name(www_name.clone()).ttl(86400).rr_type(RecordType::AAAA).dns_class(DNSClass::IN).rdata(RData::AAAA{ address: Ipv6Addr::new(0x2606,0x2800,0x220,0x1,0x248,0x1893,0x25c8,0x1946) }).clone(),
Record::new().name(www_name.clone()).ttl(86400).rr_type(RecordType::AAAA).dns_class(DNSClass::IN).rdata(RData::AAAA(Ipv6Addr::new(0x2606,0x2800,0x220,0x1,0x248,0x1893,0x25c8,0x1946))).clone(),
];
removed_a_vec.sort();

View File

@ -319,7 +319,7 @@ mod catalog_tests {
if let Some(result) = Catalog::search(&example, &query) {
assert_eq!(result.first().unwrap().get_rr_type(), RecordType::A);
assert_eq!(result.first().unwrap().get_dns_class(), DNSClass::IN);
assert_eq!(result.first().unwrap().get_rdata(), &RData::A{ address: Ipv4Addr::new(93,184,216,34) });
assert_eq!(result.first().unwrap().get_rdata(), &RData::A(Ipv4Addr::new(93,184,216,34)));
} else {
panic!("expected a result");
}
@ -337,7 +337,7 @@ mod catalog_tests {
if let Some(result) = Catalog::search(&example, &query) {
assert_eq!(result.first().unwrap().get_rr_type(), RecordType::A);
assert_eq!(result.first().unwrap().get_dns_class(), DNSClass::IN);
assert_eq!(result.first().unwrap().get_rdata(), &RData::A{ address: Ipv4Addr::new(93,184,216,34) });
assert_eq!(result.first().unwrap().get_rdata(), &RData::A(Ipv4Addr::new(93,184,216,34)));
} else {
panic!("expected a result");
}
@ -351,12 +351,12 @@ mod catalog_tests {
records.upsert(Record::new().name(origin.clone()).ttl(86400).rr_type(RecordType::NS).dns_class(DNSClass::IN).rdata(RData::NS(Name::parse("a.iana-servers.net.", None).unwrap()) ).clone(), 0);
records.upsert(Record::new().name(origin.clone()).ttl(86400).rr_type(RecordType::NS).dns_class(DNSClass::IN).rdata(RData::NS(Name::parse("b.iana-servers.net.", None).unwrap()) ).clone(), 0);
records.upsert(Record::new().name(origin.clone()).ttl(86400).rr_type(RecordType::A).dns_class(DNSClass::IN).rdata(RData::A{ address: Ipv4Addr::new(94,184,216,34) }).clone(), 0);
records.upsert(Record::new().name(origin.clone()).ttl(86400).rr_type(RecordType::AAAA).dns_class(DNSClass::IN).rdata(RData::AAAA{ address: Ipv6Addr::new(0x2606,0x2800,0x220,0x1,0x248,0x1893,0x25c8,0x1946) }).clone(), 0);
records.upsert(Record::new().name(origin.clone()).ttl(86400).rr_type(RecordType::A).dns_class(DNSClass::IN).rdata(RData::A(Ipv4Addr::new(94,184,216,34))).clone(), 0);
records.upsert(Record::new().name(origin.clone()).ttl(86400).rr_type(RecordType::AAAA).dns_class(DNSClass::IN).rdata(RData::AAAA(Ipv6Addr::new(0x2606,0x2800,0x220,0x1,0x248,0x1893,0x25c8,0x1946))).clone(), 0);
let www_name: Name = Name::parse("www.test.com.", None).unwrap();
records.upsert(Record::new().name(www_name.clone()).ttl(86400).rr_type(RecordType::A).dns_class(DNSClass::IN).rdata(RData::A{ address: Ipv4Addr::new(94,184,216,34) }).clone(), 0);
records.upsert(Record::new().name(www_name.clone()).ttl(86400).rr_type(RecordType::AAAA).dns_class(DNSClass::IN).rdata(RData::AAAA{ address: Ipv6Addr::new(0x2606,0x2800,0x220,0x1,0x248,0x1893,0x25c8,0x1946) }).clone(), 0);
records.upsert(Record::new().name(www_name.clone()).ttl(86400).rr_type(RecordType::A).dns_class(DNSClass::IN).rdata(RData::A(Ipv4Addr::new(94,184,216,34))).clone(), 0);
records.upsert(Record::new().name(www_name.clone()).ttl(86400).rr_type(RecordType::AAAA).dns_class(DNSClass::IN).rdata(RData::AAAA(Ipv6Addr::new(0x2606,0x2800,0x220,0x1,0x248,0x1893,0x25c8,0x1946))).clone(), 0);
records
}
@ -388,7 +388,7 @@ mod catalog_tests {
assert!(!answers.is_empty());
assert_eq!(answers.first().unwrap().get_rr_type(), RecordType::A);
assert_eq!(answers.first().unwrap().get_rdata(), &RData::A{ address: Ipv4Addr::new(93,184,216,34) });
assert_eq!(answers.first().unwrap().get_rdata(), &RData::A(Ipv4Addr::new(93,184,216,34)));
let mut ns: Vec<Record> = result.get_name_servers().to_vec();
ns.sort();
@ -414,7 +414,7 @@ mod catalog_tests {
assert!(!answers.is_empty());
assert_eq!(answers.first().unwrap().get_rr_type(), RecordType::A);
assert_eq!(answers.first().unwrap().get_rdata(), &RData::A{ address: Ipv4Addr::new(93,184,216,34) });
assert_eq!(answers.first().unwrap().get_rdata(), &RData::A(Ipv4Addr::new(93,184,216,34)));
}
#[test]
@ -473,10 +473,10 @@ mod catalog_tests {
Record::new().name(origin.clone()).ttl(3600).rr_type(RecordType::SOA).dns_class(DNSClass::IN).rdata(RData::SOA(SOA::new(Name::parse("sns.dns.icann.org.", None).unwrap(), Name::parse("noc.dns.icann.org.", None).unwrap(), 2015082403, 7200, 3600, 1209600, 3600 ))).clone(),
Record::new().name(origin.clone()).ttl(86400).rr_type(RecordType::NS).dns_class(DNSClass::IN).rdata(RData::NS(Name::parse("a.iana-servers.net.", None).unwrap()) ).clone(),
Record::new().name(origin.clone()).ttl(86400).rr_type(RecordType::NS).dns_class(DNSClass::IN).rdata(RData::NS(Name::parse("b.iana-servers.net.", None).unwrap()) ).clone(),
Record::new().name(origin.clone()).ttl(86400).rr_type(RecordType::A).dns_class(DNSClass::IN).rdata(RData::A{ address: Ipv4Addr::new(94,184,216,34) }).clone(),
Record::new().name(origin.clone()).ttl(86400).rr_type(RecordType::AAAA).dns_class(DNSClass::IN).rdata(RData::AAAA{ address: Ipv6Addr::new(0x2606,0x2800,0x220,0x1,0x248,0x1893,0x25c8,0x1946) }).clone(),
Record::new().name(www_name.clone()).ttl(86400).rr_type(RecordType::A).dns_class(DNSClass::IN).rdata(RData::A{ address: Ipv4Addr::new(94,184,216,34) }).clone(),
Record::new().name(www_name.clone()).ttl(86400).rr_type(RecordType::AAAA).dns_class(DNSClass::IN).rdata(RData::AAAA{ address: Ipv6Addr::new(0x2606,0x2800,0x220,0x1,0x248,0x1893,0x25c8,0x1946) }).clone(),
Record::new().name(origin.clone()).ttl(86400).rr_type(RecordType::A).dns_class(DNSClass::IN).rdata(RData::A(Ipv4Addr::new(94,184,216,34))).clone(),
Record::new().name(origin.clone()).ttl(86400).rr_type(RecordType::AAAA).dns_class(DNSClass::IN).rdata(RData::AAAA(Ipv6Addr::new(0x2606,0x2800,0x220,0x1,0x248,0x1893,0x25c8,0x1946))).clone(),
Record::new().name(www_name.clone()).ttl(86400).rr_type(RecordType::A).dns_class(DNSClass::IN).rdata(RData::A(Ipv4Addr::new(94,184,216,34))).clone(),
Record::new().name(www_name.clone()).ttl(86400).rr_type(RecordType::AAAA).dns_class(DNSClass::IN).rdata(RData::AAAA(Ipv6Addr::new(0x2606,0x2800,0x220,0x1,0x248,0x1893,0x25c8,0x1946))).clone(),
Record::new().name(origin.clone()).ttl(3600).rr_type(RecordType::SOA).dns_class(DNSClass::IN).rdata(RData::SOA(SOA::new(Name::parse("sns.dns.icann.org.", None).unwrap(), Name::parse("noc.dns.icann.org.", None).unwrap(), 2015082403, 7200, 3600, 1209600, 3600 ))).clone(),
];

View File

@ -271,7 +271,7 @@ mod test {
let record_type = RecordType::A;
let mut rr_set = RRSet::new(&name, record_type, 0);
let insert = Record::new().name(name.clone()).ttl(86400).rr_type(record_type).dns_class(DNSClass::IN).rdata(RData::A{ address: Ipv4Addr::new(93,184,216,24) }).clone();
let insert = Record::new().name(name.clone()).ttl(86400).rr_type(record_type).dns_class(DNSClass::IN).rdata(RData::A(Ipv4Addr::new(93,184,216,24))).clone();
assert!(rr_set.insert(insert.clone(), 0));
assert_eq!(rr_set.get_records().len(), 1);
@ -283,7 +283,7 @@ mod test {
assert!(rr_set.get_records().contains(&insert));
// add one
let insert1 = Record::new().name(name.clone()).ttl(86400).rr_type(record_type).dns_class(DNSClass::IN).rdata(RData::A{ address: Ipv4Addr::new(93,184,216,25) }).clone();
let insert1 = Record::new().name(name.clone()).ttl(86400).rr_type(record_type).dns_class(DNSClass::IN).rdata(RData::A(Ipv4Addr::new(93,184,216,25))).clone();
assert!(rr_set.insert(insert1.clone(), 0));
assert_eq!(rr_set.get_records().len(), 2);
assert!(rr_set.get_records().contains(&insert));
@ -343,8 +343,8 @@ mod test {
let record_type = RecordType::A;
let mut rr_set = RRSet::new(&name, record_type, 0);
let insert = Record::new().name(name.clone()).ttl(86400).rr_type(record_type).dns_class(DNSClass::IN).rdata(RData::A{ address: Ipv4Addr::new(93,184,216,24) }).clone();
let insert1 = Record::new().name(name.clone()).ttl(86400).rr_type(record_type).dns_class(DNSClass::IN).rdata(RData::A{ address: Ipv4Addr::new(93,184,216,25) }).clone();
let insert = Record::new().name(name.clone()).ttl(86400).rr_type(record_type).dns_class(DNSClass::IN).rdata(RData::A(Ipv4Addr::new(93,184,216,24))).clone();
let insert1 = Record::new().name(name.clone()).ttl(86400).rr_type(record_type).dns_class(DNSClass::IN).rdata(RData::A(Ipv4Addr::new(93,184,216,25))).clone();
assert!(rr_set.insert(insert.clone(), 0));
assert!(rr_set.insert(insert1.clone(), 0));

View File

@ -576,7 +576,7 @@ mod test {
assert_eq!(record.get_rr_type(), RecordType::A);
assert_eq!(record.get_dns_class(), DNSClass::IN);
if let &RData::A{ ref address } = record.get_rdata() {
if let &RData::A(ref address) = record.get_rdata() {
assert_eq!(address, &Ipv4Addr::new(93,184,216,34))
} else {
assert!(false);
@ -617,7 +617,7 @@ mod test {
assert_eq!(record.get_rr_type(), RecordType::A);
assert_eq!(record.get_dns_class(), DNSClass::IN);
if let &RData::A{ ref address } = record.get_rdata() {
if let &RData::A(ref address) = record.get_rdata() {
assert_eq!(address, &Ipv4Addr::new(93,184,216,34))
} else {
assert!(false);

View File

@ -534,8 +534,8 @@ impl Signer {
#[test]
fn test_hash_rrset() {
use ::rr::RecordType;
use ::rr::rdata::{Name, SIG};
use ::rr::{Name, RecordType};
use ::rr::rdata::SIG;
let mut pkey = PKey::new();
pkey.gen(512);
@ -564,7 +564,8 @@ fn test_hash_rrset() {
#[test]
fn test_sign_and_verify_rrset() {
use ::rr::RecordType;
use ::rr::rdata::{Name, SIG};
use ::rr::Name;
use ::rr::rdata::SIG;
let mut pkey = PKey::new();
pkey.gen(512);

View File

@ -18,7 +18,6 @@ use std::net::Ipv4Addr;
use ::serialize::txt::*;
use ::serialize::binary::*;
use ::error::*;
use ::rr::record_data::RData;
// 3.4. Internet specific RRs
//
@ -41,34 +40,30 @@ use ::rr::record_data::RData;
// "10.2.0.52" or "192.0.5.6").
//
// A { address: Ipv4Addr }
pub fn read(decoder: &mut BinDecoder) -> DecodeResult<RData> {
Ok(RData::A{ address: Ipv4Addr::new(
pub fn read(decoder: &mut BinDecoder) -> DecodeResult<Ipv4Addr> {
Ok(Ipv4Addr::new(
try!(decoder.pop()),
try!(decoder.pop()),
try!(decoder.pop()),
try!(decoder.pop()))
})
)
}
pub fn emit(encoder: &mut BinEncoder, a: &RData) -> EncodeResult {
if let RData::A { address } = *a {
let segments = address.octets();
pub fn emit(encoder: &mut BinEncoder, address: &Ipv4Addr) -> EncodeResult {
let segments = address.octets();
try!(encoder.emit(segments[0]));
try!(encoder.emit(segments[1]));
try!(encoder.emit(segments[2]));
try!(encoder.emit(segments[3]));
Ok(())
} else {
panic!("wrong type here {:?}", a)
}
try!(encoder.emit(segments[0]));
try!(encoder.emit(segments[1]));
try!(encoder.emit(segments[2]));
try!(encoder.emit(segments[3]));
Ok(())
}
pub fn parse(tokens: &Vec<Token>) -> ParseResult<RData> {
pub fn parse(tokens: &Vec<Token>) -> ParseResult<Ipv4Addr> {
let mut token = tokens.iter();
let address: Ipv4Addr = try!(token.next().ok_or(ParseError::MissingToken("ipv4 address".to_string())).and_then(|t| if let &Token::CharData(ref s) = t {Ok(try!(s.parse()))} else {Err(ParseError::UnexpectedToken(t.clone()))} ));
Ok(RData::A{ address: address })
Ok(address)
}
#[cfg(test)]
@ -77,18 +72,17 @@ mod mytests {
use std::str::FromStr;
use super::*;
use ::rr::record_data::RData;
use ::serialize::binary::bin_tests::{test_read_data_set, test_emit_data_set};
fn get_data() -> Vec<(RData, Vec<u8>)> {
fn get_data() -> Vec<(Ipv4Addr, Vec<u8>)> {
vec![
(RData::A{ address: Ipv4Addr::from_str("0.0.0.0").unwrap()}, vec![0,0,0,0]), // base case
(RData::A{ address: Ipv4Addr::from_str("1.0.0.0").unwrap()}, vec![1,0,0,0]),
(RData::A{ address: Ipv4Addr::from_str("0.1.0.0").unwrap()}, vec![0,1,0,0]),
(RData::A{ address: Ipv4Addr::from_str("0.0.1.0").unwrap()}, vec![0,0,1,0]),
(RData::A{ address: Ipv4Addr::from_str("0.0.0.1").unwrap()}, vec![0,0,0,1]),
(RData::A{ address: Ipv4Addr::from_str("127.0.0.1").unwrap()}, vec![127,0,0,1]),
(RData::A{ address: Ipv4Addr::from_str("192.168.64.32").unwrap()}, vec![192,168,64,32]),
(Ipv4Addr::from_str("0.0.0.0").unwrap(), vec![0,0,0,0]), // base case
(Ipv4Addr::from_str("1.0.0.0").unwrap(), vec![1,0,0,0]),
(Ipv4Addr::from_str("0.1.0.0").unwrap(), vec![0,1,0,0]),
(Ipv4Addr::from_str("0.0.1.0").unwrap(), vec![0,0,1,0]),
(Ipv4Addr::from_str("0.0.0.1").unwrap(), vec![0,0,0,1]),
(Ipv4Addr::from_str("127.0.0.1").unwrap(), vec![127,0,0,1]),
(Ipv4Addr::from_str("192.168.64.32").unwrap(), vec![192,168,64,32]),
]
}

View File

@ -19,7 +19,6 @@ use std::net::Ipv6Addr;
use ::serialize::txt::*;
use ::serialize::binary::*;
use ::error::*;
use ::rr::record_data::RData;
//-- RFC 1886 -- IPv6 DNS Extensions December 1995
@ -29,7 +28,7 @@ use ::rr::record_data::RData;
// resource record in network byte order (high-order byte first).
//
// AAAA { address: Ipv6Addr }
pub fn read(decoder: &mut BinDecoder) -> DecodeResult<RData> {
pub fn read(decoder: &mut BinDecoder) -> DecodeResult<Ipv6Addr> {
let a: u16 = try!(decoder.read_u16());
let b: u16 = try!(decoder.read_u16());
let c: u16 = try!(decoder.read_u16());
@ -39,32 +38,28 @@ pub fn read(decoder: &mut BinDecoder) -> DecodeResult<RData> {
let g: u16 = try!(decoder.read_u16());
let h: u16 = try!(decoder.read_u16());
Ok(RData::AAAA{ address: Ipv6Addr::new(a,b,c,d,e,f,g,h)})
Ok(Ipv6Addr::new(a,b,c,d,e,f,g,h))
}
pub fn emit(encoder: &mut BinEncoder, aaaa: &RData) -> EncodeResult {
if let RData::AAAA { address } = *aaaa {
let segments = address.segments();
pub fn emit(encoder: &mut BinEncoder, address: &Ipv6Addr) -> EncodeResult {
let segments = address.segments();
try!(encoder.emit_u16(segments[0]));
try!(encoder.emit_u16(segments[1]));
try!(encoder.emit_u16(segments[2]));
try!(encoder.emit_u16(segments[3]));
try!(encoder.emit_u16(segments[4]));
try!(encoder.emit_u16(segments[5]));
try!(encoder.emit_u16(segments[6]));
try!(encoder.emit_u16(segments[7]));
Ok(())
} else {
panic!("wrong type here {:?}", aaaa)
}
try!(encoder.emit_u16(segments[0]));
try!(encoder.emit_u16(segments[1]));
try!(encoder.emit_u16(segments[2]));
try!(encoder.emit_u16(segments[3]));
try!(encoder.emit_u16(segments[4]));
try!(encoder.emit_u16(segments[5]));
try!(encoder.emit_u16(segments[6]));
try!(encoder.emit_u16(segments[7]));
Ok(())
}
pub fn parse(tokens: &Vec<Token>) -> ParseResult<RData> {
pub fn parse(tokens: &Vec<Token>) -> ParseResult<Ipv6Addr> {
let mut token = tokens.iter();
let address: Ipv6Addr = try!(token.next().ok_or(ParseError::MissingToken("ipv6 address".to_string())).and_then(|t| if let &Token::CharData(ref s) = t {Ok(try!(s.parse()))} else {Err(ParseError::UnexpectedToken(t.clone()))} ));
Ok(RData::AAAA{ address: address })
Ok(address)
}
@ -74,22 +69,21 @@ mod tests {
use std::str::FromStr;
use super::*;
use ::rr::record_data::RData;
use ::serialize::binary::bin_tests::{test_read_data_set, test_emit_data_set};
fn get_data() -> Vec<(RData, Vec<u8>)> {
fn get_data() -> Vec<(Ipv6Addr, Vec<u8>)> {
vec![
(RData::AAAA{ address: Ipv6Addr::from_str("::").unwrap()}, vec![0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0]), // base case
(RData::AAAA{ address: Ipv6Addr::from_str("1::").unwrap()}, vec![0,1,0,0,0,0,0,0, 0,0,0,0,0,0,0,0]),
(RData::AAAA{ address: Ipv6Addr::from_str("0:1::").unwrap()}, vec![0,0,0,1,0,0,0,0, 0,0,0,0,0,0,0,0]),
(RData::AAAA{ address: Ipv6Addr::from_str("0:0:1::").unwrap()}, vec![0,0,0,0,0,1,0,0, 0,0,0,0,0,0,0,0]),
(RData::AAAA{ address: Ipv6Addr::from_str("0:0:0:1::").unwrap()}, vec![0,0,0,0,0,0,0,1, 0,0,0,0,0,0,0,0]),
(RData::AAAA{ address: Ipv6Addr::from_str("::1:0:0:0").unwrap()}, vec![0,0,0,0,0,0,0,0, 0,1,0,0,0,0,0,0]),
(RData::AAAA{ address: Ipv6Addr::from_str("::1:0:0").unwrap()}, vec![0,0,0,0,0,0,0,0, 0,0,0,1,0,0,0,0]),
(RData::AAAA{ address: Ipv6Addr::from_str("::1:0").unwrap()}, vec![0,0,0,0,0,0,0,0, 0,0,0,0,0,1,0,0]),
(RData::AAAA{ address: Ipv6Addr::from_str("::1").unwrap()}, vec![0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,1]),
(RData::AAAA{ address: Ipv6Addr::from_str("::127.0.0.1").unwrap()}, vec![0,0,0,0,0,0,0,0, 0,0,0,0,127,0,0,1]),
(RData::AAAA{ address: Ipv6Addr::from_str("FF00::192.168.64.32").unwrap()}, vec![255,0,0,0,0,0,0,0, 0,0,0,0,192,168,64,32]),
(Ipv6Addr::from_str("::").unwrap(), vec![0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0]), // base case
(Ipv6Addr::from_str("1::").unwrap(), vec![0,1,0,0,0,0,0,0, 0,0,0,0,0,0,0,0]),
(Ipv6Addr::from_str("0:1::").unwrap(), vec![0,0,0,1,0,0,0,0, 0,0,0,0,0,0,0,0]),
(Ipv6Addr::from_str("0:0:1::").unwrap(), vec![0,0,0,0,0,1,0,0, 0,0,0,0,0,0,0,0]),
(Ipv6Addr::from_str("0:0:0:1::").unwrap(), vec![0,0,0,0,0,0,0,1, 0,0,0,0,0,0,0,0]),
(Ipv6Addr::from_str("::1:0:0:0").unwrap(), vec![0,0,0,0,0,0,0,0, 0,1,0,0,0,0,0,0]),
(Ipv6Addr::from_str("::1:0:0").unwrap(), vec![0,0,0,0,0,0,0,0, 0,0,0,1,0,0,0,0]),
(Ipv6Addr::from_str("::1:0").unwrap(), vec![0,0,0,0,0,0,0,0, 0,0,0,0,0,1,0,0]),
(Ipv6Addr::from_str("::1").unwrap(), vec![0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,1]),
(Ipv6Addr::from_str("::127.0.0.1").unwrap(), vec![0,0,0,0,0,0,0,0, 0,0,0,0,127,0,0,1]),
(Ipv6Addr::from_str("FF00::192.168.64.32").unwrap(), vec![255,0,0,0,0,0,0,0, 0,0,0,0,192,168,64,32]),
]
}

View File

@ -33,7 +33,6 @@ pub mod soa;
pub mod srv;
pub mod txt;
pub use ::rr::Name;
pub use self::null::NULL;
pub use self::sig::SIG;
pub use self::soa::SOA;

View File

@ -66,7 +66,7 @@ pub enum RData {
// an A line in a master file is an Internet address expressed as four
// decimal numbers separated by dots without any imbedded spaces (e.g.,
// "10.2.0.52" or "192.0.5.6").
A { address: Ipv4Addr },
A(Ipv4Addr),
//-- RFC 1886 -- IPv6 DNS Extensions December 1995
//
@ -74,7 +74,7 @@ pub enum RData {
//
// A 128 bit IPv6 address is encoded in the data portion of an AAAA
// resource record in network byte order (high-order byte first).
AAAA { address: Ipv6Addr },
AAAA(Ipv6Addr),
// 3.3. Standard RRs
@ -593,8 +593,8 @@ pub enum RData {
impl RData {
pub fn parse(record_type: RecordType, tokens: &Vec<Token>, origin: Option<&Name>) -> ParseResult<Self> {
match record_type {
RecordType::A => rdata::a::parse(tokens),
RecordType::AAAA => rdata::aaaa::parse(tokens),
RecordType::A => Ok(RData::A(try!(rdata::a::parse(tokens)))),
RecordType::AAAA => Ok(RData::AAAA(try!(rdata::aaaa::parse(tokens)))),
RecordType::ANY => panic!("parsing ANY doesn't make sense"),
RecordType::AXFR => panic!("parsing AXFR doesn't make sense"),
RecordType::CNAME => Ok(RData::CNAME(try!(rdata::name::parse(tokens, origin)))),
@ -656,8 +656,8 @@ impl RData {
let start_idx = decoder.index();
let result = try!(match record_type {
RecordType::A => {debug!("reading A");rdata::a::read(decoder)},
RecordType::AAAA => {debug!("reading AAAA"); rdata::aaaa::read(decoder)},
RecordType::A => {debug!("reading A"); Ok(RData::A(try!(rdata::a::read(decoder)))) },
RecordType::AAAA => {debug!("reading AAAA"); Ok(RData::AAAA(try!(rdata::aaaa::read(decoder)))) },
rt @ RecordType::ANY => Err(DecodeError::UnknownRecordTypeValue(rt.into())),
rt @ RecordType::AXFR => Err(DecodeError::UnknownRecordTypeValue(rt.into())),
RecordType::CNAME => {debug!("reading CNAME"); Ok(RData::CNAME(try!(rdata::name::read(decoder)))) },
@ -690,8 +690,8 @@ impl RData {
pub fn emit(&self, encoder: &mut BinEncoder) -> EncodeResult {
match *self {
RData::A{..} => rdata::a::emit(encoder, self),
RData::AAAA{..} => rdata::aaaa::emit(encoder, self),
RData::A(ref address) => rdata::a::emit(encoder, address),
RData::AAAA(ref address) => rdata::aaaa::emit(encoder, address),
RData::CNAME(ref name) => rdata::name::emit(encoder, name),
RData::DS{..} => rdata::ds::emit(encoder, self),
RData::DNSKEY{..} => rdata::dnskey::emit(encoder, self),
@ -716,8 +716,8 @@ impl RData {
impl<'a> From<&'a RData> for RecordType {
fn from(rdata: &'a RData) -> Self {
match *rdata {
RData::A{..} => RecordType::A,
RData::AAAA{..} => RecordType::AAAA,
RData::A(..) => RecordType::A,
RData::AAAA(..) => RecordType::AAAA,
RData::CNAME(..) => RecordType::CNAME,
RData::DS{..} => RecordType::DS,
RData::DNSKEY{..} => RecordType::DNSKEY,
@ -799,8 +799,8 @@ mod tests {
0xFF,0xFF,0xFF,0xFF]),
(RData::TXT{txt_data: vec!["abcdef".to_string(), "ghi".to_string(), "".to_string(), "j".to_string()]},
vec![6,b'a',b'b',b'c',b'd',b'e',b'f', 3,b'g',b'h',b'i', 0, 1,b'j']),
(RData::A{ address: Ipv4Addr::from_str("0.0.0.0").unwrap()}, vec![0,0,0,0]),
(RData::AAAA{ address: Ipv6Addr::from_str("::").unwrap()}, vec![0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0]),
(RData::A(Ipv4Addr::from_str("0.0.0.0").unwrap()), vec![0,0,0,0]),
(RData::AAAA(Ipv6Addr::from_str("::").unwrap()), vec![0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0]),
(RData::SRV{ priority: 1, weight: 2, port: 3, target: Name::with_labels(vec!["www".to_string(),"example".to_string(),"com".to_string()]),}, vec![0x00, 0x01, 0x00, 0x02, 0x00, 0x03, 3,b'w',b'w',b'w',7,b'e',b'x',b'a',b'm',b'p',b'l',b'e',3,b'c',b'o',b'm',0]),
]
}
@ -809,8 +809,8 @@ mod tests {
#[test]
fn test_order() {
let ordered: Vec<RData> = vec![
RData::A{ address: Ipv4Addr::from_str("0.0.0.0").unwrap()},
RData::AAAA{ address: Ipv6Addr::from_str("::").unwrap()},
RData::A(Ipv4Addr::from_str("0.0.0.0").unwrap()),
RData::AAAA(Ipv6Addr::from_str("::").unwrap()),
RData::SRV{ priority: 1, weight: 2, port: 3, target: Name::with_labels(vec!["www".to_string(),"example".to_string(),"com".to_string()]),},
RData::MX{preference: 256, exchange: Name::with_labels(vec!["n".to_string()])},
RData::CNAME(Name::with_labels(vec!["www".to_string(),"example".to_string(),"com".to_string()])),
@ -830,8 +830,8 @@ mod tests {
Name::with_labels(vec!["xxx".to_string(),"example".to_string(),"com".to_string()]),
u32::max_value(), -1 as i32, -1 as i32, -1 as i32, u32::max_value())),
RData::TXT{txt_data: vec!["abcdef".to_string(), "ghi".to_string(), "".to_string(), "j".to_string()]},
RData::A{ address: Ipv4Addr::from_str("0.0.0.0").unwrap()},
RData::AAAA{ address: Ipv6Addr::from_str("::").unwrap()},
RData::A(Ipv4Addr::from_str("0.0.0.0").unwrap()),
RData::AAAA(Ipv6Addr::from_str("::").unwrap()),
RData::SRV{ priority: 1, weight: 2, port: 3, target: Name::with_labels(vec!["www".to_string(),"example".to_string(),"com".to_string()]),},
];

View File

@ -103,7 +103,7 @@ impl Record {
rr_type: RecordType::A,
dns_class: DNSClass::IN,
ttl: 0,
rdata: RData::A { address: Ipv4Addr::new(0,0,0,0) }
rdata: RData::A(Ipv4Addr::new(0,0,0,0))
}
}
@ -322,7 +322,7 @@ mod tests {
let mut record = Record::new();
record.add_name("www".to_string()).add_name("example".to_string()).add_name("com".to_string())
.rr_type(RecordType::A).dns_class(DNSClass::IN).ttl(5)
.rdata(RData::A { address: Ipv4Addr::new(192, 168, 0, 1)});
.rdata(RData::A(Ipv4Addr::new(192, 168, 0, 1)));
let mut vec_bytes: Vec<u8> = Vec::with_capacity(512);
{
@ -342,7 +342,7 @@ mod tests {
let mut record = Record::new();
record.add_name("www".to_string()).add_name("example".to_string()).add_name("com".to_string())
.rr_type(RecordType::A).dns_class(DNSClass::IN).ttl(5)
.rdata(RData::A { address: Ipv4Addr::new(192, 168, 0, 1)});
.rdata(RData::A(Ipv4Addr::new(192, 168, 0, 1)));
let mut greater_name = record.clone();
greater_name.name(Name::new().label("zzz").label("example").label("com"));
@ -354,7 +354,7 @@ mod tests {
greater_class.dns_class(DNSClass::NONE);
let mut greater_rdata = record.clone();
greater_rdata.rdata(RData::A { address: Ipv4Addr::new(192, 168, 0, 255) });
greater_rdata.rdata(RData::A(Ipv4Addr::new(192, 168, 0, 255)));
let compares = vec![(&record, &greater_name),
(&record, &greater_type),

View File

@ -119,7 +119,7 @@ VENERA A 10.1.0.52
assert_eq!(60, a_record.get_ttl()); // TODO: should this be minimum or expire?
assert_eq!(DNSClass::IN, a_record.get_dns_class());
assert_eq!(RecordType::A, a_record.get_rr_type());
if let RData::A{ ref address } = *a_record.get_rdata() {
if let RData::A(ref address) = *a_record.get_rdata() {
assert_eq!(&Ipv4Addr::new(26u8,3u8,0u8,103u8), address);
} else {
panic!("Not an A record!!!")
@ -128,7 +128,7 @@ VENERA A 10.1.0.52
// AAAA
let aaaa_record: &Record = authority.lookup(&Name::new().label("aaaa").label("isi").label("edu"), RecordType::AAAA).unwrap().first().cloned().unwrap();
assert_eq!(&Name::new().label("aaaa").label("isi").label("edu"), aaaa_record.get_name());
if let RData::AAAA{ ref address } = *aaaa_record.get_rdata() {
if let RData::AAAA(ref address) = *aaaa_record.get_rdata() {
assert_eq!(&Ipv6Addr::from_str("4321:0:1:2:3:4:567:89ab").unwrap(), address);
} else {
panic!("Not a AAAA record!!!")
@ -138,7 +138,7 @@ VENERA A 10.1.0.52
let short_record: &Record = authority.lookup(&Name::new().label("short").label("isi").label("edu"), RecordType::A).unwrap().first().cloned().unwrap();
assert_eq!(&Name::new().label("short").label("isi").label("edu"), short_record.get_name());
assert_eq!(70, short_record.get_ttl());
if let RData::A{ ref address } = *short_record.get_rdata() {
if let RData::A(ref address) = *short_record.get_rdata() {
assert_eq!(&Ipv4Addr::new(26u8,3u8,0u8,104u8), address);
} else {
panic!("Not an A record!!!")

View File

@ -423,7 +423,7 @@ mod server_tests {
assert_eq!(record.get_rr_type(), RecordType::A);
assert_eq!(record.get_dns_class(), DNSClass::IN);
if let &RData::A{ ref address } = record.get_rdata() {
if let &RData::A(ref address) = record.get_rdata() {
assert_eq!(address, &Ipv4Addr::new(93,184,216,34))
} else {
assert!(false);