pub struct RecursiveAuthority { /* private fields */ }recursor only.Expand description
An authority that performs recursive resolutions.
This uses the hickory-recursor crate for resolving requests.
Implementations§
Source§impl RecursiveAuthority
impl RecursiveAuthority
Sourcepub async fn try_from_config(
origin: Name,
_zone_type: ZoneType,
config: &RecursiveConfig,
root_dir: Option<&Path>,
) -> Result<Self, String>
pub async fn try_from_config( origin: Name, _zone_type: ZoneType, config: &RecursiveConfig, root_dir: Option<&Path>, ) -> Result<Self, String>
Read the Authority for the origin from the specified configuration
Trait Implementations§
Source§impl Authority for RecursiveAuthority
impl Authority for RecursiveAuthority
Source§fn is_axfr_allowed(&self) -> bool
fn is_axfr_allowed(&self) -> bool
Always false for Forward zones
Source§fn origin(&self) -> &LowerName
fn origin(&self) -> &LowerName
Get the origin of this zone, i.e. example.com is the origin for www.example.com
In the context of a forwarder, this is either a zone which this forwarder is associated,
or ., the root zone for all zones. If this is not the root zone, then it will only forward
for lookups which match the given zone name.
Source§fn lookup<'life0, 'life1, 'async_trait>(
&'life0 self,
name: &'life1 LowerName,
rtype: RecordType,
lookup_options: LookupOptions,
) -> Pin<Box<dyn Future<Output = LookupControlFlow<Self::Lookup>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn lookup<'life0, 'life1, 'async_trait>(
&'life0 self,
name: &'life1 LowerName,
rtype: RecordType,
lookup_options: LookupOptions,
) -> Pin<Box<dyn Future<Output = LookupControlFlow<Self::Lookup>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Forwards a lookup given the resolver configuration for this Forwarded zone
Source§type Lookup = RecursiveLookup
type Lookup = RecursiveLookup
Source§fn can_validate_dnssec(&self) -> bool
fn can_validate_dnssec(&self) -> bool
Source§fn update<'life0, 'life1, 'async_trait>(
&'life0 self,
_update: &'life1 MessageRequest,
) -> Pin<Box<dyn Future<Output = UpdateResult<bool>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn update<'life0, 'life1, 'async_trait>(
&'life0 self,
_update: &'life1 MessageRequest,
) -> Pin<Box<dyn Future<Output = UpdateResult<bool>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Source§fn search<'life0, 'life1, 'async_trait>(
&'life0 self,
request_info: RequestInfo<'life1>,
lookup_options: LookupOptions,
) -> Pin<Box<dyn Future<Output = LookupControlFlow<Self::Lookup>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn search<'life0, 'life1, 'async_trait>(
&'life0 self,
request_info: RequestInfo<'life1>,
lookup_options: LookupOptions,
) -> Pin<Box<dyn Future<Output = LookupControlFlow<Self::Lookup>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Source§fn get_nsec_records<'life0, 'life1, 'async_trait>(
&'life0 self,
_name: &'life1 LowerName,
_lookup_options: LookupOptions,
) -> Pin<Box<dyn Future<Output = LookupControlFlow<Self::Lookup>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn get_nsec_records<'life0, 'life1, 'async_trait>(
&'life0 self,
_name: &'life1 LowerName,
_lookup_options: LookupOptions,
) -> Pin<Box<dyn Future<Output = LookupControlFlow<Self::Lookup>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Source§fn get_nsec3_records<'life0, 'life1, 'async_trait>(
&'life0 self,
_info: Nsec3QueryInfo<'life1>,
_lookup_options: LookupOptions,
) -> Pin<Box<dyn Future<Output = LookupControlFlow<Self::Lookup>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn get_nsec3_records<'life0, 'life1, 'async_trait>(
&'life0 self,
_info: Nsec3QueryInfo<'life1>,
_lookup_options: LookupOptions,
) -> Pin<Box<dyn Future<Output = LookupControlFlow<Self::Lookup>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
__dnssec only.Source§fn nx_proof_kind(&self) -> Option<&NxProofKind>
fn nx_proof_kind(&self) -> Option<&NxProofKind>
__dnssec only.Source§fn consult<'life0, 'life1, 'async_trait>(
&'life0 self,
_name: &'life1 LowerName,
_rtype: RecordType,
_lookup_options: LookupOptions,
last_result: LookupControlFlow<Box<dyn LookupObject>>,
) -> Pin<Box<dyn Future<Output = LookupControlFlow<Box<dyn LookupObject>>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn consult<'life0, 'life1, 'async_trait>(
&'life0 self,
_name: &'life1 LowerName,
_rtype: RecordType,
_lookup_options: LookupOptions,
last_result: LookupControlFlow<Box<dyn LookupObject>>,
) -> Pin<Box<dyn Future<Output = LookupControlFlow<Box<dyn LookupObject>>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Name and RecordType.
This will be called in a chained authority configuration after an authority in the chain
has returned a lookup with a LookupControlFlow::Continue action. Every other authority in
the chain will be called via this consult method, until one either returns a
LookupControlFlow::Break action, or all authorities have been consulted. The authority that
generated the primary lookup (the one returned via ‘lookup’) will not be consulted. Read moreSource§fn ns<'life0, 'async_trait>(
&'life0 self,
lookup_options: LookupOptions,
) -> Pin<Box<dyn Future<Output = LookupControlFlow<Self::Lookup>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn ns<'life0, 'async_trait>(
&'life0 self,
lookup_options: LookupOptions,
) -> Pin<Box<dyn Future<Output = LookupControlFlow<Self::Lookup>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
Source§fn soa<'life0, 'async_trait>(
&'life0 self,
) -> Pin<Box<dyn Future<Output = LookupControlFlow<Self::Lookup>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn soa<'life0, 'async_trait>(
&'life0 self,
) -> Pin<Box<dyn Future<Output = LookupControlFlow<Self::Lookup>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
Source§fn soa_secure<'life0, 'async_trait>(
&'life0 self,
lookup_options: LookupOptions,
) -> Pin<Box<dyn Future<Output = LookupControlFlow<Self::Lookup>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn soa_secure<'life0, 'async_trait>(
&'life0 self,
lookup_options: LookupOptions,
) -> Pin<Box<dyn Future<Output = LookupControlFlow<Self::Lookup>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
Auto Trait Implementations§
impl !Freeze for RecursiveAuthority
impl !RefUnwindSafe for RecursiveAuthority
impl Send for RecursiveAuthority
impl Sync for RecursiveAuthority
impl Unpin for RecursiveAuthority
impl !UnwindSafe for RecursiveAuthority
Blanket Implementations§
Source§impl<A, L> AuthorityObject for A
impl<A, L> AuthorityObject for A
Source§fn is_axfr_allowed(&self) -> bool
fn is_axfr_allowed(&self) -> bool
Return true if AXFR is allowed
Source§fn can_validate_dnssec(&self) -> bool
fn can_validate_dnssec(&self) -> bool
Whether the authority can perform DNSSEC validation
Source§fn update<'life0, 'life1, 'async_trait>(
&'life0 self,
update: &'life1 MessageRequest,
) -> Pin<Box<dyn Future<Output = Result<bool, ResponseCode>> + Send + 'async_trait>>where
'life0: 'async_trait,
'life1: 'async_trait,
A: 'async_trait,
fn update<'life0, 'life1, 'async_trait>(
&'life0 self,
update: &'life1 MessageRequest,
) -> Pin<Box<dyn Future<Output = Result<bool, ResponseCode>> + Send + 'async_trait>>where
'life0: 'async_trait,
'life1: 'async_trait,
A: 'async_trait,
Perform a dynamic update of a zone
Source§fn origin(&self) -> &LowerName
fn origin(&self) -> &LowerName
Get the origin of this zone, i.e. example.com is the origin for www.example.com
Source§fn lookup<'life0, 'life1, 'async_trait>(
&'life0 self,
name: &'life1 LowerName,
rtype: RecordType,
lookup_options: LookupOptions,
) -> Pin<Box<dyn Future<Output = LookupControlFlow<Box<dyn LookupObject>>> + Send + 'async_trait>>where
'life0: 'async_trait,
'life1: 'async_trait,
A: 'async_trait,
fn lookup<'life0, 'life1, 'async_trait>(
&'life0 self,
name: &'life1 LowerName,
rtype: RecordType,
lookup_options: LookupOptions,
) -> Pin<Box<dyn Future<Output = LookupControlFlow<Box<dyn LookupObject>>> + Send + 'async_trait>>where
'life0: 'async_trait,
'life1: 'async_trait,
A: 'async_trait,
Looks up all Resource Records matching the given Name and RecordType.
§Arguments
name- The name to look up.rtype- TheRecordTypeto look up.RecordType::ANYwill return all records matchingname.RecordType::AXFRwill return all record types exceptRecordType::SOAdue to the requirements that on zone transfers theRecordType::SOAmust both precede and follow all other records.lookup_options- Query-related lookup options (e.g., DNSSEC DO bit, supported hash algorithms, etc.)
§Return value
A LookupControlFlow containing the lookup that should be returned to the client.
Source§fn consult<'life0, 'life1, 'async_trait>(
&'life0 self,
name: &'life1 LowerName,
rtype: RecordType,
lookup_options: LookupOptions,
last_result: LookupControlFlow<Box<dyn LookupObject>>,
) -> Pin<Box<dyn Future<Output = LookupControlFlow<Box<dyn LookupObject>>> + Send + 'async_trait>>where
'life0: 'async_trait,
'life1: 'async_trait,
A: 'async_trait,
fn consult<'life0, 'life1, 'async_trait>(
&'life0 self,
name: &'life1 LowerName,
rtype: RecordType,
lookup_options: LookupOptions,
last_result: LookupControlFlow<Box<dyn LookupObject>>,
) -> Pin<Box<dyn Future<Output = LookupControlFlow<Box<dyn LookupObject>>> + Send + 'async_trait>>where
'life0: 'async_trait,
'life1: 'async_trait,
A: 'async_trait,
Consulting lookup for all Resource Records matching the given Name and RecordType.
This will be called in a chained authority configuration after an authority in the chain
has returned a lookup with a LookupControlFlow::Continue action. Every other authority in
the chain will be called via this consult method, until one either returns a
LookupControlFlow::Break action, or all authorities have been consulted. The authority that
generated the primary lookup (the one returned via ‘lookup’) will not be consulted.
§Arguments
name- The name to look up.rtype- TheRecordTypeto look up.RecordType::ANYwill return all records matchingname.RecordType::AXFRwill return all record types exceptRecordType::SOAdue to the requirements that on zone transfers theRecordType::SOAmust both precede and follow all other records.lookup_options- Query-related lookup options (e.g., DNSSEC DO bit, supported hash algorithms, etc.)last_result- The lookup returned by a previous authority in a chained configuration. If a subsequent authority does not modify this lookup, it will be returned to the client after consulting all authorities in the chain.
§Return value
A LookupControlFlow containing the lookup that should be returned to the client. This can be the same last_result that was passed in, or a new lookup, depending on the logic of the authority in question.
Source§fn search<'life0, 'life1, 'async_trait>(
&'life0 self,
request_info: RequestInfo<'life1>,
lookup_options: LookupOptions,
) -> Pin<Box<dyn Future<Output = LookupControlFlow<Box<dyn LookupObject>>> + Send + 'async_trait>>where
'life0: 'async_trait,
'life1: 'async_trait,
A: 'async_trait,
fn search<'life0, 'life1, 'async_trait>(
&'life0 self,
request_info: RequestInfo<'life1>,
lookup_options: LookupOptions,
) -> Pin<Box<dyn Future<Output = LookupControlFlow<Box<dyn LookupObject>>> + Send + 'async_trait>>where
'life0: 'async_trait,
'life1: 'async_trait,
A: 'async_trait,
Using the specified query, perform a lookup against this zone.
§Arguments
request_info- the query to perform the lookup with.lookup_options- Query-related lookup options (e.g., DNSSEC DO bit, supported hash algorithms, etc.)
§Return value
A LookupControlFlow containing the lookup that should be returned to the client.
Source§fn get_nsec_records<'life0, 'life1, 'async_trait>(
&'life0 self,
name: &'life1 LowerName,
lookup_options: LookupOptions,
) -> Pin<Box<dyn Future<Output = LookupControlFlow<Box<dyn LookupObject>>> + Send + 'async_trait>>where
'life0: 'async_trait,
'life1: 'async_trait,
A: 'async_trait,
fn get_nsec_records<'life0, 'life1, 'async_trait>(
&'life0 self,
name: &'life1 LowerName,
lookup_options: LookupOptions,
) -> Pin<Box<dyn Future<Output = LookupControlFlow<Box<dyn LookupObject>>> + Send + 'async_trait>>where
'life0: 'async_trait,
'life1: 'async_trait,
A: 'async_trait,
Return the NSEC records based on the given name
§Arguments
name- given this name (i.e. the lookup name), return the NSEC record that is less than thislookup_options- Query-related lookup options (e.g., DNSSEC DO bit, supported hash algorithms, etc.)
Source§fn get_nsec3_records<'life0, 'life1, 'async_trait>(
&'life0 self,
info: Nsec3QueryInfo<'life1>,
lookup_options: LookupOptions,
) -> Pin<Box<dyn Future<Output = LookupControlFlow<Box<dyn LookupObject>>> + Send + 'async_trait>>where
'life0: 'async_trait,
'life1: 'async_trait,
A: 'async_trait,
Available on crate feature __dnssec only.
fn get_nsec3_records<'life0, 'life1, 'async_trait>(
&'life0 self,
info: Nsec3QueryInfo<'life1>,
lookup_options: LookupOptions,
) -> Pin<Box<dyn Future<Output = LookupControlFlow<Box<dyn LookupObject>>> + Send + 'async_trait>>where
'life0: 'async_trait,
'life1: 'async_trait,
A: 'async_trait,
__dnssec only.Return the NSEC3 records based on the given query information.
Source§fn nx_proof_kind(&self) -> Option<&NxProofKind>
Available on crate feature __dnssec only.
fn nx_proof_kind(&self) -> Option<&NxProofKind>
__dnssec only.Returns the kind of non-existence proof used for this zone.