2020-03-07 15:57:47 +00:00
|
|
|
use dnsbox_base::common_types::types;
|
|
|
|
use dnsbox_base::common_types::{DnsCompressedName, DnsName};
|
|
|
|
use dnsbox_base::records::{A, AAAA, NS};
|
2018-03-07 08:27:19 +00:00
|
|
|
use dnsbox_base::ser::RRData;
|
|
|
|
use std::net::{Ipv4Addr, Ipv6Addr};
|
|
|
|
|
2020-03-07 15:53:08 +00:00
|
|
|
#[rustfmt::skip]
|
2018-03-07 08:27:19 +00:00
|
|
|
static DATA: [(&str, &str, &str); 13] = [
|
|
|
|
("a.root-servers.net.", "198.41.0.4", "2001:503:ba3e::2:30"),
|
|
|
|
("b.root-servers.net.", "199.9.14.201", "2001:500:200::b"),
|
|
|
|
("c.root-servers.net.", "192.33.4.12", "2001:500:2::c"),
|
|
|
|
("d.root-servers.net.", "199.7.91.13", "2001:500:2d::d"),
|
|
|
|
("e.root-servers.net.", "192.203.230.10", "2001:500:a8::e"),
|
|
|
|
("f.root-servers.net.", "192.5.5.241", "2001:500:2f::f"),
|
|
|
|
("g.root-servers.net.", "192.112.36.4", "2001:500:12::d0d"),
|
|
|
|
("h.root-servers.net.", "198.97.190.53", "2001:500:1::53"),
|
|
|
|
("i.root-servers.net.", "192.36.148.17", "2001:7fe::53"),
|
|
|
|
("j.root-servers.net.", "192.58.128.30", "2001:503:c27::2:30"),
|
|
|
|
("k.root-servers.net.", "193.0.14.129", "2001:7fd::1"),
|
|
|
|
("l.root-servers.net.", "199.7.83.42", "2001:500:9f::42"),
|
|
|
|
("m.root-servers.net.", "202.12.27.33", "2001:dc3::35"),
|
|
|
|
];
|
|
|
|
|
|
|
|
pub fn load_hints(cache: &super::Cache) {
|
2019-09-08 13:34:28 +00:00
|
|
|
let mut root_ns_set: Vec<Box<dyn RRData>> = Vec::new();
|
2018-03-07 08:27:19 +00:00
|
|
|
|
|
|
|
for &(name, ipv4, ipv6) in &DATA {
|
|
|
|
let name = name.parse::<DnsName>().expect("invalid root hint name");
|
2020-03-07 15:57:47 +00:00
|
|
|
let ipv4 = ipv4
|
|
|
|
.parse::<Ipv4Addr>()
|
|
|
|
.expect("invalid root hint ipv4 addr");
|
|
|
|
let ipv6 = ipv6
|
|
|
|
.parse::<Ipv6Addr>()
|
|
|
|
.expect("invalid root hint ipv6 addr");
|
2018-03-07 08:27:19 +00:00
|
|
|
root_ns_set.push(Box::new(NS {
|
|
|
|
nsdname: DnsCompressedName(name.clone()),
|
|
|
|
}));
|
|
|
|
cache.insert_hint(name.clone(), types::A, vec![Box::new(A { addr: ipv4 })]);
|
2020-03-07 15:57:47 +00:00
|
|
|
cache.insert_hint(
|
|
|
|
name.clone(),
|
|
|
|
types::AAAA,
|
|
|
|
vec![Box::new(AAAA { addr: ipv6 })],
|
|
|
|
);
|
2018-03-07 08:27:19 +00:00
|
|
|
}
|
|
|
|
cache.insert_hint(DnsName::new_root(), types::NS, root_ns_set);
|
|
|
|
|
|
|
|
unimplemented!()
|
|
|
|
}
|