pub trait ArpContext<D: ArpDevice, BC: ArpBindingsContext<D, Self::DeviceId>>:
DeviceIdContext<D>
+ SendFrameContext<BC, ArpFrameMetadata<D, Self::DeviceId>>
+ CounterContext<ArpCounters> {
type ConfigCtx<'a>: ArpConfigContext;
type ArpSenderCtx<'a>: ArpSenderContext<D, BC, DeviceId = Self::DeviceId>;
// Required methods
fn with_arp_state_mut_and_sender_ctx<O, F: FnOnce(&mut ArpState<D, BC>, &mut Self::ArpSenderCtx<'_>) -> O>(
&mut self,
device_id: &Self::DeviceId,
cb: F,
) -> O;
fn get_protocol_addr(
&mut self,
device_id: &Self::DeviceId,
) -> Option<Ipv4Addr>;
fn get_hardware_addr(
&mut self,
bindings_ctx: &mut BC,
device_id: &Self::DeviceId,
) -> UnicastAddr<D::Address>;
fn with_arp_state_mut<O, F: FnOnce(&mut ArpState<D, BC>, &mut Self::ConfigCtx<'_>) -> O>(
&mut self,
device_id: &Self::DeviceId,
cb: F,
) -> O;
fn with_arp_state<O, F: FnOnce(&ArpState<D, BC>) -> O>(
&mut self,
device_id: &Self::DeviceId,
cb: F,
) -> O;
}Expand description
An execution context for the ARP protocol.
Required Associated Types§
Sourcetype ConfigCtx<'a>: ArpConfigContext
type ConfigCtx<'a>: ArpConfigContext
The inner configuration context.
Sourcetype ArpSenderCtx<'a>: ArpSenderContext<D, BC, DeviceId = Self::DeviceId>
type ArpSenderCtx<'a>: ArpSenderContext<D, BC, DeviceId = Self::DeviceId>
The inner sender context.
Required Methods§
Sourcefn with_arp_state_mut_and_sender_ctx<O, F: FnOnce(&mut ArpState<D, BC>, &mut Self::ArpSenderCtx<'_>) -> O>(
&mut self,
device_id: &Self::DeviceId,
cb: F,
) -> O
fn with_arp_state_mut_and_sender_ctx<O, F: FnOnce(&mut ArpState<D, BC>, &mut Self::ArpSenderCtx<'_>) -> O>( &mut self, device_id: &Self::DeviceId, cb: F, ) -> O
Calls the function with a mutable reference to ARP state and the core sender context.
Sourcefn get_protocol_addr(&mut self, device_id: &Self::DeviceId) -> Option<Ipv4Addr>
fn get_protocol_addr(&mut self, device_id: &Self::DeviceId) -> Option<Ipv4Addr>
Get a protocol address of this interface.
If device_id does not have any addresses associated with it, return
None.
NOTE: If the interface has multiple addresses, an arbitrary one will be returned.
Sourcefn get_hardware_addr(
&mut self,
bindings_ctx: &mut BC,
device_id: &Self::DeviceId,
) -> UnicastAddr<D::Address>
fn get_hardware_addr( &mut self, bindings_ctx: &mut BC, device_id: &Self::DeviceId, ) -> UnicastAddr<D::Address>
Get the hardware address of this interface.
Sourcefn with_arp_state_mut<O, F: FnOnce(&mut ArpState<D, BC>, &mut Self::ConfigCtx<'_>) -> O>(
&mut self,
device_id: &Self::DeviceId,
cb: F,
) -> O
fn with_arp_state_mut<O, F: FnOnce(&mut ArpState<D, BC>, &mut Self::ConfigCtx<'_>) -> O>( &mut self, device_id: &Self::DeviceId, cb: F, ) -> O
Calls the function with a mutable reference to ARP state and the ARP configuration context.
Sourcefn with_arp_state<O, F: FnOnce(&ArpState<D, BC>) -> O>(
&mut self,
device_id: &Self::DeviceId,
cb: F,
) -> O
fn with_arp_state<O, F: FnOnce(&ArpState<D, BC>) -> O>( &mut self, device_id: &Self::DeviceId, cb: F, ) -> O
Calls the function with an immutable reference to ARP state.
Dyn Compatibility§
This trait is not dyn compatible.
In older versions of Rust, dyn compatibility was called "object safety".