pub enum Error {
Show 21 variants
Truncated {
len: usize,
},
BadNamePointer {
offset: usize,
},
LabelTooLong {
offset: usize,
},
NameTooLong,
InvalidName,
CountMismatch,
RDataLengthMismatch {
declared: u16,
},
InvalidClass(u16),
MessageTooLong,
WildcardPosition,
NoRoute,
Timeout,
Transport(String),
Tls(String),
Hook(String),
InvalidFakeIpRange,
FakeIpPoolUnconfigured,
FakeIpFamilyDisabled,
InvalidFakeIpTtl,
FakeIpTtlOutOfRange,
InvalidFakeIpSnapshot,
}Expand description
The single error type surfaced across the DNS Lattice workspace.
DNS message and domain-pattern operations return Result<T, Error> —
never a bare String, panic, or ad hoc per-module error type. See
ARCHITECTURE.md’s cross-cutting concerns for why.
Variants§
Truncated
The message buffer ended before a length-prefixed field or a declared record/section could be fully read.
BadNamePointer
A DNS name compression pointer is out of bounds, or two pointers form a loop.
LabelTooLong
A name label’s length byte exceeds the 63-byte maximum (RFC 1035 §2.3.4).
NameTooLong
An encoded or decoded name exceeds the 255-byte maximum (RFC 1035 §2.3.4).
InvalidName
A name label was empty (two consecutive dots) or contained bytes not permitted in that position.
CountMismatch
The header’s declared section count does not match the number of records actually present after parsing.
RDataLengthMismatch
A resource record’s declared RDLENGTH does not match the number
of bytes actually available or consumed for its RDATA.
InvalidClass(u16)
A question or resource record’s class value is not a value this crate recognizes as well-formed.
MessageTooLong
Encoding a message would exceed the 65535-byte maximum a DNS message can address.
WildcardPosition
A domain pattern’s wildcard label (*) appeared somewhere other
than the leftmost position.
NoRoute
No split-DNS rule matched the queried name and no default upstream group is configured.
Timeout
An upstream backend did not produce a response within its
configured timeout (stage 0.3, upstream::UpstreamBackend).
Transport(String)
An upstream backend’s transport (socket connect/send/receive)
failed. Carries a human-readable description of the underlying I/O
error; not PartialEq-sensitive to that error’s exact kind since
std::io::Error is not itself comparable (stage 0.3,
upstream::UpstreamBackend).
Tls(String)
A TLS handshake, certificate validation, or hostname verification
failure while establishing or maintaining an encrypted upstream
connection (stage 0.3, DoT upstream::DotBackend/DoH
upstream::DohBackend). Carries a human-readable description; not
PartialEq-sensitive to the underlying TLS library’s exact error
type, matching Transport’s existing precedent.
Hook(String)
A caller-supplied dynamic route-selection hook failed. Carries the hook’s human-readable failure message; resolver integration does not fall back to static routing, retry an upstream, or cache this error.
InvalidFakeIpRange
A Fake IP pool range was empty because its start address was greater than its end address.
FakeIpPoolUnconfigured
A Fake IP pool was built without an IPv4 or IPv6 range.
FakeIpFamilyDisabled
An operation requested an address family not configured on a Fake IP pool.
InvalidFakeIpTtl
A Fake IP pool mapping lifetime was zero or did not contain a whole positive number of seconds.
FakeIpTtlOutOfRange
A valid Fake IP TTL could not be represented as either a pool monotonic-clock expiry instant or a 32-bit DNS record TTL.
InvalidFakeIpSnapshot
A caller-provided Fake IP pool snapshot was structurally invalid or incompatible with its declared pool configuration.
Trait Implementations§
impl Eq for Error
Source§impl Error for Error
impl Error for Error
1.30.0 · Source§fn source(&self) -> Option<&(dyn Error + 'static)>
fn source(&self) -> Option<&(dyn Error + 'static)>
1.0.0 · Source§fn description(&self) -> &str
fn description(&self) -> &str
use the Display impl or to_string()