Compound Module TunOutRouter

File: Underlay/IPv4Underlay/TunOutRouter.ned

TunOut router.

notificationBoard: NotificationBoard interfaceTable: InterfaceTable routingTable: RoutingTable packetParser: parser like PacketParser networkLayer: NetworkLayer ppp: PPPInterface tunDev: TunOutDevice

Usage diagram:

The following diagram shows usage relationships between modules, networks and channels. Unresolved module (and channel) types are missing from the diagram. Click here to see the full picture.

Contains the following modules:

If a module type shows up more than once, that means it has been defined in more than one NED file.

PacketParser

Module that performs parsing of the payload of packets that are send to or received by the tun device

TunOutDevice

TunOutDevice is a pseudo interface that allows communication with the real world through the TunOutScheduler WARNING: This does ONLY work with the combination IPv4|UDP|OverlayMessage

NotificationBoard (unknown -- not in documented files)
InterfaceTable (unknown -- not in documented files)
RoutingTable (unknown -- not in documented files)
NetworkLayer (unknown -- not in documented files)
PPPInterface (unknown -- not in documented files)

Used in compound modules:

If a module type shows up more than once, that means it has been defined in more than one NED file.

IPv4Underlay

The IPv4Underlay ned-file

See also: IPv4UnderlayConfigurator

Parameters:

Name Type Description
parser string

name of the PacketParser to use

routingFile string

use predefined routing file if given

Gates:

Name Direction Description
in [ ] input

incoming gates to router

out [ ] output

outgoing gates to network or host

Unassigned submodule parameters:

Name Type Description
tunDev.mtu numeric

maximum transmission unit of the underlaying network

Source code:

module TunOutRouter
    parameters:
        parser: string, // name of the PacketParser to use
        routingFile: string; // use predefined routing file if given
    gates:
        in: in[]; // incoming gates to router
        out: out[]; // outgoing gates to network or host
    submodules:
        notificationBoard: NotificationBoard;
            display: "p=60,60;i=block/control";
        interfaceTable: InterfaceTable;
            display: "p=150,60;i=block/table";
        routingTable: RoutingTable;
            parameters:
                IPForward = true, // true if ip packets should be forwarded
                routerId = "auto", // id of the router
                routingFile = routingFile; // use predefined routing file if given
            display: "p=240,60;i=block/table";
        packetParser: parser like PacketParser;
            display: "p=59,126;i=block/wheelbarrow";
        networkLayer: NetworkLayer;
            gatesizes:
                ifIn[sizeof(out)+1],
                ifOut[sizeof(out)+1];
            display: "p=200,141;i=block/fork;q=queue";
        ppp: PPPInterface[sizeof(out)];
            display: "p=90,257,row,110;q=l2queue;i=block/ifcard";
        tunDev: TunOutDevice;
            display: "p=145,257,row,110;q=l2queue;i=block/ifcard";
    connections nocheck:
        // connections to network outside
        for i=0..sizeof(out)-1 do
            in[i] --> ppp[i].physIn;
            out[i] <-- ppp[i].physOut;
            ppp[i].netwOut --> networkLayer.ifIn[i];
            ppp[i].netwIn <-- networkLayer.ifOut[i];
        endfor;

        tunDev.netwOut --> networkLayer.ifIn[sizeof(out)];
        tunDev.netwIn <-- networkLayer.ifOut[sizeof(out)];
endmodule