pub struct UnreachabilityConfig {
pub base_reachable_time: Option<i64>,
pub learn_base_reachable_time: Option<bool>,
pub min_random_factor: Option<f32>,
pub max_random_factor: Option<f32>,
pub retransmit_timer: Option<i64>,
pub learn_retransmit_timer: Option<bool>,
pub delay_first_probe_time: Option<i64>,
pub max_multicast_probes: Option<u32>,
pub max_unicast_probes: Option<u32>,
pub max_anycast_delay_time: Option<i64>,
pub max_reachability_confirmations: Option<u32>,
/* private fields */
}
Expand description
Configuration options related to the operation of Neighbor Unreachability Detection (NUD), as defined by RFC 4861 section 7.3.
Field names loosely follow RFC 4861 sections 6.3.2 and 10, any deviations are noted. Descriptions are kept implementation-independent by using a set of generic terminology.
,—————————————————————––. | Generic Term | ARP Protocol | NDP Protocol | |—————————+–––––––+————————| | Reachability Probe | ARP Request | Neighbor Solicitation | | Reachability Confirmation | ARP Reply | Neighbor Advertisement | `—————————+–––––––+————————’
Fields§
§base_reachable_time: Option<i64>
A base duration for computing the random reachable time.
Reachable time is the duration for which a neighbor is considered
reachable after a positive reachability confirmation is received. It is
a function of a uniformly distributed random value between
[min_random_factor
] and [max_random_factor
] multiplied by
[base_reachable_time
]. Using a random component eliminates the
possibility that Neighbor Unreachability Detection messages will
synchronize with each other.
After this time, an entry will transition from REACHABLE to STALE state.
Referred to as “BaseReachableTime” by RFC 4861.
Must be greater than 0.
learn_base_reachable_time: Option<bool>
Learn [base_reachable_time
] during runtime from the neighbor discovery
protocol, if supported.
min_random_factor: Option<f32>
The minimum value of the random factor used for computing reachable time.
See [base_reachable_time
] for more information on computing the
reachable time.
Must be greater than 0.
max_random_factor: Option<f32>
The maximum value of the random factor used for computing reachable time.
See [base_reachable_time
] for more information on computing the
reachable time.
Must be greater than or equal to [min_random_factor
].
retransmit_timer: Option<i64>
Duration between retransmissions of reachability probes in the PROBE state.
Referred to as “RetransTimer” by RFC 4861.
Must be greater than 0.
learn_retransmit_timer: Option<bool>
Learn [retransmit_timer
] during runtime from the neighbor discovery
protocol, if supported.
delay_first_probe_time: Option<i64>
Duration to wait for a non-Neighbor-Discovery related protocol to reconfirm reachability after entering the DELAY state. After this time, a reachability probe will be sent and the entry will transition to the PROBE state.
Must be greater than 0.
max_multicast_probes: Option<u32>
The number of reachability probes to send before concluding negative reachability and deleting the entry from the INCOMPLETE state.
Referred to as “MAX_MULTICAST_SOLICIT” by RFC 4861.
Must be greater than 0.
max_unicast_probes: Option<u32>
The number of reachability probes to send before concluding retransmissions from within the PROBE state should cease and the entry SHOULD be deleted.
Referred to as “MAX_UNICAST_SOLICIT” by RFC 4861.
Must be greater than 0.
max_anycast_delay_time: Option<i64>
If the target address is an anycast address, the stack SHOULD delay sending a response for a random time between 0 and this duration.
max_reachability_confirmations: Option<u32>
A node MAY send up to this amount of unsolicited reachability confirmations messages to all-nodes multicast address when a node determines its link-layer address has changed.
Referred to as “MAX_NEIGHBOR_ADVERTISEMENT” by RFC 4861.
Trait Implementations§
source§impl Clone for UnreachabilityConfig
impl Clone for UnreachabilityConfig
source§fn clone(&self) -> UnreachabilityConfig
fn clone(&self) -> UnreachabilityConfig
1.0.0 · source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source
. Read moresource§impl Debug for UnreachabilityConfig
impl Debug for UnreachabilityConfig
source§impl Decode<UnreachabilityConfig> for UnreachabilityConfig
impl Decode<UnreachabilityConfig> for UnreachabilityConfig
source§impl Default for UnreachabilityConfig
impl Default for UnreachabilityConfig
source§fn default() -> UnreachabilityConfig
fn default() -> UnreachabilityConfig
source§impl Encode<UnreachabilityConfig> for &UnreachabilityConfig
impl Encode<UnreachabilityConfig> for &UnreachabilityConfig
source§impl PartialEq for UnreachabilityConfig
impl PartialEq for UnreachabilityConfig
source§fn eq(&self, other: &UnreachabilityConfig) -> bool
fn eq(&self, other: &UnreachabilityConfig) -> bool
self
and other
values to be equal, and is used
by ==
.source§impl TypeMarker for UnreachabilityConfig
impl TypeMarker for UnreachabilityConfig
§type Owned = UnreachabilityConfig
type Owned = UnreachabilityConfig
source§fn inline_align(_context: Context) -> usize
fn inline_align(_context: Context) -> usize
source§fn inline_size(_context: Context) -> usize
fn inline_size(_context: Context) -> usize
inline_align
.§fn encode_is_copy() -> bool
fn encode_is_copy() -> bool
Self::Owned
matches the FIDL wire
format and encoding requires no validation. When true, we can optimize
encoding arrays and vectors of Self::Owned
to a single memcpy. Read more§fn decode_is_copy() -> bool
fn decode_is_copy() -> bool
Self::Owned
matches the FIDL wire
format and decoding requires no validation. When true, we can optimize
decoding arrays and vectors of Self::Owned
to a single memcpy.source§impl ValueTypeMarker for UnreachabilityConfig
impl ValueTypeMarker for UnreachabilityConfig
§type Borrowed<'a> = &'a UnreachabilityConfig
type Borrowed<'a> = &'a UnreachabilityConfig
Encode<Self>
type cheaply obtainable from &Self::Owned
. There are three cases: Read more