#include <IPTrafGen.h>
Inheritance diagram for IPTrafGen:

Protected Member Functions | |
| virtual IPvXAddress | chooseDestAddr () |
| virtual void | sendPacket () |
| virtual int | numInitStages () const |
| virtual void | initialize (int stage) |
| virtual void | handleMessage (cMessage *msg) |
Protected Attributes | |
| std::string | nodeName |
| int | protocol |
| int | msgByteLength |
| int | numPackets |
| std::vector< IPvXAddress > | destAddresses |
| int | numSent |
Static Protected Attributes | |
| static int | counter |
|
|
00126 {
00127 int k = intrand(destAddresses.size());
00128 return destAddresses[k];
00129 }
|
|
|
Reimplemented from IPTrafSink. 00170 {
00171 if (msg->isSelfMessage())
00172 {
00173 // send, then reschedule next sending
00174 sendPacket();
00175
00176 if (numSent<numPackets)
00177 scheduleAt(simTime()+(double)par("packetInterval"), msg);
00178 }
00179 else
00180 {
00181 // process incoming packet
00182 processPacket(msg);
00183 }
00184
00185 if (ev.isGUI())
00186 {
00187 char buf[40];
00188 sprintf(buf, "rcvd: %d pks\nsent: %d pks", numReceived, numSent);
00189 displayString().setTagArg("t",0,buf);
00190 }
00191 }
|
|
|
00094 {
00095 // because of IPAddressResolver, we need to wait until interfaces are registered,
00096 // address auto-assignment takes place etc.
00097 if (stage!=3)
00098 return;
00099
00100 IPTrafSink::initialize();
00101
00102 protocol = par("protocol");
00103 msgByteLength = par("packetLength");
00104 numPackets = par("numPackets");
00105 simtime_t startTime = par("startTime");
00106
00107 const char *destAddrs = par("destAddresses");
00108 cStringTokenizer tokenizer(destAddrs);
00109 const char *token;
00110 while ((token = tokenizer.nextToken())!=NULL)
00111 destAddresses.push_back(IPAddressResolver().resolve(token));
00112
00113 counter = 0;
00114
00115 numSent = 0;
00116 WATCH(numSent);
00117
00118 if (destAddresses.empty())
00119 return;
00120
00121 cMessage *timer = new cMessage("sendTimer");
00122 scheduleAt(startTime, timer);
00123 }
|
|
|
00068 {return 4;}
|
|
|
00132 {
00133 char msgName[32];
00134 sprintf(msgName,"appData-%d", counter++);
00135
00136 cMessage *payload = new cMessage(msgName);
00137 payload->setByteLength(msgByteLength);
00138
00139 IPvXAddress destAddr = chooseDestAddr();
00140 if (!destAddr.isIPv6())
00141 {
00142 // send to IPv4
00143 IPControlInfo *controlInfo = new IPControlInfo();
00144 controlInfo->setDestAddr(destAddr.get4());
00145 controlInfo->setProtocol(protocol);
00146 payload->setControlInfo(controlInfo);
00147
00148 EV << "Sending packet: ";
00149 printPacket(payload);
00150
00151 send(payload, "to_ip");
00152 }
00153 else
00154 {
00155 // send to IPv6
00156 IPv6ControlInfo *controlInfo = new IPv6ControlInfo();
00157 controlInfo->setDestAddr(destAddr.get6());
00158 controlInfo->setProtocol(protocol);
00159 payload->setControlInfo(controlInfo);
00160
00161 EV << "Sending packet: ";
00162 printPacket(payload);
00163
00164 send(payload, "to_ipv6");
00165 }
00166 numSent++;
00167 }
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1.4.1