File Underlay/IPv4Underlay/TunOutRouter.ned
Contains:
import
"Tiers",
"NotificationBoard",
"InterfaceTable",
"RoutingTable",
"PacketParser",
"PPPInterface",
"TunOutDevice",
"NetworkLayer";
module TunOutRouter
parameters:
parser: string,
routingFile: string;
gates:
in: in[];
out: out[];
submodules:
notificationBoard: NotificationBoard;
display: "p=60,60;i=block/control";
interfaceTable: InterfaceTable;
display: "p=150,60;i=block/table";
routingTable: RoutingTable;
parameters:
IPForward = true,
routerId = "auto",
routingFile = routingFile;
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:
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