File Underlay/SimpleUnderlay/SimpleOverlayHost.ned
Contains:
import
"NotificationBoard",
"InterfaceTable",
"Overlay",
"BootstrapList",
"Tiers",
"SimpleUDP",
"NeighborCache";
module SimpleOverlayHost
parameters:
IPForward: bool,
overlayType: string,
tier1Type: string,
tier2Type: string,
tier3Type: string,
numTiers: numeric const,
routingFile: string;
gates:
in: overlayNeighborArrowIn[];
out: overlayNeighborArrowOut[];
out: out;
submodules:
notificationBoard: NotificationBoard;
display: "p=172,296;i=block/control";
tier3: tier3Type like Tier;
display: "p=64,64;i=block/segm";
tier2: tier2Type like Tier;
display: "p=179,104;i=block/segm";
tier1: tier1Type like Tier;
display: "p=290,162;i=block/segm";
overlay: overlayType like Overlay;
display: "p=370,216;i=block/network2";
udp: SimpleUDP;
display: "p=370,342;i=block/transport";
interfaceTable: InterfaceTable;
display: "p=76,294;i=block/table";
neighborCache: NeighborCache;
display: "p=76,224;i=block/table";
bootstrapList: BootstrapList;
display: "p=168,224;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++;
bootstrapList.to_udp --> udp.from_app++;
bootstrapList.from_udp <-- udp.to_app++;
display: "b=433,386";
endmodule