netstack3_ip::device

Trait IpDeviceIpExt

Source
pub trait IpDeviceIpExt: IpDeviceStateIpExt + AssignedAddrIpExt {
    type State<BT: IpDeviceStateBindingsTypes>: AsRef<IpDeviceState<Self, BT>> + AsMut<IpDeviceState<Self, BT>>;
    type Configuration: AsRef<IpDeviceConfiguration> + Clone;
    type Timer<D: WeakDeviceIdentifier, A: IpAddressIdSpec>: Into<IpDeviceTimerId<Self, D, A>> + From<IpDeviceTimerId<Self, D, A>> + Clone + Eq + PartialEq + Debug + Hash;
    type AddressConfig<I: Instant>: Default + Debug;
    type ManualAddressConfig<I: Instant>: Default + Debug + Into<Self::AddressConfig<I>>;
    type AddressState<I: Instant>: 'static + Inspectable;
    type ConfigurationUpdate: From<IpDeviceConfigurationUpdate> + AsRef<IpDeviceConfigurationUpdate> + Debug;
    type ConfigurationAndFlags: From<(Self::Configuration, IpDeviceFlags)> + AsRef<IpDeviceConfiguration> + AsRef<IpDeviceFlags> + AsMut<IpDeviceConfiguration> + PartialEq + Debug;

    // Required methods
    fn get_common_props<I: Instant>(
        config: &Self::AddressConfig<I>,
    ) -> CommonAddressProperties<I>;
    fn is_addr_assigned<I: Instant>(addr_state: &Self::AddressState<I>) -> bool;
    fn timer_device_id<D: WeakDeviceIdentifier, A: IpAddressIdSpec>(
        timer: &Self::Timer<D, A>,
    ) -> Option<D::Strong>;
    fn take_addr_config_for_removal<I: Instant>(
        addr_state: &mut Self::AddressState<I>,
    ) -> Option<Self::AddressConfig<I>>;
}
Expand description

An extension trait adding IP device properties.

Required Associated Types§

Source

type State<BT: IpDeviceStateBindingsTypes>: AsRef<IpDeviceState<Self, BT>> + AsMut<IpDeviceState<Self, BT>>

IP layer state kept by the device.

Source

type Configuration: AsRef<IpDeviceConfiguration> + Clone

IP layer configuration kept by the device.

Source

type Timer<D: WeakDeviceIdentifier, A: IpAddressIdSpec>: Into<IpDeviceTimerId<Self, D, A>> + From<IpDeviceTimerId<Self, D, A>> + Clone + Eq + PartialEq + Debug + Hash

High level IP device timer.

Source

type AddressConfig<I: Instant>: Default + Debug

Device address configuration.

Source

type ManualAddressConfig<I: Instant>: Default + Debug + Into<Self::AddressConfig<I>>

Manual device address configuration (user-initiated).

Source

type AddressState<I: Instant>: 'static + Inspectable

Device address associated state.

Source

type ConfigurationUpdate: From<IpDeviceConfigurationUpdate> + AsRef<IpDeviceConfigurationUpdate> + Debug

Device configuration update request.

Source

type ConfigurationAndFlags: From<(Self::Configuration, IpDeviceFlags)> + AsRef<IpDeviceConfiguration> + AsRef<IpDeviceFlags> + AsMut<IpDeviceConfiguration> + PartialEq + Debug

IP layer configuration and flags.

Required Methods§

Source

fn get_common_props<I: Instant>( config: &Self::AddressConfig<I>, ) -> CommonAddressProperties<I>

Gets the common properties of an address from its configuration.

Source

fn is_addr_assigned<I: Instant>(addr_state: &Self::AddressState<I>) -> bool

Returns whether the address is currently assigned based on state.

Source

fn timer_device_id<D: WeakDeviceIdentifier, A: IpAddressIdSpec>( timer: &Self::Timer<D, A>, ) -> Option<D::Strong>

Extracts the device ID from a device timer.

Source

fn take_addr_config_for_removal<I: Instant>( addr_state: &mut Self::AddressState<I>, ) -> Option<Self::AddressConfig<I>>

Extracts the address configuration from the state in preparation for removal.

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.

Implementations on Foreign Types§

Source§

impl IpDeviceIpExt for Ipv4

Source§

impl IpDeviceIpExt for Ipv6

Implementors§