netstack3_ip

Trait IpRouteTablesContext

Source
pub trait IpRouteTablesContext<I: IpLayerIpExt>: IpRouteTableContext<I> + IpDeviceContext<I> {
    type Ctx<'a>: IpRouteTableContext<I, DeviceId = Self::DeviceId, WeakDeviceId = Self::WeakDeviceId>;

    // Required methods
    fn main_table_id(&self) -> RoutingTableId<I, Self::DeviceId>;
    fn with_ip_routing_tables<O, F: FnOnce(&mut Self::Ctx<'_>, &HashMap<RoutingTableId<I, Self::DeviceId>, PrimaryRc<RwLock<RoutingTable<I, Self::DeviceId>>>>) -> O>(
        &mut self,
        cb: F,
    ) -> O;
    fn with_ip_routing_tables_mut<O, F: FnOnce(&mut HashMap<RoutingTableId<I, Self::DeviceId>, PrimaryRc<RwLock<RoutingTable<I, Self::DeviceId>>>>) -> O>(
        &mut self,
        cb: F,
    ) -> O;

    // Provided methods
    fn with_main_ip_routing_table<O, F: FnOnce(&mut Self::IpDeviceIdCtx<'_>, &RoutingTable<I, Self::DeviceId>) -> O>(
        &mut self,
        cb: F,
    ) -> O { ... }
    fn with_main_ip_routing_table_mut<O, F: FnOnce(&mut Self::IpDeviceIdCtx<'_>, &mut RoutingTable<I, Self::DeviceId>) -> O>(
        &mut self,
        cb: F,
    ) -> O { ... }
}
Expand description

The state context that gives access to routing tables provided to the IP layer.

Required Associated Types§

Source

type Ctx<'a>: IpRouteTableContext<I, DeviceId = Self::DeviceId, WeakDeviceId = Self::WeakDeviceId>

The inner context that can provide access to individual routing tables.

Required Methods§

Source

fn main_table_id(&self) -> RoutingTableId<I, Self::DeviceId>

Gets the main table ID.

Source

fn with_ip_routing_tables<O, F: FnOnce(&mut Self::Ctx<'_>, &HashMap<RoutingTableId<I, Self::DeviceId>, PrimaryRc<RwLock<RoutingTable<I, Self::DeviceId>>>>) -> O>( &mut self, cb: F, ) -> O

Gets immutable access to all the routing tables that currently exist.

Source

fn with_ip_routing_tables_mut<O, F: FnOnce(&mut HashMap<RoutingTableId<I, Self::DeviceId>, PrimaryRc<RwLock<RoutingTable<I, Self::DeviceId>>>>) -> O>( &mut self, cb: F, ) -> O

Gets mutable access to all the routing tables that currently exist.

Provided Methods§

Source

fn with_main_ip_routing_table<O, F: FnOnce(&mut Self::IpDeviceIdCtx<'_>, &RoutingTable<I, Self::DeviceId>) -> O>( &mut self, cb: F, ) -> O

Calls the function with an immutable reference to IP routing table.

Source

fn with_main_ip_routing_table_mut<O, F: FnOnce(&mut Self::IpDeviceIdCtx<'_>, &mut RoutingTable<I, Self::DeviceId>) -> O>( &mut self, cb: F, ) -> O

Calls the function with a mutable reference to IP routing table.

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.

Implementors§