netstack3_ip::device

Enum Ipv6DadState

Source
pub enum Ipv6DadState<BT: DadBindingsTypes> {
    Assigned,
    Tentative {
        dad_transmits_remaining: Option<NonZeroU16>,
        timer: BT::Timer,
        nonces: NonceCollection,
        added_extra_transmits_after_detecting_looped_back_ns: bool,
    },
    Uninitialized,
}
Expand description

The various states DAD may be in for an address.

Variants§

§

Assigned

The address is assigned to an interface and can be considered bound to it (all packets destined to the address will be accepted).

§

Tentative

The address is considered unassigned to an interface for normal operations, but has the intention of being assigned in the future (e.g. once NDP’s Duplicate Address Detection is completed).

When dad_transmits_remaining is None, then no more DAD messages need to be sent and DAD may be resolved.

Fields

§dad_transmits_remaining: Option<NonZeroU16>
§timer: BT::Timer
§nonces: NonceCollection
§added_extra_transmits_after_detecting_looped_back_ns: bool

Initialized to false, and exists as a sentinel so that extra transmits are added only after the first looped-back probe is detected.

§

Uninitialized

The address has not yet been initialized.

Trait Implementations§

Source§

impl<BT: DadBindingsTypes> Debug for Ipv6DadState<BT>

Source§

fn fmt(&self, __f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl<BT: IpDeviceStateBindingsTypes> OrderedLockAccess<Ipv6DadState<BT>> for Ipv6AddressEntry<BT>

Source§

type Lock = Mutex<Ipv6DadState<BT>>

The lock type that observes ordering. Read more
Source§

fn ordered_lock_access(&self) -> OrderedLockRef<'_, Self::Lock>

Returns a borrow to the order-aware lock. Read more

Auto Trait Implementations§

§

impl<BT> Freeze for Ipv6DadState<BT>

§

impl<BT> RefUnwindSafe for Ipv6DadState<BT>

§

impl<BT> Send for Ipv6DadState<BT>

§

impl<BT> Sync for Ipv6DadState<BT>

§

impl<BT> Unpin for Ipv6DadState<BT>
where <BT as TimerBindingsTypes>::Timer: Unpin,

§

impl<BT> UnwindSafe for Ipv6DadState<BT>

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, 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<CC, BC, Meta> RecvFrameContext<Meta, BC> for CC
where Meta: ReceivableFrameMeta<CC, BC>,

Source§

fn receive_frame<B>(&mut self, bindings_ctx: &mut BC, metadata: Meta, frame: B)
where B: BufferMut + Debug,

Receive a frame. Read more
Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<CC, BC, Meta> SendFrameContext<BC, Meta> for CC
where Meta: SendableFrameMeta<CC, BC>,

Source§

fn send_frame<S>( &mut self, bindings_ctx: &mut BC, metadata: Meta, frame: S, ) -> Result<(), ErrorAndSerializer<SendFrameErrorReason, S>>
where S: Serializer, <S as Serializer>::Buffer: BufferMut,

Send a frame. Read more
Source§

impl<Id, CC, BC> TimerHandler<BC, Id> for CC
where BC: TimerBindingsTypes, Id: HandleableTimer<CC, BC>,

Source§

fn handle_timer( &mut self, bindings_ctx: &mut BC, dispatch: Id, timer: <BC as TimerBindingsTypes>::UniqueTimerId, )

Handle a timer firing. Read more
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.
§

impl<L, T> UnlockedAccess<L> for T
where L: UnlockedAccessMarkerFor<T>,

§

type Data = <L as UnlockedAccessMarkerFor<T>>::Data

The type of state being accessed.
§

type Guard<'l> = &'l <L as UnlockedAccessMarkerFor<T>>::Data where T: 'l

A guard providing read access to the data.
§

fn access(&self) -> <T as UnlockedAccess<L>>::Guard<'_>

How to access the state.
§

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

§

fn vzip(self) -> V

§

impl<B, A> LockBefore<B> for A
where B: LockAfter<A>,