24 lines
701 B
Rust
24 lines
701 B
Rust
|
use crate::dns;
|
||
|
|
||
|
// TODO: Use model types instead of dns types as input / output and only convert internaly?
|
||
|
|
||
|
// Zone content api
|
||
|
// E.g.: DNS update + axfr, zone file read + write
|
||
|
#[async_trait]
|
||
|
pub trait RecordApi {
|
||
|
type Error;
|
||
|
|
||
|
async fn get_records(&mut self, zone: dns::Name, class: dns::DNSClass) -> Result<Vec<dns::Record>, Self::Error>;
|
||
|
async fn add_records(&mut self, zone: dns::Name, class: dns::DNSClass, new_records: Vec<dns::Record>) -> Result<(), Self::Error>;
|
||
|
// update_records
|
||
|
// delete_records
|
||
|
}
|
||
|
|
||
|
// Zone management api, todo
|
||
|
// E.g.: Manage catalog zone, dynamically generate knot / bind / nsd config...
|
||
|
pub trait ZoneApi {
|
||
|
// get_zones
|
||
|
// add_zone
|
||
|
// delete_zone
|
||
|
// exists
|
||
|
}
|