MultiRoutingTable

Package: inet.networklayer.multi

MultiRoutingTable

compound module

This module supports multiple different routing tables simultaneously. The actual routes are stored in the submodule routing tables and they are accessed directly by modules.

ipv4 : like IRoutingTable

IPv4RoutingTable: Stores the routing table.

IRoutingTable: This module interface provides an abstraction for different routing tables.

Source:
ipv4: <"IPv4RoutingTable"> like IRoutingTable if enableIPv4 {
    @display("p=50,50;is=s");
    forwarding = parent.forwarding;
    multicastForwarding = parent.multicastForwarding;
} ipv6 : like IRoutingTable

IPv6RoutingTable: IPv6 Routing Table and Neighbour Discovery data structures.

IRoutingTable: This module interface provides an abstraction for different routing tables.

Source:
ipv6: <"IPv6RoutingTable"> like IRoutingTable if enableIPv6 {
    @display("p=50,100;is=s");
    forwarding = parent.forwarding;
    multicastForwarding = parent.multicastForwarding;
} generic : like IRoutingTable

GenericRoutingTable: This module stores generic routes used by the generic network protocol.

IRoutingTable: This module interface provides an abstraction for different routing tables.

Source:
generic: <"GenericRoutingTable"> like IRoutingTable if enableGeneric {
    @display("p=50,150;is=s");
    forwarding = parent.forwarding;
    multicastForwarding = parent.multicastForwarding;
}

Usage diagram

The following diagram shows usage relationships between types. Unresolved types are missing from the diagram.

Inheritance diagram

The following diagram shows inheritance relationships for this type. Unresolved types are missing from the diagram.

Parameters

Name Type Default value Description
interfaceTableModule string
enableIPv4 bool haveClass("inet::IPv4RoutingTable")
enableIPv6 bool haveClass("inet::IPv6RoutingTable")
enableGeneric bool haveClass("inet::GenericRoutingTable")
forwarding bool
multicastForwarding bool

Properties

Name Value Description
display i=block/table

Source code

//
// This module supports multiple different routing tables simultaneously.
// The actual routes are stored in the submodule routing tables and they
// are accessed directly by modules.
//
module MultiRoutingTable like IRoutingTable
{
    parameters:
        string interfaceTableModule;
        *.interfaceTableModule = default(absPath(this.interfaceTableModule));
        @display("i=block/table");
        bool enableIPv4 = default(haveClass("inet::IPv4RoutingTable"));
        bool enableIPv6 = default(haveClass("inet::IPv6RoutingTable"));
        bool enableGeneric = default(haveClass("inet::GenericRoutingTable"));
        bool forwarding;
        bool multicastForwarding;

    submodules:
        ipv4: <"IPv4RoutingTable"> like IRoutingTable if enableIPv4 {
            @display("p=50,50;is=s");
            forwarding = parent.forwarding;
            multicastForwarding = parent.multicastForwarding;
        }
        ipv6: <"IPv6RoutingTable"> like IRoutingTable if enableIPv6 {
            @display("p=50,100;is=s");
            forwarding = parent.forwarding;
            multicastForwarding = parent.multicastForwarding;
        }
        generic: <"GenericRoutingTable"> like IRoutingTable if enableGeneric {
            @display("p=50,150;is=s");
            forwarding = parent.forwarding;
            multicastForwarding = parent.multicastForwarding;
        }
}
File: src/inet/networklayer/multi/MultiRoutingTable.ned