netstack3_core::device

Enum EthernetLinkDevice

Source
pub enum EthernetLinkDevice {}
Expand description

An implementation of the LinkDevice trait for Ethernet devices.

Trait Implementations§

Source§

impl<BC: BindingsContext, L: LockBefore<IpState<Ipv4>>> ArpContext<EthernetLinkDevice, BC> for CoreCtx<'_, BC, L>

Source§

type ConfigCtx<'a> = CoreCtxWithDeviceId<'a, Locked<&'a StackState<BC>, <EthernetIpv4Arp as WrappedLockLevel>::LockLevel>>

The inner configuration context.
Source§

type ArpSenderCtx<'a> = CoreCtxWithDeviceId<'a, Locked<&'a StackState<BC>, <EthernetIpv4Arp as WrappedLockLevel>::LockLevel>>

The inner sender context.
Source§

fn with_arp_state_mut_and_sender_ctx<O, F: FnOnce(&mut ArpState<EthernetLinkDevice, BC>, &mut Self::ArpSenderCtx<'_>) -> O>( &mut self, device_id: &EthernetDeviceId<BC>, cb: F, ) -> O

Calls the function with a mutable reference to ARP state and the core sender context.
Source§

fn get_protocol_addr( &mut self, _bindings_ctx: &mut BC, device_id: &EthernetDeviceId<BC>, ) -> Option<Ipv4Addr>

Get a protocol address of this interface. Read more
Source§

fn get_hardware_addr( &mut self, _bindings_ctx: &mut BC, device_id: &EthernetDeviceId<BC>, ) -> UnicastAddr<Mac>

Get the hardware address of this interface.
Source§

fn with_arp_state_mut<O, F: FnOnce(&mut ArpState<EthernetLinkDevice, BC>, &mut Self::ConfigCtx<'_>) -> O>( &mut self, device_id: &EthernetDeviceId<BC>, cb: F, ) -> O

Calls the function with a mutable reference to ARP state and the ARP configuration context.
Source§

fn with_arp_state<O, F: FnOnce(&ArpState<EthernetLinkDevice, BC>) -> O>( &mut self, device_id: &EthernetDeviceId<BC>, cb: F, ) -> O

Calls the function with an immutable reference to ARP state.
Source§

impl Clone for EthernetLinkDevice

Source§

fn clone(&self) -> EthernetLinkDevice

Returns a copy of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for EthernetLinkDevice

Source§

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

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

impl<'a, BT, L> DeviceCollectionContext<EthernetLinkDevice, BT> for CoreCtx<'a, BT, L>
where BT: BindingsTypes, L: LockBefore<DeviceLayerState>,

Source§

fn insert(&mut self, device: EthernetPrimaryDeviceId<BT>)

Adds device to the device collection.
Source§

fn remove( &mut self, device: &EthernetDeviceId<BT>, ) -> Option<EthernetPrimaryDeviceId<BT>>

Removes device from the collection, if it exists.
Source§

impl<'a, BT, L> DeviceConfigurationContext<EthernetLinkDevice> for CoreCtx<'a, BT, L>
where L: LockBefore<NudConfig<Ipv4>> + LockBefore<NudConfig<Ipv6>>, BT: BindingsTypes,

Source§

fn with_nud_config<I: Ip, O, F: FnOnce(Option<&NudUserConfig>) -> O>( &mut self, device_id: &Self::DeviceId, f: F, ) -> O

Calls the callback with a mutable reference to the NUD user configuration for IP version I. Read more
Source§

fn with_nud_config_mut<I: Ip, O, F: FnOnce(Option<&mut NudUserConfig>) -> O>( &mut self, device_id: &Self::DeviceId, f: F, ) -> O

Calls the callback with a mutable reference to the NUD user configuration for IP version I. Read more
Source§

impl<BT: BindingsTypes, L> DeviceIdContext<EthernetLinkDevice> for CoreCtx<'_, BT, L>

Source§

type DeviceId = BaseDeviceId<EthernetLinkDevice, BT>

The type of device IDs.
Source§

type WeakDeviceId = BaseWeakDeviceId<EthernetLinkDevice, BT>

The type of weakly referenced device IDs.
Source§

impl DeviceStateSpec for EthernetLinkDevice

Source§

const IS_LOOPBACK: bool = false

Marker for loopback devices.
Source§

const DEBUG_TYPE: &'static str = "Ethernet"

Marker used to print debug information for device identifiers.
The link state.
Source§

type External<BT: DeviceLayerTypes> = <BT as DeviceLayerStateTypes>::EthernetDeviceState

The external (bindings) state.
Source§

type CreationProperties = EthernetCreationProperties

Properties given to device creation.
Source§

type Counters = EthernetDeviceCounters

Device-specific counters.
Source§

type TimerId<D: WeakDeviceIdentifier> = EthernetTimerId<D>

The timer identifier required by this device state.
Creates a new link state from the given properties.
Source§

impl Hash for EthernetLinkDevice

Source§

fn hash<__H>(&self, state: &mut __H)
where __H: Hasher,

Feeds this value into the given Hasher. Read more
1.3.0 · Source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where H: Hasher, Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
Source§

impl LinkDevice for EthernetLinkDevice

Source§

type Address = Mac

The type of address used to address link devices of this type.
Source§

impl<BC: BindingsContext, L: LockBefore<FilterState<Ipv6>>> NudContext<Ipv6, EthernetLinkDevice, BC> for CoreCtx<'_, BC, L>

Source§

type ConfigCtx<'a> = CoreCtxWithDeviceId<'a, Locked<&'a StackState<BC>, <EthernetIpv6Nud as WrappedLockLevel>::LockLevel>>

The inner configuration context.
Source§

type SenderCtx<'a> = CoreCtxWithDeviceId<'a, Locked<&'a StackState<BC>, <EthernetIpv6Nud as WrappedLockLevel>::LockLevel>>

The inner send context.
Source§

fn with_nud_state_mut_and_sender_ctx<O, F: FnOnce(&mut NudState<Ipv6, EthernetLinkDevice, BC>, &mut Self::SenderCtx<'_>) -> O>( &mut self, device_id: &EthernetDeviceId<BC>, cb: F, ) -> O

Calls the function with a mutable reference to the NUD state and the core sender context.
Source§

fn with_nud_state_mut<O, F: FnOnce(&mut NudState<Ipv6, EthernetLinkDevice, BC>, &mut Self::ConfigCtx<'_>) -> O>( &mut self, device_id: &EthernetDeviceId<BC>, cb: F, ) -> O

Calls the function with a mutable reference to the NUD state and NUD configuration for the device.
Source§

fn with_nud_state<O, F: FnOnce(&NudState<Ipv6, EthernetLinkDevice, BC>) -> O>( &mut self, device_id: &EthernetDeviceId<BC>, cb: F, ) -> O

Calls the function with an immutable reference to the NUD state.
Source§

fn send_neighbor_solicitation( &mut self, bindings_ctx: &mut BC, device_id: &EthernetDeviceId<BC>, lookup_addr: SpecifiedAddr<Ipv6Addr>, remote_link_addr: Option<Mac>, )

Sends a neighbor probe/solicitation message. Read more
Source§

impl<BC: BindingsContext, L: LockBefore<IcmpAllSocketsSet<Ipv4>>> NudIcmpContext<Ipv4, EthernetLinkDevice, BC> for CoreCtx<'_, BC, L>

Source§

fn send_icmp_dest_unreachable( &mut self, bindings_ctx: &mut BC, frame: Buf<Vec<u8>>, device_id: Option<&Self::DeviceId>, original_src_ip: SocketIpAddr<Ipv4Addr>, original_dst_ip: SocketIpAddr<Ipv4Addr>, (header_len, fragment_type): (usize, Ipv4FragmentType), )

Send an ICMP destination unreachable error to original_src_ip as a result of frame being unable to be sent/forwarded due to link layer address resolution failure. Read more
Source§

impl<BC: BindingsContext, L: LockBefore<IcmpAllSocketsSet<Ipv6>>> NudIcmpContext<Ipv6, EthernetLinkDevice, BC> for CoreCtx<'_, BC, L>

Source§

fn send_icmp_dest_unreachable( &mut self, bindings_ctx: &mut BC, frame: Buf<Vec<u8>>, device_id: Option<&Self::DeviceId>, original_src_ip: SocketIpAddr<Ipv6Addr>, original_dst_ip: SocketIpAddr<Ipv6Addr>, _: (), )

Send an ICMP destination unreachable error to original_src_ip as a result of frame being unable to be sent/forwarded due to link layer address resolution failure. Read more
Source§

impl PartialEq for EthernetLinkDevice

Source§

fn eq(&self, other: &EthernetLinkDevice) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl<BC: BindingsContext, L: LockBefore<EthernetTxDequeue>> TransmitDequeueContext<EthernetLinkDevice, BC> for CoreCtx<'_, BC, L>

Source§

type TransmitQueueCtx<'a> = Locked<&'a StackState<BC>, <EthernetTxDequeue as WrappedLockLevel>::LockLevel>

The inner context providing dequeuing.
Source§

fn with_dequed_packets_and_tx_queue_ctx<O, F: FnOnce(&mut DequeueState<Self::Meta, Self::Buffer>, &mut Self::TransmitQueueCtx<'_>) -> O>( &mut self, device_id: &Self::DeviceId, cb: F, ) -> O

Calls the function with the TX deque state and the TX queue context.
Source§

impl<BC: BindingsContext, L: LockBefore<EthernetTxQueue>> TransmitQueueCommon<EthernetLinkDevice, BC> for CoreCtx<'_, BC, L>

Source§

type Meta = ()

The metadata associated with every packet in the queue.
Source§

type Allocator = BufVecU8Allocator

An allocator of Self::Buffer.
Source§

type Buffer = Buf<Vec<u8>>

The buffer type stored in the queue.
Source§

type DequeueContext = <BC as DeviceLayerEventDispatcher>::DequeueContext

The context given to send_frame when dequeueing.
Source§

fn parse_outgoing_frame<'a, 'b>( buf: &'a [u8], (): &'b Self::Meta, ) -> Result<SentFrame<&'a [u8]>, ParseSentFrameError>

Parses an outgoing frame for packet socket delivery.
Source§

impl<BC: BindingsContext, L: LockBefore<EthernetTxQueue>> TransmitQueueContext<EthernetLinkDevice, BC> for CoreCtx<'_, BC, L>

Source§

fn with_transmit_queue_mut<O, F: FnOnce(&mut TransmitQueueState<Self::Meta, Self::Buffer, Self::Allocator>) -> O>( &mut self, device_id: &EthernetDeviceId<BC>, cb: F, ) -> O

Calls cb with mutable access to the queue state.
Source§

fn with_transmit_queue<O, F: FnOnce(&TransmitQueueState<Self::Meta, Self::Buffer, Self::Allocator>) -> O>( &mut self, device_id: &EthernetDeviceId<BC>, cb: F, ) -> O

Calls cb with immutable access to the queue state.
Source§

fn send_frame( &mut self, bindings_ctx: &mut BC, device_id: &Self::DeviceId, dequeue_context: Option<&mut BC::DequeueContext>, _meta: Self::Meta, buf: Self::Buffer, ) -> Result<(), DeviceSendFrameError>

Send a frame out the device. Read more
Source§

impl Copy for EthernetLinkDevice

Source§

impl Device for EthernetLinkDevice

Source§

impl Eq for EthernetLinkDevice

Source§

impl StructuralPartialEq for EthernetLinkDevice

Auto Trait Implementations§

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> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dst: *mut T)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dst. 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> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. 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>,