pub enum EventDynamicState<L>where
L: LinkUnicastAddress,{
Incomplete,
Reachable(L),
Stale(L),
Delay(L),
Probe(L),
Unreachable(L),
}Expand description
The state of dynamic neighbor table entries as published via events.
Note that this is not how state is held in the neighbor table itself,
see DynamicNeighborState.
Modeled after RFC 4861 section 7.3.2. Descriptions are kept implementation-independent by using a set of generic terminology.
,——————————————————————. | Generic Term | ARP Term | NDP Term | |—————————+———––+————————| | Reachability Probe | ARP Request | Neighbor Solicitation | | Reachability Confirmation | ARP Reply | Neighbor Advertisement | `—————————+———––+————————’
Variants§
Incomplete
Reachability is in the process of being confirmed for a newly created entry.
Reachable(L)
Forward reachability has been confirmed; the path to the neighbor is functioning properly.
Stale(L)
Reachability is considered unknown.
Occurs in one of two ways:
- Too much time has elapsed since the last positive reachability confirmation was received.
- Received a reachability confirmation from a neighbor with a different MAC address than the one cached.
Delay(L)
A packet was recently sent while reachability was considered unknown.
This state is an optimization that gives non-Neighbor-Discovery related protocols time to confirm reachability after the last confirmation of reachability has expired due to lack of recent traffic.
Probe(L)
A reachability confirmation is actively sought by periodically retransmitting unicast reachability probes until a reachability confirmation is received, or until the maximum number of probes has been sent.
Unreachable(L)
Target is considered unreachable. A reachability confirmation was not received after transmitting the maximum number of reachability probes.
Trait Implementations§
Source§impl<L> Clone for EventDynamicState<L>where
L: Clone + LinkUnicastAddress,
impl<L> Clone for EventDynamicState<L>where
L: Clone + LinkUnicastAddress,
Source§fn clone(&self) -> EventDynamicState<L>
fn clone(&self) -> EventDynamicState<L>
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl<L> Debug for EventDynamicState<L>where
L: Debug + LinkUnicastAddress,
impl<L> Debug for EventDynamicState<L>where
L: Debug + LinkUnicastAddress,
Source§impl<L> Hash for EventDynamicState<L>where
L: Hash + LinkUnicastAddress,
impl<L> Hash for EventDynamicState<L>where
L: Hash + LinkUnicastAddress,
Source§impl<L> PartialEq for EventDynamicState<L>where
L: PartialEq + LinkUnicastAddress,
impl<L> PartialEq for EventDynamicState<L>where
L: PartialEq + LinkUnicastAddress,
impl<L> Copy for EventDynamicState<L>where
L: Copy + LinkUnicastAddress,
impl<L> Eq for EventDynamicState<L>where
L: Eq + LinkUnicastAddress,
impl<L> StructuralPartialEq for EventDynamicState<L>where
L: LinkUnicastAddress,
Auto Trait Implementations§
impl<L> Freeze for EventDynamicState<L>where
L: Freeze,
impl<L> RefUnwindSafe for EventDynamicState<L>where
L: RefUnwindSafe,
impl<L> Send for EventDynamicState<L>
impl<L> Sync for EventDynamicState<L>where
L: Sync,
impl<L> Unpin for EventDynamicState<L>where
L: Unpin,
impl<L> UnwindSafe for EventDynamicState<L>where
L: UnwindSafe,
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,
§impl<T, D> Encode<Ambiguous1, D> for Twhere
D: ResourceDialect,
impl<T, D> Encode<Ambiguous1, D> for Twhere
D: ResourceDialect,
§impl<T, D> Encode<Ambiguous2, D> for Twhere
D: ResourceDialect,
impl<T, D> Encode<Ambiguous2, D> for Twhere
D: ResourceDialect,
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.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