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,
bindings_ctx: &mut BC,
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,
bindings_ctx: &mut BC,
device_id: &Self::DeviceId,
) -> Option<Ipv4Addr>
fn get_protocol_addr( &mut self, bindings_ctx: &mut BC, 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
.
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", so this trait is not object safe.