File Underlay/TunOut/TunOutRouter.ned
Contains:
import
"NotificationBoard",
"InterfaceTable",
"RoutingTable",
"NetworkLayer",
"PPPInterface",
"TunOutDevice";
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:
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