pub struct RecursiveZoneHandler<P: RuntimeProvider> { /* private fields */ }Available on crate feature
recursor only.Expand description
A zone handler that performs recursive resolutions.
This uses the hickory-recursor crate for resolving requests.
Implementations§
Source§impl<P: RuntimeProvider> RecursiveZoneHandler<P>
impl<P: RuntimeProvider> RecursiveZoneHandler<P>
Sourcepub async fn try_from_config(
origin: Name,
_zone_type: ZoneType,
config: RecursiveConfig,
root_dir: Option<&Path>,
conn_provider: P,
) -> Result<Self, String>
pub async fn try_from_config( origin: Name, _zone_type: ZoneType, config: RecursiveConfig, root_dir: Option<&Path>, conn_provider: P, ) -> Result<Self, String>
Read the ZoneHandler for the origin from the specified configuration
Trait Implementations§
Source§impl<P: RuntimeProvider> ZoneHandler for RecursiveZoneHandler<P>
impl<P: RuntimeProvider> ZoneHandler for RecursiveZoneHandler<P>
Source§fn axfr_policy(&self) -> AxfrPolicy
fn axfr_policy(&self) -> AxfrPolicy
Always deny 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, 'life2, 'life3, 'async_trait>(
&'life0 self,
name: &'life1 LowerName,
rtype: RecordType,
_request_info: Option<&'life2 RequestInfo<'life3>>,
lookup_options: LookupOptions,
) -> Pin<Box<dyn Future<Output = LookupControlFlow<AuthLookup>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
'life3: 'async_trait,
fn lookup<'life0, 'life1, 'life2, 'life3, 'async_trait>(
&'life0 self,
name: &'life1 LowerName,
rtype: RecordType,
_request_info: Option<&'life2 RequestInfo<'life3>>,
lookup_options: LookupOptions,
) -> Pin<Box<dyn Future<Output = LookupControlFlow<AuthLookup>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
'life3: 'async_trait,
Forwards a lookup given the resolver configuration for this Forwarded zone
Source§fn can_validate_dnssec(&self) -> bool
fn can_validate_dnssec(&self) -> bool
Whether the zone handler can perform DNSSEC validation
Source§fn search<'life0, 'life1, 'async_trait>(
&'life0 self,
request: &'life1 Request,
lookup_options: LookupOptions,
) -> Pin<Box<dyn Future<Output = (LookupControlFlow<AuthLookup>, Option<TSigResponseContext>)> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn search<'life0, 'life1, 'async_trait>(
&'life0 self,
request: &'life1 Request,
lookup_options: LookupOptions,
) -> Pin<Box<dyn Future<Output = (LookupControlFlow<AuthLookup>, Option<TSigResponseContext>)> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Using the specified query, perform a lookup against this zone. Read more
Source§fn nsec_records<'life0, 'life1, 'async_trait>(
&'life0 self,
_name: &'life1 LowerName,
_lookup_options: LookupOptions,
) -> Pin<Box<dyn Future<Output = LookupControlFlow<AuthLookup>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn nsec_records<'life0, 'life1, 'async_trait>(
&'life0 self,
_name: &'life1 LowerName,
_lookup_options: LookupOptions,
) -> Pin<Box<dyn Future<Output = LookupControlFlow<AuthLookup>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Return the NSEC records based on the given name Read more
Source§fn nsec3_records<'life0, 'life1, 'async_trait>(
&'life0 self,
_info: Nsec3QueryInfo<'life1>,
_lookup_options: LookupOptions,
) -> Pin<Box<dyn Future<Output = LookupControlFlow<AuthLookup>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn nsec3_records<'life0, 'life1, 'async_trait>(
&'life0 self,
_info: Nsec3QueryInfo<'life1>,
_lookup_options: LookupOptions,
) -> Pin<Box<dyn Future<Output = LookupControlFlow<AuthLookup>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Available on crate feature
__dnssec only.Return the NSEC3 records based on the information available for a query.
Source§fn nx_proof_kind(&self) -> Option<&NxProofKind>
fn nx_proof_kind(&self) -> Option<&NxProofKind>
Available on crate feature
__dnssec only.Returns the kind of non-existence proof used for this zone.
Source§fn metrics_label(&self) -> &'static str
fn metrics_label(&self) -> &'static str
Available on crate feature
metrics only.Returns the zone handler metrics label.
Source§fn update<'life0, 'life1, 'async_trait>(
&'life0 self,
_update: &'life1 Request,
_now: u64,
) -> Pin<Box<dyn Future<Output = (Result<bool, ResponseCode>, Option<TSigResponseContext>)> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn update<'life0, 'life1, 'async_trait>(
&'life0 self,
_update: &'life1 Request,
_now: u64,
) -> Pin<Box<dyn Future<Output = (Result<bool, ResponseCode>, Option<TSigResponseContext>)> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Perform a dynamic update of a zone
Source§fn consult<'life0, 'life1, 'life2, 'life3, 'async_trait>(
&'life0 self,
_name: &'life1 LowerName,
_rtype: RecordType,
_request_info: Option<&'life2 RequestInfo<'life3>>,
_lookup_options: LookupOptions,
last_result: LookupControlFlow<AuthLookup>,
) -> Pin<Box<dyn Future<Output = (LookupControlFlow<AuthLookup>, Option<TSigResponseContext>)> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
'life3: 'async_trait,
fn consult<'life0, 'life1, 'life2, 'life3, 'async_trait>(
&'life0 self,
_name: &'life1 LowerName,
_rtype: RecordType,
_request_info: Option<&'life2 RequestInfo<'life3>>,
_lookup_options: LookupOptions,
last_result: LookupControlFlow<AuthLookup>,
) -> Pin<Box<dyn Future<Output = (LookupControlFlow<AuthLookup>, Option<TSigResponseContext>)> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
'life3: 'async_trait,
Consulting lookup for all Resource Records matching the given
Name and RecordType. This
will be called in a chained zone handler configuration after a zone handler in the chain has
returned a lookup with a LookupControlFlow::Continue action. Every other zone handler in the
chain will be called via this consult method, until one either returns a
LookupControlFlow::Break action, or all zone handlers have been consulted. The zone handler
that generated the primary lookup (the one returned via ‘lookup’) will not be consulted. Read moreSource§fn zone_transfer<'life0, 'life1, 'async_trait>(
&'life0 self,
_request: &'life1 Request,
_lookup_options: LookupOptions,
_now: u64,
) -> Pin<Box<dyn Future<Output = Option<(Result<ZoneTransfer, LookupError>, Option<TSigResponseContext>)>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn zone_transfer<'life0, 'life1, 'async_trait>(
&'life0 self,
_request: &'life1 Request,
_lookup_options: LookupOptions,
_now: u64,
) -> Pin<Box<dyn Future<Output = Option<(Result<ZoneTransfer, LookupError>, Option<TSigResponseContext>)>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Returns all records in the zone. Read more
Auto Trait Implementations§
impl<P> !Freeze for RecursiveZoneHandler<P>
impl<P> !RefUnwindSafe for RecursiveZoneHandler<P>
impl<P> Send for RecursiveZoneHandler<P>
impl<P> Sync for RecursiveZoneHandler<P>
impl<P> Unpin for RecursiveZoneHandler<P>
impl<P> UnsafeUnpin for RecursiveZoneHandler<P>
impl<P> !UnwindSafe for RecursiveZoneHandler<P>
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more