Skip to main content

TickerConfig

Struct TickerConfig 

Source
pub struct TickerConfig {
Show 15 fields pub interval: Duration, pub policy: Option<DnsRefreshPolicy>, pub rebinding_policy: Option<DnsRebindingPolicy>, pub resolvers: Vec<DnsResolver>, pub hostnames: Vec<String>, pub keyset_id: Option<String>, pub issuer_kid: Option<String>, pub policy_digest: Option<String>, pub correlation_id: Option<String>, pub source: String, pub cell_id: String, pub run_id: String, pub dnssec_policy: Option<DnsResolverDnssecPolicy>, pub trust_anchors: Option<TrustAnchors>, pub validated_resolver: Option<SharedValidatedResolverFn>,
}
Expand description

Owned, owned-string configuration for one ticker — built by the supervisor in async context and moved into the spawned task. All borrowing-from-spec is resolved before spawn so the task’s lifetime is 'static.

Fields§

§interval: Duration

Inter-tick interval. Resolved by the supervisor — typically min(refreshPolicy.minTtlSeconds, 60).max(5) — with a hard floor of 5s applied at the call site so a misconfigured spec cannot burn CPU here.

§policy: Option<DnsRefreshPolicy>

Refresh policy carried by the spec (spec.authority.dnsAuthority. refreshPolicy). None means “no floor / no ceiling, ttl-honor strategy”, same as the startup tick.

§rebinding_policy: Option<DnsRebindingPolicy>

SEC-21 Phase 3e — rebinding mitigation policy carried by the spec (spec.authority.dnsAuthority.rebindingPolicy). None means “no per-hostname response-IP tracking” — the ticker emits only the standard dns_authority_drift events. When Some, the ticker owns a per-cell RebindingState across ticks and emits dns_authority_rebind_threshold / dns_authority_rebind_rejected events as the operator-declared cap / allowlist is breached.

§resolvers: Vec<DnsResolver>

Declared resolvers. The first entry’s resolverId is stamped into every emitted event.

§hostnames: Vec<String>

Hostnames the ticker may refresh — typically the dnsAuthority.hostnameAllowlist ∪ egress-rule hosts, resolved by the supervisor at predicate time so the ticker has nothing to re-derive.

§keyset_id: Option<String>

Optional keysetId to stamp into emitted events.

§issuer_kid: Option<String>

Optional issuerKid to stamp into emitted events.

§policy_digest: Option<String>

Optional policy-bundle digest (sha256:<hex>).

§correlation_id: Option<String>

Optional pass-through correlation id.

§source: String

CloudEvent source field.

§cell_id: String

Cell id for event payloads.

§run_id: String

Run id for event payloads.

§dnssec_policy: Option<DnsResolverDnssecPolicy>

SEC-21 Phase 3h — opt-in DNSSEC validation policy. None preserves P3a/P3e behaviour exactly: the ticker calls the plain SharedResolverFn and never emits dns_authority_dnssec_failed events. When Some, the ticker uses Self::validated_resolver (which MUST also be set) and tags dnssec_status on every emitted dns_authority_drift event. Carries the EFFECTIVE per-tick policy — supervisors with a heterogeneous dnsAuthority.resolvers[] set today pick a single policy (the first opt-in resolver’s) per ticker; multi-policy per-resolver routing is a future slice.

§trust_anchors: Option<TrustAnchors>

Trust anchors loaded from env / spec / IANA-default. Used purely for stamping the source descriptor into dns_authority_dnssec_failed event payloads. Hickory 0.24 limitation: the resolver does not accept custom anchors via public API; see super::dnssec.

§validated_resolver: Option<SharedValidatedResolverFn>

SEC-21 Phase 3h — DNSSEC-validating resolver closure. MUST be set when dnssec_policy is Some; ignored otherwise. The supervisor wires this to super::resolve_with_ttl_validated in production; tests pass synthetic closures.

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> IntoEither for T

Source§

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 more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

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
Source§

impl<T> Pointable for T

Source§

const ALIGN: usize

The alignment of pointer.
Source§

type Init = T

The type for initializers.
Source§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
Source§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
Source§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
Source§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
Source§

impl<T> PolicyExt for T
where T: ?Sized,

Source§

fn and<P, B, E>(self, other: P) -> And<T, P>
where T: Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow only if self and other return Action::Follow. Read more
Source§

fn or<P, B, E>(self, other: P) -> Or<T, P>
where T: Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow if either self or other returns Action::Follow. Read more
Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V

Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more