File Underlay/SingleHostUnderlay/SingleHost.ned
Contains:
import
"NotificationBoard",
"InterfaceTable",
"RoutingTable",
"Overlay",
"BootstrapList",
"Tiers",
"UDP",
"NetworkLayer",
"PingApp",
"RealworldDevice",
"PacketParser",
"PingCache";
module SingleHost
parameters:
IPForward: bool,
outDeviceType: string,
overlayType: string,
tier1Type: string,
tier2Type: string,
tier3Type: string,
numTiers: numeric const,
parser: string,
appParser: string,
routingFile: string;
gates:
in: overlayNeighborArrowIn[];
out: overlayNeighborArrowOut[];
submodules:
notificationBoard: NotificationBoard;
display: "p=68,136;i=block/control";
interfaceTable: InterfaceTable;
display: "p=68,206;i=block/table";
routingTable: RoutingTable;
parameters:
IPForward = IPForward,
routerId = "",
routingFile = routingFile;
display: "p=68,276;i=block/table";
packetParser: parser like PacketParser;
display: "p=171,278;i=block/wheelbarrow";
applicationParser: appParser like PacketParser;
display: "p=171,348;i=block/wheelbarrow";
tier3: tier3Type like Tier;
display: "p=64,56;i=block/segm";
tier2: tier2Type like Tier;
display: "p=131,56;i=block/segm";
tier1: tier1Type like Tier;
display: "p=202,58;i=block/segm";
overlay: overlayType like Overlay;
display: "p=266,128;i=block/network2";
udp: UDP;
display: "p=266,198;i=block/transport";
networkLayer: NetworkLayer;
parameters:
proxyARP = false;
gatesizes:
ifIn[1],
ifOut[1];
display: "p=266,268;i=block/fork;q=queue";
outDev: outDeviceType like RealworldDevice;
display: "p=266,358,row,90;q=txQueue;i=block/ifcard";
pingCache: PingCache;
display: "p=68,352;i=block/table";
bootstrapList: BootstrapList;
display: "p=176,208;i=block/table";
connections nocheck:
tier1.to_lowerTier --> overlay.from_app if numTiers > 0;
tier1.from_lowerTier <-- overlay.to_app if numTiers > 0;
tier1.to_udp --> udp.from_app++ if numTiers > 0;
udp.to_app++ --> tier1.from_udp if numTiers > 0;
tier2.to_lowerTier --> tier1.from_upperTier if numTiers > 1;
tier2.from_lowerTier <-- tier1.to_upperTier if numTiers > 1;
tier2.to_udp --> udp.from_app++ if numTiers > 1;
udp.to_app++ --> tier2.from_udp if numTiers > 1;
tier3.to_lowerTier --> tier2.from_upperTier if numTiers > 2;
tier3.from_lowerTier <-- tier2.to_upperTier if numTiers > 2;
tier3.to_udp --> udp.from_app++ if numTiers > 2;
udp.to_app++ --> tier3.from_udp if numTiers > 2;
overlay.to_udp --> udp.from_app++;
overlay.from_udp <-- udp.to_app++;
udp.to_ip --> networkLayer.UDPIn;
udp.from_ip <-- networkLayer.UDPOut;
outDev.netwOut --> networkLayer.ifIn[0];
outDev.netwIn <-- networkLayer.ifOut[0];
display: "b=330,410";
endmodule