Struct trust_dns_server::authority::Catalog [−][src]
Set of authorities, zones, available to this server.
Implementations
impl Catalog
[src]
pub fn new() -> Self
[src]
Constructs a new Catalog
pub fn upsert(&mut self, name: LowerName, authority: Box<dyn AuthorityObject>)
[src]
Insert or update a zone authority
Arguments
name
- zone name, e.g. example.com.authority
- the zone data
pub fn remove(
&mut self,
name: &LowerName
) -> Option<Arc<RwLock<Box<dyn AuthorityObject>>>>
[src]
&mut self,
name: &LowerName
) -> Option<Arc<RwLock<Box<dyn AuthorityObject>>>>
Remove a zone from the catalog
pub fn update<'q, R: ResponseHandler + 'static>(
&self,
update: &'q MessageRequest,
response_edns: Option<Edns>,
response_handle: R
) -> Result<()>
[src]
&self,
update: &'q MessageRequest,
response_edns: Option<Edns>,
response_handle: R
) -> Result<()>
Update the zone given the Update request.
RFC 2136, DNS Update, April 1997
3.1 - Process Zone Section
3.1.1. The Zone Section is checked to see that there is exactly one
RR therein and that the RR's ZTYPE is SOA, else signal FORMERR to the
requestor. Next, the ZNAME and ZCLASS are checked to see if the zone
so named is one of this server's authority zones, else signal NOTAUTH
to the requestor. If the server is a zone slave, the request will be
forwarded toward the primary master.
3.1.2 - Pseudocode For Zone Section Processing
if (zcount != 1 || ztype != SOA)
return (FORMERR)
if (zone_type(zname, zclass) == SLAVE)
return forward()
if (zone_type(zname, zclass) == MASTER)
return update()
return (NOTAUTH)
Sections 3.2 through 3.8 describe the primary master's behaviour,
whereas Section 6 describes a forwarder's behaviour.
3.8 - Response
At the end of UPDATE processing, a response code will be known. A
response message is generated by copying the ID and Opcode fields
from the request, and either copying the ZOCOUNT, PRCOUNT, UPCOUNT,
and ADCOUNT fields and associated sections, or placing zeros (0) in
the these "count" fields and not including any part of the original
update. The QR bit is set to one (1), and the response is sent back
to the requestor. If the requestor used UDP, then the response will
be sent to the requestor's source UDP port. If the requestor used
TCP, then the response will be sent back on the requestor's open TCP
connection.
The “request” should be an update formatted message. The response will be in the alternate, all 0’s format described in RFC 2136 section 3.8 as this is more efficient.
Arguments
request
- an update messageresponse_handle
- sink for the response message to be sent
pub fn contains(&self, name: &LowerName) -> bool
[src]
Checks whether the Catalog
contains DNS records for name
Use this when you know the exact LowerName
that was used when
adding an authority and you don’t care about the authority it
contains. For public domain names, LowerName
is usually the
top level domain name like example.com.
.
If you do not know the exact domain name to use or you actually
want to use the authority it contains, use find
instead.
pub fn lookup<R: ResponseHandler>(
&self,
request: MessageRequest,
response_edns: Option<Edns>,
response_handle: R
) -> LookupFuture<R>
[src]
&self,
request: MessageRequest,
response_edns: Option<Edns>,
response_handle: R
) -> LookupFuture<R>
Given the requested query, lookup and return any matching results.
Arguments
request
- the query message.response_handle
- sink for the response message to be sent
pub fn find(
&self,
name: &LowerName
) -> Option<&Arc<RwLock<Box<dyn AuthorityObject>>>>
[src]
&self,
name: &LowerName
) -> Option<&Arc<RwLock<Box<dyn AuthorityObject>>>>
Recursively searches the catalog for a matching authority
Trait Implementations
impl Default for Catalog
[src]
impl RequestHandler for Catalog
[src]
type ResponseFuture = HandleRequest
A future for execution of the request
fn handle_request<R: ResponseHandler>(
&self,
request: Request,
response_handle: R
) -> Self::ResponseFuture
[src]
&self,
request: Request,
response_handle: R
) -> Self::ResponseFuture
Determines what needs to happen given the type of request, i.e. Query or Update.
Arguments
request
- the requested action to perform.response_handle
- sink for the response message to be sent
Auto Trait Implementations
impl RefUnwindSafe for Catalog
impl Send for Catalog
impl Sync for Catalog
impl Unpin for Catalog
impl UnwindSafe for Catalog
Blanket Implementations
impl<T> Any for T where
T: 'static + ?Sized,
[src]
T: 'static + ?Sized,
impl<T> Borrow<T> for T where
T: ?Sized,
[src]
T: ?Sized,
impl<T> BorrowMut<T> for T where
T: ?Sized,
[src]
T: ?Sized,
pub fn borrow_mut(&mut self) -> &mut T
[src]
impl<T> From<T> for T
[src]
impl<T, U> Into<U> for T where
U: From<T>,
[src]
U: From<T>,
impl<T, U> TryFrom<U> for T where
U: Into<T>,
[src]
U: Into<T>,
type Error = Infallible
The type returned in the event of a conversion error.
pub fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>
[src]
impl<T, U> TryInto<U> for T where
U: TryFrom<T>,
[src]
U: TryFrom<T>,
type Error = <U as TryFrom<T>>::Error
The type returned in the event of a conversion error.
pub fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>
[src]
impl<V, T> VZip<V> for T where
V: MultiLane<T>,
V: MultiLane<T>,