Struct MulticastForwardingApi

Source
pub struct MulticastForwardingApi<I: Ip, C> { /* private fields */ }
Expand description

The multicast forwarding API.

Implementations§

Source§

impl<I: Ip, C> MulticastForwardingApi<I, C>

Source

pub fn new(ctx: C) -> Self

Constructs a new multicast forwarding API.

Source§

impl<I: IpLayerIpExt, C> MulticastForwardingApi<I, C>

Source

pub fn enable(&mut self) -> bool

Enables multicast forwarding.

Returns whether multicast forwarding was newly enabled.

Source

pub fn disable(&mut self) -> bool

Disables multicast forwarding.

Returns whether multicast forwarding was newly disabled.

Upon being disabled, the multicast route table will be cleared, and all pending packets will be dropped.

Source

pub fn add_multicast_route( &mut self, key: MulticastRouteKey<I>, route: MulticastRoute<<C::CoreContext as DeviceIdContext<AnyDevice>>::DeviceId>, ) -> Result<Option<MulticastRoute<<C::CoreContext as DeviceIdContext<AnyDevice>>::DeviceId>>, MulticastForwardingDisabledError>

Add the route to the multicast route table.

If a route already exists with the same key, it will be replaced, and the original route will be returned.

Source

pub fn remove_multicast_route( &mut self, key: &MulticastRouteKey<I>, ) -> Result<Option<MulticastRoute<<C::CoreContext as DeviceIdContext<AnyDevice>>::DeviceId>>, MulticastForwardingDisabledError>

Remove the route from the multicast route table.

Returns None if the route did not exist.

Source

pub fn remove_references_to_device( &mut self, dev: &<C::CoreContext as DeviceIdContext<AnyDevice>>::WeakDeviceId, )

Remove all references to the device from the multicast forwarding state.

Typically, this is called as part of device removal to purge all strong device references.

Any routes that reference the device as an input_interface will be removed. Any routes that reference the device as a MulticastRouteTarget will have that target removed (and will themselves be removed if it’s the only target).

Source

pub fn get_route_stats( &mut self, key: &MulticastRouteKey<I>, ) -> Result<Option<MulticastRouteStats<<C::BindingsContext as InstantBindingsTypes>::Instant>>, MulticastForwardingDisabledError>

Returns the MulticastRouteStats, if any, for the given key.

Source

pub fn inspect<N: Inspector + InspectorDeviceExt<<C::CoreContext as DeviceIdContext<AnyDevice>>::DeviceId>>( &mut self, inspector: &mut N, )

Writes multicast routing table information to the provided inspector.

Auto Trait Implementations§

§

impl<I, C> Freeze for MulticastForwardingApi<I, C>
where C: Freeze,

§

impl<I, C> RefUnwindSafe for MulticastForwardingApi<I, C>

§

impl<I, C> Send for MulticastForwardingApi<I, C>
where C: Send,

§

impl<I, C> Sync for MulticastForwardingApi<I, C>
where C: Sync,

§

impl<I, C> Unpin for MulticastForwardingApi<I, C>
where C: Unpin, I: Unpin,

§

impl<I, C> UnwindSafe for MulticastForwardingApi<I, C>
where C: 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>>
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>,