pub struct ForwardZoneHandler<P: ConnectionProvider = TokioRuntimeProvider> { /* private fields */ }resolver only.Expand description
A zone handler that will forward resolutions to upstream resolvers.
This uses the hickory-resolver crate for resolving requests.
Implementations§
Source§impl<P: ConnectionProvider> ForwardZoneHandler<P>
impl<P: ConnectionProvider> ForwardZoneHandler<P>
Sourcepub fn builder(runtime: P) -> Result<ForwardZoneHandlerBuilder<P>, String>
pub fn builder(runtime: P) -> Result<ForwardZoneHandlerBuilder<P>, String>
Construct a new ForwardZoneHandler via ForwardZoneHandlerBuilder, using the operating
system’s resolver configuration.
Sourcepub fn builder_with_config(
config: ForwardConfig,
runtime: P,
) -> ForwardZoneHandlerBuilder<P>
pub fn builder_with_config( config: ForwardConfig, runtime: P, ) -> ForwardZoneHandlerBuilder<P>
Construct a new ForwardZoneHandler via ForwardZoneHandlerBuilder with the provided configuration.
Source§impl ForwardZoneHandler<TokioRuntimeProvider>
impl ForwardZoneHandler<TokioRuntimeProvider>
Sourcepub fn builder_tokio(
config: ForwardConfig,
) -> ForwardZoneHandlerBuilder<TokioRuntimeProvider>
pub fn builder_tokio( config: ForwardConfig, ) -> ForwardZoneHandlerBuilder<TokioRuntimeProvider>
Construct a new ForwardZoneHandler via ForwardZoneHandlerBuilder with the provided configuration.
Trait Implementations§
Source§impl<P: ConnectionProvider> ZoneHandler for ForwardZoneHandler<P>
impl<P: ConnectionProvider> ZoneHandler for ForwardZoneHandler<P>
Source§fn axfr_policy(&self) -> AxfrPolicy
fn axfr_policy(&self) -> AxfrPolicy
AXFR requests are always denied for Forward zones
Source§fn can_validate_dnssec(&self) -> bool
fn can_validate_dnssec(&self) -> bool
Whether the zone handler can perform DNSSEC validation
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 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,
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,
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,
__dnssec only.Source§fn nx_proof_kind(&self) -> Option<&NxProofKind>
fn nx_proof_kind(&self) -> Option<&NxProofKind>
__dnssec only.Source§fn metrics_label(&self) -> &'static str
fn metrics_label(&self) -> &'static str
metrics only.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,
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,
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,
Auto Trait Implementations§
impl<P> Freeze for ForwardZoneHandler<P>
impl<P = TokioRuntimeProvider> !RefUnwindSafe for ForwardZoneHandler<P>
impl<P> Send for ForwardZoneHandler<P>
impl<P> Sync for ForwardZoneHandler<P>
impl<P> Unpin for ForwardZoneHandler<P>
impl<P> UnsafeUnpin for ForwardZoneHandler<P>
impl<P = TokioRuntimeProvider> !UnwindSafe for ForwardZoneHandler<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
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>
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>
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