File Underlay/IPv4Underlay/OverlayHost.ned
Contains:
import
"NotificationBoard",
"InterfaceTable",
"RoutingTable",
"Overlay",
"OverlayApp",
"UDP",
"NetworkLayer",
"PingApp",
"PPPInterface",
"TestApp";
module OverlayHost
parameters:
IPForward : bool,
overlayType : string,
overlayAppType : string,
routingFile : string;
gates:
in: in[],
overlayNeighborArrowIn[];
out: out[],
overlayNeighborArrowOut[];
submodules:
notificationBoard: NotificationBoard;
display: "p=60,80;i=block/control";
interfaceTable: InterfaceTable;
display: "p=60,150;i=block/table";
routingTable: RoutingTable;
parameters:
IPForward = IPForward,
routerId = "",
routingFile = routingFile;
display: "p=60,220;i=block/table";
app: overlayAppType like OverlayApp;
display: "p=250,10;i=block/segm";
overlay: overlayType like Overlay
display: "p=250,80;i=block/network2";
udp: UDP;
display: "p=250,150;i=block/transport";
networkLayer: NetworkLayer;
parameters:
proxyARP = false;
gatesizes:
ifIn[sizeof(out)+sizeof(ethOut)],
ifOut[sizeof(out)+sizeof(ethOut)];
display: "p=250,220;i=block/fork;q=queue";
ppp: PPPInterface[sizeof(out)];
display: "p=250,310,row,90;q=txQueue;i=block/ifcard";
connections nocheck:
app.to_overlay --> overlay.from_app;
app.from_overlay <-- overlay.to_app;
overlay.to_udp --> udp.from_app++;
overlay.from_udp <-- udp.to_app++;
udp.to_ip --> networkLayer.UDPIn;
udp.from_ip <-- networkLayer.UDPOut;
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;
endmodule