Skip to main content

NeighborApi

Struct NeighborApi 

Source
pub struct NeighborApi<I: Ip, D, C>(/* private fields */);
Expand description

The neighbor API.

Implementations§

Source§

impl<I: Ip, D, C> NeighborApi<I, D, C>

Source

pub fn new(ctx: C) -> Self

Creates a new API instance.

Source§

impl<I, D, C> NeighborApi<I, D, C>

Resolve the link-address for a given device’s neighbor.

Lookup the given destination IP address in the neighbor table for given device, returning either the associated link-address if it is available, or an observer that can be used to wait for link address resolution to complete.

Source

pub fn flush_table( &mut self, device: &<C::CoreContext as DeviceIdContext<D>>::DeviceId, )

Flush neighbor table entries.

Source

pub fn insert_static_entry( &mut self, device_id: &<C::CoreContext as DeviceIdContext<D>>::DeviceId, neighbor: I::Addr, link_address: D::Address, ) -> Result<(), StaticNeighborInsertionError>

Sets a static neighbor entry for the neighbor.

If no entry exists, a new one may be created. If an entry already exists, it will be updated with the provided link address and set to be a static entry.

Dynamic updates for the neighbor will be ignored for static entries.

Source

pub fn probe_entry( &mut self, device_id: &<C::CoreContext as DeviceIdContext<D>>::DeviceId, neighbor: I::Addr, ) -> Result<(), TriggerNeighborProbeError>

Immediately triggers a unicast probe to be sent to neighbor.

For IPv6, this probe is an NDP Neighbor Solicitation, while for IPv4 it’s an ARP Request.

Returns an error if the probe was not sent, unless the neighbor was already in the Probe state, in which case it succeeds without sending another probe.

Source

pub fn remove_entry( &mut self, device_id: &<C::CoreContext as DeviceIdContext<D>>::DeviceId, neighbor: I::Addr, ) -> Result<(), NeighborRemovalError>

Remove a static or dynamic neighbor table entry.

Source

pub fn inspect_neighbors<N: Inspector>( &mut self, device: &<C::CoreContext as DeviceIdContext<D>>::DeviceId, inspector: &mut N, )
where D::Address: Display,

Writes device’s neighbor state information into inspector.

Auto Trait Implementations§

§

impl<I, D, C> Freeze for NeighborApi<I, D, C>
where C: Freeze,

§

impl<I, D, C> RefUnwindSafe for NeighborApi<I, D, C>

§

impl<I, D, C> Send for NeighborApi<I, D, C>
where C: Send, D: Send,

§

impl<I, D, C> Sync for NeighborApi<I, D, C>
where C: Sync, D: Sync,

§

impl<I, D, C> Unpin for NeighborApi<I, D, C>
where C: Unpin, D: Unpin, I: Unpin,

§

impl<I, D, C> UnsafeUnpin for NeighborApi<I, D, C>
where C: UnsafeUnpin,

§

impl<I, D, C> UnwindSafe for NeighborApi<I, D, C>
where C: UnwindSafe, D: UnwindSafe, I: UnwindSafe,

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
§

impl<T, D> Encode<Ambiguous1, D> for T
where D: ResourceDialect,

§

unsafe fn encode( self, _encoder: &mut Encoder<'_, D>, _offset: usize, _depth: Depth, ) -> Result<(), Error>

Encodes the object into the encoder’s buffers. Any handles stored in the object are swapped for Handle::INVALID. Read more
§

impl<T, D> Encode<Ambiguous2, D> for T
where D: ResourceDialect,

§

unsafe fn encode( self, _encoder: &mut Encoder<'_, D>, _offset: usize, _depth: Depth, ) -> Result<(), Error>

Encodes the object into the encoder’s buffers. Any handles stored in the object are swapped for Handle::INVALID. 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<T> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts 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 more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts 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
§

impl<T> Pointable for T

§

const ALIGN: usize

The alignment of pointer.
§

type Init = T

The type for initializers.
§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
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>>

Send a frame. Read more
Source§

impl<BC, S, Meta, DeviceId> SendableFrameMeta<FakeCoreCtx<S, Meta, DeviceId>, BC> for Meta

Source§

fn send_meta<SS>( self, core_ctx: &mut FakeCoreCtx<S, Meta, DeviceId>, bindings_ctx: &mut BC, frame: SS, ) -> Result<(), ErrorAndSerializer<SendFrameErrorReason, SS>>
where SS: Serializer, <SS as Serializer>::Buffer: BufferMut,

Sends this frame metadata to the provided contexts.
Source§

impl<Meta, BC> SendableFrameMeta<FakeFrameCtx<Meta>, BC> for Meta

Source§

fn send_meta<S>( self, core_ctx: &mut FakeFrameCtx<Meta>, _bindings_ctx: &mut BC, frame: S, ) -> Result<(), ErrorAndSerializer<SendFrameErrorReason, S>>

Sends this frame metadata to the provided contexts.
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.
Source§

impl<L, T> UnlockedAccess<L> for T

Source§

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

The type of state being accessed.
Source§

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

A guard providing read access to the data.
Source§

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

Source§

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