ExtUpperIpv4NetworkLayer

Package: inet.emulation.networklayer.ipv4

ExtUpperIpv4NetworkLayer

compound module

(no description)

configurator : Ipv4NodeConfigurator

This module has one instance per network node, and it acts like a bridge between the node and the...

Source:
configurator: Ipv4NodeConfigurator {
    parameters:
        @display("p=100,100;is=s");
} routingTable : Ipv4RoutingTable

Stores the routing table.

Source:
routingTable: Ipv4RoutingTable {
    parameters:
        @display("p=100,200;is=s");
} ip : like IIpv4

Source:
ip: <default("ExtUpperIpv4")> like IIpv4 {
    parameters:
        @display("p=500,100");
} arp : like IArp

Arp: Implements the Address Resolution Protocol for IPv4 and IEEE 802 6-byte MAC addresses.

Source:
arp: <default("Arp")> like IArp {
    parameters:
        @display("p=200,100;q=pendingQueue");
} lp : MessageDispatcher

This module connects multiple applications, protocols and interfaces with each other and...

Source:
lp: MessageDispatcher {
    parameters:
        @display("p=350,200;b=600,5");
}

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

Properties

Name Value Description
display i=block/fork

Gates

Name Direction Size Description
ifIn input
ifOut output
transportIn input
transportOut output

Unassigned submodule parameters

Name Type Default value Description
configurator.interfaceTableModule string

The path to the InterfaceTable module

configurator.routingTableModule string
configurator.networkConfiguratorModule string "configurator"

TODO eventually rename to networkConfigurator

configurator.configureRoutingTable bool true

add routing entries to routing table (uses the configurator module)

routingTable.interfaceTableModule string

The path to the InterfaceTable module

routingTable.routerId string "auto"

for routers, the router id using IPv4 address dotted notation; specify "auto" to select the highest interface address; should be left empty ("") for hosts

routingTable.netmaskRoutes string "*"

maintain netmask routes for interfaces

routingTable.forwarding bool true

turns IP forwarding on/off

routingTable.multicastForwarding bool false

turns multicast forwarding on/off

routingTable.useAdminDist bool false

Use Cisco like administrative distances

routingTable.routingFile string ""

routing table file name

lp.displayStringTextFormat string "processed %p pk (%l)"

determines the text that is written on top of the submodule

lp.forwardServiceRegistration bool true
lp.forwardProtocolRegistration bool true

Source code

module ExtUpperIpv4NetworkLayer like INetworkLayer
{
    parameters:
        string interfaceTableModule;
        *.interfaceTableModule = default(absPath(this.interfaceTableModule));
        *.routingTableModule = default(absPath(".routingTable"));
        @display("i=block/fork");

    gates:
        input ifIn @labels(INetworkHeader);
        output ifOut @labels(INetworkHeader);
        input transportIn @labels(Ipv4ControlInfo/down);
        output transportOut @labels(Ipv4ControlInfo/up);

    submodules:
        configurator: Ipv4NodeConfigurator {
            parameters:
                @display("p=100,100;is=s");
        }
        routingTable: Ipv4RoutingTable {
            parameters:
                @display("p=100,200;is=s");
        }
        ip: <default("ExtUpperIpv4")> like IIpv4 {
            parameters:
                @display("p=500,100");
        }
        arp: <default("Arp")> like IArp {
            parameters:
                @display("p=200,100;q=pendingQueue");
        }
        lp: MessageDispatcher {
            parameters:
                @display("p=350,200;b=600,5");
        }

    connections allowunconnected:
        arp.ifOut --> lp.in++;
        arp.ifIn <-- lp.out++;

        ip.queueOut --> lp.in++;
        ip.queueIn <-- lp.out++;

        lp.out++ --> { @display("m=s"); } --> ifOut;
        lp.in++ <-- { @display("m=s"); } <-- ifIn;
}

File: src/inet/emulation/networklayer/ipv4/ExtUpperIpv4NetworkLayer.ned