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

§

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>,

§

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>,

§

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>,