pub enum NatType {
None,
FullCone,
AddressRestricted,
PortRestricted,
Symmetric,
Unknown,
}Expand description
Best-effort NAT behavior hint for the node.
In the current implementation this is derived from native QUIC reachability and address-mapping observations, not from classic STUN-based NAT behavior discovery. Treat it as a debug/telemetry hint, not authoritative NAT classification.
These labels are compatibility-oriented and should not be read as a full RFC 3489/RFC 5780 NAT classification unless explicitly backed by protocol-level behavior measurements.
Variants§
None
Compatibility-oriented label for paths that appeared not to require NAT traversal.
This indicates the observed path did not require NAT traversal. It does not, by itself, prove current direct reachability to other peers.
FullCone
Compatibility-oriented label for direct-only native connectivity observations.
The current implementation does not prove RFC-style full-cone mapping or filtering behaviour before surfacing this value.
AddressRestricted
Compatibility-oriented label reserved for address-restricted behaviour.
The current node-level heuristic does not distinguish this variant from other cone-like behaviours.
PortRestricted
Compatibility-oriented label for mixed direct and relay-assisted outcomes.
The current implementation does not prove RFC-style port-restricted filtering behaviour before surfacing this value.
Symmetric
Compatibility-oriented label for likely endpoint-dependent mapping behaviour.
This is derived from native QUIC observations and is used as a relay optimization hint, not a complete NAT classification.
Unknown
NAT behavior hint not yet determined
The node has not yet gathered enough native connectivity evidence.
Trait Implementations§
impl Copy for NatType
impl Eq for NatType
impl StructuralPartialEq for NatType
Auto Trait Implementations§
impl Freeze for NatType
impl RefUnwindSafe for NatType
impl Send for NatType
impl Sync for NatType
impl Unpin for NatType
impl UnsafeUnpin for NatType
impl UnwindSafe for NatType
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> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
key and return true if they are equal.