summaryrefslogtreecommitdiff
path: root/src/dns.rs
blob: 376c6c6d6b618138bca4879a515e289d8e522c6d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
use anyhow::Result;
use trust_dns_proto::rr::Name;

pub fn suffixes(mut name: Name) -> Vec<Name> {
    let mut names = Vec::new();

    loop {
        names.push(name.clone());
        if name.is_root() {
            break;
        } else {
            name = name.base_name();
        }
    }

    names
}

pub fn absolute(name: Name) -> Result<Name> {
    let root = &Name::root();
    let absolute = name.append_name(root)?;
    Ok(absolute)
}