12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455 |
- package inet.examples.ospfv2.areatests;
- import inet.common.misc.ThruputMeteringChannel;
- import inet.linklayer.ethernet.EtherHub;
- import inet.node.inet.StandardHost;
- import inet.node.ospfv2.OSPFRouter;
- module TestArea
- {
- parameters:
- @display("p=10,10;b=412,316");
- int numHosts = default(3);
- int extGates = default(0);
- gates:
- inout ethg[extGates];
- types:
- channel C extends ThruputMeteringChannel
- {
- delay = 0.1us;
- datarate = 100Mbps;
- thruputDisplayFormat = "#N";
- }
- submodules:
- H[numHosts]: StandardHost {
- @display("i=device/laptop");
- }
- N[numHosts]: EtherHub;
- R[numHosts]: OSPFRouter;
- B[extGates]: OSPFRouter;
- connections:
- // host to router links
- for i=0..numHosts-1 {
- H[i].ethg++ <--> C <--> N[i].ethg++;
- R[i].ethg++ <--> C <--> N[i].ethg++;
- }
- // towards other areas
- for i=0..extGates-1 {
- ethg[i] <--> B[i].ethg++;
- }
- // ring of routers
- for i=1..numHosts-1 {
- R[i].ethg++ <--> C <--> R[i-1].ethg++;
- }
- for i=1..extGates-1 {
- B[i].ethg++ <--> C <--> B[i-1].ethg++;
- }
- R[0].ethg++ <--> C <--> R[numHosts-1].ethg++ if numHosts > 2 && extGates == 0;
- B[0].ethg++ <--> C <--> B[extGates-1].ethg++ if numHosts == 0 && extGates > 2;
- R[0].ethg++ <--> C <--> B[extGates-1].ethg++ if numHosts > 0 && extGates > 0;
- B[0].ethg++ <--> C <--> R[numHosts-1].ethg++ if numHosts > 0 && extGates > 0 && (numHosts+extGates > 2);
- }
|