Compound Module TunOutRouter

File: Underlay/TunOut/TunOutRouter.ned

(no description)

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

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 (no description)
TunOutDevice (no description)
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.

TunOutUnderlay (no description)
TunOutTestNet (no description)

Parameters:

Name Type Description
parser string
routingFile string

Gates:

Name Direction Description
in [ ] input
out [ ] output

Unassigned submodule parameters:

Name Type Description
tunOut.mtu numeric

Source code:

module TunOutRouter
    parameters:
        parser: string,
        routingFile: string;

    gates:
        in: in[];
        out: out[];

    submodules:
        notificationBoard: NotificationBoard;
            display: "p=60,80;i=block/control";
        interfaceTable: InterfaceTable;
            display: "p=60,150;i=block/table";
        routingTable: RoutingTable;
            parameters:
                IPForward = true,
                routerId = "",
                routingFile = routingFile;
            display: "p=60,220;i=block/table";
        networkLayer: NetworkLayer;
            parameters:
                proxyARP = false;
            gatesizes:
                physIn[sizeof(out)+sizeof(ethOut)+1],
                physOut[sizeof(out)+sizeof(ethOut)+1];
            display: "p=250,220;i=block/fork;q=queue";
        ppp: PPPInterface[sizeof(out)];
            display: "p=250,310,row,90;q=txQueue;i=block/ifcard";
        tunOut: TunOutDevice;
            display: "p=94,358;i=misc/globe";
        packetParser: parser like PacketParser;
            display: "p=171,78;i=block/wheelbarrow";
    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;
        tunOut.netwIn <-- networkLayer.ifOut[sizeof(out)];
        tunOut.netwOut --> networkLayer.ifIn[sizeof(out)];

endmodule