#include <gaf.h>
Inheritance diagram for GAFAgent:


Definition at line 142 of file gaf.h.
Public Member Functions | |
| nsaddr_t & | addr () |
| virtual void | attachApp (Application *app) |
| virtual void | close () |
| virtual void | connect (nsaddr_t dst) |
| nsaddr_t & | daddr () |
| virtual void | debug (const char *fmt,...) |
| nsaddr_t & | dport () |
| virtual void | drop (Packet *p) |
| GAFAgent (nsaddr_t id) | |
| packet_t | get_pkttype () |
| int | isdebug () const |
| virtual void | listen () |
| double | myttl () |
| u_int32_t | nodeid () |
| nsaddr_t & | port () |
| virtual void | recv (Packet *p, const char *s) |
| virtual void | recv (Packet *, Handler *) |
| void | recvOnly (Packet *) |
| virtual void | send (int nbytes) |
| virtual void | send (int sz, AppData *data) |
| void | send (Packet *p, Handler *h) |
| virtual void | sendmsg (int nbytes, const char *flags=0) |
| virtual void | sendmsg (int sz, AppData *, const char *flags=0) |
| virtual void | sendto (int nbytes, const char *flags, ns_addr_t dst) |
| virtual void | sendto (int nbytes, const char *flags, nsaddr_t dst) |
| virtual void | sendto (int sz, AppData *, const char *flags, ns_addr_t dst) |
| virtual void | sendto (int sz, AppData *, const char *flags, nsaddr_t dst) |
| void | set_pkttype (packet_t pkttype) |
| void | setDropTarget (NsObject *dt) |
| virtual int & | size () |
| void | target (NsObject *target) |
| NsObject * | target () |
| virtual void | timeout (int tno) |
| void | timeout (GafMsgType) |
Protected Member Functions | |
| void | addAgentTrace (const char *name) |
| Packet * | allocpkt (int) const |
| Packet * | allocpkt () const |
| int | command (int argc, const char *const *argv) |
| virtual int | delay_bind_dispatch (const char *varName, const char *localName, TclObject *tracer) |
| virtual void | delay_bind_init_all () |
| void | deleteAgentTrace () |
| virtual void | drop (Packet *p, const char *s) |
| void | dumpTracedVars () |
| void | duty_timeout () |
| void | handle (Event *) |
| virtual void | idle () |
| void | initpkt (Packet *) const |
| void | insertOldValue (TracedVar *v, const char *value) |
| OldValue * | lookupOldValue (TracedVar *v) |
| void | makeUpDiscoveryMsg (Packet *p) |
| void | monitorAgentTrace () |
| void | node_off () |
| void | node_on () |
| void | processDiscoveryMsg (Packet *p) |
| virtual void | recvBytes (int bytes) |
| virtual void | reset () |
| void | schedule_wakeup (struct DiscoveryMsg) |
| void | send_discovery () |
| void | setGAFstate (GafNodeState) |
| virtual void | trace (TracedVar *v) |
| virtual void | trace_event (char *eventtype) |
Protected Attributes | |
| int | adapt_mobility_ |
| Application * | app_ |
| double | beacon_ |
| Tcl_Channel | channel_ |
| int | debug_ |
| int | defttl_ |
| NsObject * | drop_ |
| ns_addr_t | dst_ |
| GAFDutyTimer | dtimer_ |
| EventTrace * | et_ |
| int | fid_ |
| int | flags_ |
| int | gid_ |
| ns_addr_t | here_ |
| int | leader_settime_ |
| int | maxttl_ |
| int | nid_ |
| OldValue * | oldValueList_ |
| int | prio_ |
| int | randomflag_ |
| int | seqno_ |
| int | size_ |
| GafNodeState | state_ |
| GAFSelectTimer | stimer_ |
| NsObject * | target_ |
| Node * | thisnode |
| GAFDiscoverTimer | timer_ |
| char * | traceName_ |
| packet_t | type_ |
Static Protected Attributes | |
| static int | uidcnt_ |
|
|
Definition at line 94 of file gaf.cc. References Node::get_node_by_address(), God::getMyGrid(), gid_, God::instance(), nid_, seqno_, and thisnode. 00094 : Agent(PT_GAF), beacon_(1), randomflag_(1), timer_(this), stimer_(this), dtimer_(this), maxttl_(5), state_(GAF_FREE),leader_settime_(0),adapt_mobility_(0) 00095 { 00096 double x = 0.0, y = 0.0, z = 0.0; 00097 00098 seqno_ = -1; 00099 nid_ = id; 00100 thisnode = Node::get_node_by_address(nid_); 00101 // gid_ = nid_; // temporary setting, MUST BE RESET 00102 00103 // grid caculation 00104 // no need to update location becasue getLoc will do it 00105 00106 ((MobileNode *)thisnode)->getLoc(&x, &y, &z); 00107 gid_ = God::instance()->getMyGrid(x,y); 00108 00109 if (gid_ < 0) { 00110 printf("fatal error: node is outside topography\n"); 00111 } 00112 }
Here is the call graph for this function: ![]() |
|
|
Definition at line 326 of file agent.cc. References ns_addr_t::addr_, Agent::channel_, Scheduler::clock(), Agent::dst_, Agent::here_, Scheduler::instance(), TIME_FORMAT, and Agent::traceName_. Referenced by Agent::command(). 00327 { 00328 char wrk[256]; 00329 int n; 00330 double curTime = (&Scheduler::instance() == NULL ? 0 : 00331 Scheduler::instance().clock()); 00332 00333 sprintf(wrk, "a -t "TIME_FORMAT" -s %d -d %d -n %s", 00334 curTime, here_.addr_, dst_.addr_, name); 00335 n = strlen(wrk); 00336 wrk[n] = '\n'; 00337 wrk[n+1] = 0; 00338 if (channel_) 00339 (void)Tcl_Write(channel_, wrk, n+1); 00340 // keep agent trace name 00341 if (traceName_ != NULL) 00342 delete[] traceName_; 00343 traceName_ = new char[strlen(name)+1]; 00344 strcpy(traceName_, name); 00345 }
Here is the call graph for this function: ![]() |
|
|
|
Definition at line 528 of file agent.cc. References Packet::allocdata(), and Agent::allocpkt(). 00529 { 00530 Packet* p = allocpkt(); 00531 00532 if (n > 0) 00533 p->allocdata(n); 00534 00535 return(p); 00536 }
Here is the call graph for this function: ![]() |
|
|
|
Definition at line 372 of file agent.cc. References Agent::app_. Referenced by WormApp::command(), HttpMInvalCache::command(), Application::command(), TcpApp::TcpApp(), and TcpApp::~TcpApp(). 00373 { 00374 app_ = app; 00375 }
|
|
|
Reimplemented in FullTcpAgent. Definition at line 377 of file agent.cc. Referenced by Agent::command().
|
|
||||||||||||
|
Reimplemented from Agent. Definition at line 412 of file gaf.cc. References adapt_mobility_, Agent::command(), GAF_STARTUP_JITTER, gafjitter(), maxttl_, TimerHandler::resched(), and timer_. 00413 { 00414 if (argc == 2) { 00415 if (strcmp (argv[1], "start-gaf") == 0) { 00416 // schedule the discovery timer randomly 00417 timer_.resched(gafjitter(GAF_STARTUP_JITTER, 1)); 00418 // schedule the select phase after certain time 00419 // of discovery msg exchange, as fast as possible 00420 // stimer_.resched(Random::uniform(GAF_LEADER_JITTER,GAF_LEADER_JITTER+1)); 00421 00422 return (TCL_OK); 00423 } 00424 00425 } 00426 if (argc == 3) { 00427 if (strcmp(argv[1], "adapt-mobility") == 0) { 00428 adapt_mobility_ = atoi(argv[2]); 00429 //timer_.resched(Random::uniform(0, beacon_)); 00430 return TCL_OK; 00431 } 00432 00433 if (strcmp(argv[1], "maxttl") == 0) { 00434 maxttl_ = atoi(argv[2]); 00435 return TCL_OK; 00436 } 00437 00438 } 00439 return (Agent::command(argc, argv)); 00440 }
Here is the call graph for this function: ![]() |
|
|
Definition at line 389 of file agent.cc. Referenced by Agent::command().
|
|
|
||||||||||||
|
Definition at line 102 of file object.cc. References NsObject::debug_. 00103 { 00104 if (!debug_) 00105 return; 00106 va_list ap; 00107 va_start(ap, fmt); 00108 vprintf(fmt, ap); 00109 }
|
|
||||||||||||||||
|
Reimplemented from NsObject. Reimplemented in BayFullTcpAgent, LDPAgent, HbAfterRtoSctpAgent, MfrHbAfterRtoSctpAgent, MfrTimestampSctpAgent, MultipleFastRtxSctpAgent, NewRenoSctpAgent, TimestampSctpAgent, SctpAgent, FullTcpAgent, SackFullTcpAgent, RFC793eduTcpAgent, TcpSink, TcpAgent, VegasTcpAgent, XcpAgent, and XcpSink. Definition at line 93 of file agent.cc. References ns_addr_t::addr_, Agent::defttl_, NsObject::delay_bind_dispatch(), Agent::dst_, Agent::fid_, Agent::flags_, Agent::here_, ns_addr_t::port_, and Agent::prio_. Referenced by XcpSink::delay_bind_dispatch(), TcpAgent::delay_bind_dispatch(), TcpSink::delay_bind_dispatch(), SctpAgent::delay_bind_dispatch(), and LDPAgent::delay_bind_dispatch(). 00094 { 00095 if (delay_bind(varName, localName, "agent_addr_", (int*)&(here_.addr_), tracer)) return TCL_OK; 00096 if (delay_bind(varName, localName, "agent_port_", (int*)&(here_.port_), tracer)) return TCL_OK; 00097 if (delay_bind(varName, localName, "dst_addr_", (int*)&(dst_.addr_), tracer)) return TCL_OK; 00098 if (delay_bind(varName, localName, "dst_port_", (int*)&(dst_.port_), tracer)) return TCL_OK; 00099 if (delay_bind(varName, localName, "fid_", (int*)&fid_, tracer)) return TCL_OK; 00100 if (delay_bind(varName, localName, "prio_", (int*)&prio_, tracer)) return TCL_OK; 00101 if (delay_bind(varName, localName, "flags_", (int*)&flags_, tracer)) return TCL_OK; 00102 if (delay_bind(varName, localName, "ttl_", &defttl_, tracer)) return TCL_OK; 00103 if (delay_bind(varName, localName, "class_", (int*)&fid_, tracer)) return TCL_OK; 00104 return Connector::delay_bind_dispatch(varName, localName, tracer); 00105 }
Here is the call graph for this function: ![]() |
|
|
Reimplemented from NsObject. Reimplemented in BayFullTcpAgent, LDPAgent, HbAfterRtoSctpAgent, MfrHbAfterRtoSctpAgent, MfrTimestampSctpAgent, MultipleFastRtxSctpAgent, NewRenoSctpAgent, TimestampSctpAgent, SctpAgent, FullTcpAgent, SackFullTcpAgent, RFC793eduTcpAgent, TcpSink, TcpAgent, VegasTcpAgent, XcpAgent, and XcpSink. Definition at line 78 of file agent.cc. References NsObject::delay_bind_init_all(). Referenced by XcpSink::delay_bind_init_all(), TcpAgent::delay_bind_init_all(), TcpSink::delay_bind_init_all(), SctpAgent::delay_bind_init_all(), and LDPAgent::delay_bind_init_all(). 00079 { 00080 delay_bind_init_one("agent_addr_"); 00081 delay_bind_init_one("agent_port_"); 00082 delay_bind_init_one("dst_addr_"); 00083 delay_bind_init_one("dst_port_"); 00084 delay_bind_init_one("fid_"); 00085 delay_bind_init_one("prio_"); 00086 delay_bind_init_one("flags_"); 00087 delay_bind_init_one("ttl_"); 00088 delay_bind_init_one("class_"); 00089 Connector::delay_bind_init_all(); 00090 }
Here is the call graph for this function: ![]() |
|
|
Definition at line 222 of file agent.cc. References ns_addr_t::addr_, Agent::dst_, Agent::flushAVar(), Agent::here_, Scheduler::instance(), TIME_FORMAT, and Agent::traceName_. Referenced by Agent::command(). 00223 { 00224 char wrk[256]; 00225 00226 // XXX we don't know InstVar outside of Tcl! Is there any 00227 // tracedvars hidden in InstVar? If so, shall we have a tclclInt.h? 00228 TracedVar* var = tracedvar_; 00229 for ( ; var != 0; var = var->next_) 00230 flushAVar(var); 00231 00232 // we need to flush all var values to trace file, 00233 // so nam can do backtracing 00234 sprintf(wrk, "a -t "TIME_FORMAT" -s %d -d %d -n %s -x", 00235 Scheduler::instance().clock(), here_.addr_, 00236 dst_.addr_, traceName_); 00237 if (traceName_ != NULL) 00238 delete[] traceName_; 00239 traceName_ = NULL; 00240 }
Here is the call graph for this function: ![]() |
|
|
||||||||||||
|
Definition at line 114 of file connector.cc. References Connector::drop_, Packet::free(), and NsObject::recv(). 00115 { 00116 if (drop_ != 0) 00117 drop_->recv(p, s); 00118 else 00119 Packet::free(p); 00120 }
Here is the call graph for this function: ![]() |
|
|
|
|
|
|
Definition at line 387 of file gaf.cc. References GAF_NONSTART_JITTER, gafjitter(), God::getMyGrid(), gid_, God::instance(), node_on(), TimerHandler::resched(), send_discovery(), thisnode, and timer_. Referenced by timeout(). 00388 { 00389 double x=0.0, y=0.0, z=0.0; 00390 00391 // find where I am 00392 00393 ((MobileNode *)thisnode)->getLoc(&x, &y, &z); 00394 gid_ = God::instance()->getMyGrid(x,y); 00395 00396 00397 // wake up myself 00398 node_on(); 00399 00400 // send discovery first to try to find whether 00401 // there is a leader around me 00402 00403 send_discovery(); 00404 00405 // schedule the discovery timer randomly 00406 // can wait longer to get a chance to be replaced 00407 00408 timer_.resched(gafjitter(GAF_NONSTART_JITTER, 1)); 00409 00410 }
Here is the call graph for this function: ![]() |
|
|
Definition at line 104 of file agent.h. References Agent::type_. 00104 { return type_; }
|
|
|
Implements Handler. Reimplemented in LinkDelay, LL, AckRecons, and Snoop. Definition at line 91 of file object.cc. References NsObject::recv().
Here is the call graph for this function: ![]() |
|
|
Definition at line 363 of file agent.cc. References Agent::app_, and Application::resume(). Referenced by FullTcpAgent::foutput(), XcpAgent::output(), TcpAgent::output(), RFC793eduTcpAgent::output(), QSNewRenoTcpAgent::output(), IntTcpAgent::output(), BayFullTcpAgent::output(), UdpAgent::sendmsg(), SA_Agent::sendmsg(), RTPAgent::sendmsg(), MessagePassingAgent::sendmsg(), TPAgent::sendto(), and MessagePassingAgent::sendto().
Here is the call graph for this function: ![]() |
|
|
Definition at line 456 of file agent.cc. References hdr_nv::access(), hdr_flags::access(), hdr_ip::access(), hdr_cmn::access(), ns_addr_t::addr_, Scheduler::clock(), hdr_flags::cong_action_, hdr_ip::daddr(), Agent::defttl_, hdr_cmn::direction(), hdr_ip::dport(), Agent::dst_, hdr_flags::ecn_, hdr_flags::ecn_capable_, hdr_flags::ecn_to_echo_, hdr_flags::eln_, hdr_cmn::error(), Agent::fid_, hdr_ip::flowid(), hdr_flags::fs_, NixNode::GetNixVector(), NixNode::GetNodeObject(), hdr_nv::h_used, Agent::here_, hdr_cmn::iface(), Scheduler::instance(), hdr_flags::no_ts_, hdr_cmn::NONE, hdr_nv::nv(), hdr_ip::offset(), hdr_nv::offset(), ns_addr_t::port_, hdr_flags::pri_, hdr_ip::prio(), Agent::prio_, hdr_cmn::ptype(), hdr_flags::qs_, NixVec::Reset(), hdr_ip::saddr(), hdr_cmn::size(), Agent::size_, hdr_ip::sport(), hdr_cmn::timestamp(), hdr_ip::ttl(), Agent::type_, hdr_cmn::uid(), Agent::uidcnt_, UNKN_IFACE, and iface_literal::value(). Referenced by Agent::allocpkt(), and PingResponder::recv(). 00457 { 00458 hdr_cmn* ch = hdr_cmn::access(p); 00459 ch->uid() = uidcnt_++; 00460 ch->ptype() = type_; 00461 ch->size() = size_; 00462 ch->timestamp() = Scheduler::instance().clock(); 00463 ch->iface() = UNKN_IFACE.value(); // from packet.h (agent is local) 00464 ch->direction() = hdr_cmn::NONE; 00465 00466 ch->error() = 0; /* pkt not corrupt to start with */ 00467 00468 hdr_ip* iph = hdr_ip::access(p); 00469 iph->saddr() = here_.addr_; 00470 iph->sport() = here_.port_; 00471 iph->daddr() = dst_.addr_; 00472 iph->dport() = dst_.port_; 00473 00474 //DEBUG 00475 //if (dst_ != -1) 00476 // printf("pl break\n"); 00477 00478 iph->flowid() = fid_; 00479 iph->prio() = prio_; 00480 iph->ttl() = defttl_; 00481 00482 hdr_flags* hf = hdr_flags::access(p); 00483 hf->ecn_capable_ = 0; 00484 hf->ecn_ = 0; 00485 hf->eln_ = 0; 00486 hf->ecn_to_echo_ = 0; 00487 hf->fs_ = 0; 00488 hf->no_ts_ = 0; 00489 hf->pri_ = 0; 00490 hf->cong_action_ = 0; 00491 hf->qs_ = 0; 00492 #ifdef HAVE_STL 00493 00494 hdr_nv* nv = hdr_nv::access(p); 00495 if (0) 00496 printf("Off hdr_nv %d, ip_hdr %d myaddr %d\n", 00497 hdr_nv::offset(), hdr_ip::offset(), here_.addr_); 00498 NixNode* pNixNode = NixNode::GetNodeObject(here_.addr_); 00499 if (0) 00500 printf("Node Object %p\n", pNixNode); 00501 if (pNixNode) { 00502 // If we get non-null, indicates nixvector routing in use 00503 // Delete any left over nv in the packet 00504 // Get a nixvector to the target (may create new) 00505 NixVec* pNv = pNixNode->GetNixVector(dst_.addr_); 00506 pNv->Reset(); 00507 nv->nv() = pNv; // And set the nixvec in the packet 00508 nv->h_used = 0; // And reset used portion to 0 00509 } 00510 #endif //HAVE_STL 00511 }
Here is the call graph for this function: ![]() |
|
||||||||||||
|
Definition at line 250 of file agent.cc. References min, OldValue::next_, Agent::oldValueList_, TRACEVAR_MAXVALUELENGTH, OldValue::val_, and OldValue::var_. Referenced by Agent::trace(). 00251 { 00252 OldValue *p = new OldValue; 00253 assert(p != NULL); 00254 strncpy(p->val_, value, min(strlen(value)+1, TRACEVAR_MAXVALUELENGTH)); 00255 p->var_ = v; 00256 p->next_ = NULL; 00257 if (oldValueList_ == NULL) 00258 oldValueList_ = p; 00259 else { 00260 p->next_ = oldValueList_; 00261 oldValueList_ = p; 00262 } 00263 }
|
|
|
Definition at line 61 of file object.h. References NsObject::debug_. 00061 { return debug_; }
|
|
|
Reimplemented in BayFullTcpAgent, RapAgent, and FullTcpAgent. Definition at line 381 of file agent.cc. Referenced by Agent::command().
|
|
|
Definition at line 242 of file agent.cc. References OldValue::next_, Agent::oldValueList_, and OldValue::var_. Referenced by Agent::trace(). 00243 { 00244 OldValue *p = oldValueList_; 00245 while ((p != NULL) && (p->var_ != v)) 00246 p = p->next_; 00247 return p; 00248 }
|
|
|
Definition at line 464 of file gaf.cc. References hdr_cmn::access(), hdr_ip::access(), Packet::accessdata(), hdr_cmn::addr_type_, Packet::allocdata(), hdr_ip::daddr(), hdr_ip::dport(), GAF_LEADER, God::getMyGridSize(), gid_, God::instance(), Address::instance(), IP_BROADCAST, IP_HDR_LEN, leader_settime_, MIN_LIFETIME, myttl(), hdr_cmn::next_hop_, nid_, Address::nodeshift(), NOW, NS_AF_INET, hdr_cmn::size_, state_, DiscoveryMsg::stime, thisnode, and DiscoveryMsg::ttl. Referenced by send_discovery(). 00465 { 00466 hdr_ip *iph = hdr_ip::access(p); 00467 hdr_cmn *hdrc = hdr_cmn::access(p); 00468 u_int32_t ttl,stime; 00469 unsigned char *walk; 00470 double gridsize, speed; 00471 00472 // fill up the header 00473 hdrc->next_hop_ = IP_BROADCAST; 00474 hdrc->addr_type_ = NS_AF_INET; 00475 iph->daddr() = IP_BROADCAST << Address::instance().nodeshift(); 00476 iph->dport() = 254; 00477 00478 // hdrc->direction() = hdr_cmn::DOWN; 00479 00480 // fill up the data 00481 00482 p->allocdata(sizeof(DiscoveryMsg)); 00483 walk = p->accessdata (); 00484 hdrc->size_ = sizeof(DiscoveryMsg) + IP_HDR_LEN; // Existence Msg + IP 00485 00486 *(walk++) = gid_ >> 24; 00487 *(walk++) = (gid_ >> 16) & 0xFF; 00488 *(walk++) = (gid_ >> 8) & 0xFF; 00489 *(walk++) = (gid_ >> 0) & 0xFF; 00490 *(walk++) = nid_ >> 24; 00491 *(walk++) = (nid_ >> 16) & 0xFF; 00492 *(walk++) = (nid_ >> 8) & 0xFF; 00493 *(walk++) = (nid_ >> 0) & 0xFF; 00494 00495 // access my state 00496 00497 *(walk++) = state_ >> 24; 00498 *(walk++) = (state_ >> 16) & 0xFF; 00499 *(walk++) = (state_ >> 8) & 0xFF; 00500 *(walk++) = (state_ >> 0) & 0xFF; 00501 00502 00503 // ttl tells the receiver that how much longer the sender can 00504 // survive, cut it into half for the purpose of load balance 00505 00506 if (state_ == GAF_LEADER) { 00507 // must send real msg because I am the leader 00508 ttl = (int)(leader_settime_ - NOW); 00509 if (ttl < 0) ttl = 0; 00510 00511 } else { 00512 00513 if ((ttl = (u_int32_t)myttl()) > MIN_LIFETIME) { 00514 ttl = (u_int32_t) ttl/2; 00515 } 00516 00517 } 00518 *(walk++) = ttl >> 24; 00519 *(walk++) = (ttl >> 16) & 0xFF; 00520 *(walk++) = (ttl >> 8) & 0xFF; 00521 *(walk++) = (ttl >> 0) & 0xFF; 00522 00523 00524 // fill my possible time of leaving this grid 00525 00526 00527 speed = ((MobileNode*)thisnode)->speed(); 00528 00529 if (speed == 0) { 00530 // make stime big enough 00531 stime = 2*ttl; 00532 } else { 00533 gridsize = God::instance()->getMyGridSize(); 00534 stime = (u_int32_t) (gridsize/speed); 00535 } 00536 00537 *(walk++) = stime >> 24; 00538 *(walk++) = (stime >> 16) & 0xFF; 00539 *(walk++) = (stime >> 8) & 0xFF; 00540 *(walk++) = (stime >> 0) & 0xFF; 00541 00542 //printf("Node %d send out Exitence msg gid/nid %d %d\n", nid_, gid_, nid_); 00543 00544 }
Here is the call graph for this function: ![]() |
|
|
Definition at line 310 of file agent.cc. References ns_addr_t::addr_, Agent::channel_, Scheduler::clock(), Agent::here_, Scheduler::instance(), TIME_FORMAT, and Agent::traceName_. Referenced by Agent::command(). 00311 { 00312 char wrk[256]; 00313 int n; 00314 double curTime = (&Scheduler::instance() == NULL ? 0 : 00315 Scheduler::instance().clock()); 00316 00317 sprintf(wrk, "v -t "TIME_FORMAT" -e monitor_agent %d %s", 00318 curTime, here_.addr_, traceName_); 00319 n = strlen(wrk); 00320 wrk[n] = '\n'; 00321 wrk[n+1] = 0; 00322 if (channel_) 00323 (void)Tcl_Write(channel_, wrk, n+1); 00324 }
Here is the call graph for this function: ![]() |
|
|
Definition at line 283 of file gaf.cc. References Node::energy_model(), Node::ifhead(), thisnode, and DiscoveryMsg::ttl. Referenced by makeUpDiscoveryMsg(), processDiscoveryMsg(), and timeout(). 00284 { 00285 double ce,maxp; 00286 Phy *phyp; 00287 double ttl; 00288 00289 ce = (thisnode->energy_model())->energy(); 00290 00291 phyp = (thisnode->ifhead()).lh_first; 00292 00293 assert (phyp != 0); 00294 maxp = ((WirelessPhy *)phyp)->getPtconsume(); 00295 ttl = ce/maxp; 00296 00297 return ttl; 00298 00299 }
Here is the call graph for this function: ![]() |
|
|
Definition at line 548 of file gaf.cc. References Node::energy_model(), GAF_SLEEP, Node::ifhead(), EnergyModel::node_on(), setGAFstate(), and thisnode. Referenced by schedule_wakeup(). 00549 { 00550 Phy *p; 00551 EnergyModel *em; 00552 00553 //printf ("Node (%d %d) goes SLEEP from %d at %f\n",nid_, gid_, state_, Scheduler::instance().clock()); 00554 00555 00556 // if I am in the data transfer state, do not turn off 00557 00558 // if (state_ == GAF_TRAFFIC) return; 00559 00560 // set node state 00561 em = thisnode->energy_model(); 00562 em->node_on() = false; 00563 //((MobileNode *)thisnode->energy_model())->node_on() = false; 00564 00565 // notify phy 00566 p = (thisnode->ifhead()).lh_first; 00567 if (p) { 00568 ((WirelessPhy *)p)->node_off(); 00569 } 00570 // change agent state 00571 setGAFstate(GAF_SLEEP); 00572 }
Here is the call graph for this function: ![]() |
|
|
Definition at line 575 of file gaf.cc. References Node::energy_model(), GAF_FREE, Node::ifhead(), EnergyModel::node_on(), setGAFstate(), and thisnode. Referenced by duty_timeout(). 00576 { 00577 Phy *p; 00578 EnergyModel* em; 00579 00580 // set node state 00581 00582 em = thisnode->energy_model(); 00583 em->node_on() = true; 00584 00585 //(MobileNode *)thisnode->energy_model()->node_on() = true; 00586 00587 // notify phy 00588 00589 p = (thisnode->ifhead()).lh_first; 00590 if (p) { 00591 ((WirelessPhy *)p)->node_on(); 00592 } 00593 00594 setGAFstate(GAF_FREE); 00595 }
Here is the call graph for this function: ![]() |
|
|
Definition at line 149 of file gaf.h. References nid_. 00149 {return nid_;}
|
|
|
|
Definition at line 134 of file gaf.cc. References Packet::accessdata(), TimerHandler::force_cancel(), GAF_FREE, GAF_LEADER, God::getMyGrid(), DiscoveryMsg::gid, gid_, God::instance(), leader_settime_, MIN_LIFETIME, myttl(), DiscoveryMsg::nid, nid_, NOW, schedule_wakeup(), send_discovery(), DiscoveryMsg::state, state_, DiscoveryMsg::stime, stimer_, thisnode, and DiscoveryMsg::ttl. Referenced by recv(). 00135 { 00136 struct DiscoveryMsg emsg; 00137 u_int32_t dst; 00138 unsigned char *w = p->accessdata (); 00139 double x = 0.0, y = 0.0, z = 0.0; 00140 int ttl; 00141 00142 00143 dst = *(w++); 00144 dst = dst << 8 | *(w++); 00145 dst = dst << 8 | *(w++); 00146 dst = dst << 8 | *(w++); 00147 00148 emsg.gid = dst; 00149 00150 dst = *(w++); 00151 dst = dst << 8 | *(w++); 00152 dst = dst << 8 | *(w++); 00153 dst = dst << 8 | *(w++); 00154 00155 emsg.nid = dst; 00156 00157 dst = *(w++); 00158 dst = dst << 8 | *(w++); 00159 dst = dst << 8 | *(w++); 00160 dst = dst << 8 | *(w++); 00161 00162 emsg.state = dst; 00163 00164 dst = *(w++); 00165 dst = dst << 8 | *(w++); 00166 dst = dst << 8 | *(w++); 00167 dst = dst << 8 | *(w++); 00168 00169 emsg.ttl = dst; 00170 00171 dst = *(w++); 00172 dst = dst << 8 | *(w++); 00173 dst = dst << 8 | *(w++); 00174 dst = dst << 8 | *(w++); 00175 00176 emsg.stime = dst; 00177 00178 00179 // first, check if this node has changed its grid 00180 ((MobileNode *)thisnode)->getLoc(&x, &y, &z); 00181 gid_ = God::instance()->getMyGrid(x,y); 00182 00183 // If the msg is not from my grid, ignore it 00184 if (((u_int32_t)gid_) != (u_int32_t)emsg.gid) return; 00185 00186 00187 switch (emsg.state) { 00188 00189 case GAF_LEADER: 00190 00191 // I receives a "whoami" msg from the leader in this grid 00192 // I am supposed to discard if I am in GAF_LEADER 00193 // state too, or put myself into sleep if I am in GAF_FREE 00194 00195 switch (state_) { 00196 case GAF_LEADER: 00197 00198 ttl = (int)(leader_settime_ - NOW); 00199 if (ttl < 0) ttl = 0; 00200 00201 if ( ((u_int32_t)ttl) > (u_int32_t) emsg.ttl) { 00202 //supress the partner 00203 send_discovery(); 00204 return; 00205 00206 } else { 00207 if (((u_int32_t)ttl) == emsg.ttl && (u_int32_t)nid_ < emsg.nid) { 00208 send_discovery(); 00209 return; 00210 } 00211 // from LEADER to SLEEP, cancel my timer 00212 stimer_.force_cancel(); 00213 leader_settime_ = 0; 00214 00215 // turn off my self 00216 schedule_wakeup(emsg); 00217 } 00218 00219 break; 00220 00221 case GAF_FREE: 00222 schedule_wakeup(emsg); 00223 00224 break; 00225 default: 00226 break; 00227 00228 } 00229 00230 break; 00231 case GAF_FREE: 00232 if (state_ == GAF_FREE) { 00233 if ((ttl = (int)myttl()) > MIN_LIFETIME) { 00234 ttl = ttl/2; 00235 } 00236 00237 if ( ttl > (int)emsg.ttl) { 00238 //supress other node 00239 send_discovery(); 00240 return; 00241 } else { 00242 if ((u_int32_t)ttl == emsg.ttl && (u_int32_t)nid_ < emsg.nid) { 00243 send_discovery(); 00244 return; 00245 } 00246 00247 schedule_wakeup(emsg); 00248 00249 } 00250 } 00251 00252 if (state_ == GAF_LEADER) { 00253 send_discovery(); 00254 } 00255 00256 break; 00257 default: 00258 printf("%d gets wrong discovery msg\n",nid_ );; 00259 break; 00260 } 00261 00262 }
Here is the call graph for this function: ![]() |
|
||||||||||||
|
Reimplemented in CMUTrace. Definition at line 96 of file object.cc. References Packet::free(). 00097 { 00098 Packet::free(p); 00099 }
Here is the call graph for this function: ![]() |
|
||||||||||||
|
Reimplemented from Agent. Definition at line 114 of file gaf.cc. References hdr_gaf::access(), Packet::free(), GAF_DISCOVER, GAF_SLEEP, processDiscoveryMsg(), state_, and hdr_gaf::type_. 00115 { 00116 hdr_gaf *gafh = hdr_gaf::access(p); 00117 00118 switch (gafh->type_) { 00119 00120 case GAF_DISCOVER: 00121 00122 if (state_ != GAF_SLEEP) 00123 processDiscoveryMsg(p); 00124 Packet::free(p); 00125 break; 00126 00127 default: 00128 Packet::free(p); 00129 break; 00130 } 00131 }
Here is the call graph for this function: ![]() |
|
|
Definition at line 354 of file agent.cc. References Agent::app_, and Application::recv(). Referenced by TcpAsymSink::recv(). 00355 { 00356 if (app_) 00357 app_->recv(nbytes); 00358 }
Here is the call graph for this function: ![]() |
|
|
Reimplemented from NsObject. Definition at line 78 of file agent.h.
|
|
|
Reimplemented in BayFullTcpAgent, HashClassifier, IvsSource, dsREDQueue, DiffusionRate, SinkAgent, DiffusionAgent, FloodingAgent, OmniMcastAgent, LinkDelay, CBQueue, DropTail, ErrorModel, PIQueue, Queue< T >, RedPDQueue, REDQueue, REMQueue, RIOQueue, Snoop, FackTcpAgent, FullTcpAgent, SackFullTcpAgent, RFC793eduTcpAgent, Sack1TcpAgent, TcpSink, DelAckSink, TcpAgent, VegasTcpAgent, toraAgent, Queue< T >, and XcpSink. Definition at line 70 of file object.cc. Referenced by NsObject::command().
|
|
|
Definition at line 264 of file gaf.cc. References adapt_mobility_, dtimer_, MIN_TURNOFFTIME, node_off(), TimerHandler::resched(), DiscoveryMsg::stime, DiscoveryMsg::ttl, and Random::uniform(). Referenced by processDiscoveryMsg(). 00264 { 00265 00266 int waketime; 00267 waketime = emsg.ttl; 00268 00269 // control whether using mobility adaption 00270 if (adapt_mobility_ > 0 ) { 00271 if (emsg.stime < emsg.ttl) waketime = emsg.stime; 00272 } 00273 00274 // node does not go switch to sleep if the lifetime 00275 // it senses is less than MIN_SWITCHTIME 00276 00277 if (waketime > MIN_TURNOFFTIME ) { 00278 node_off(); 00279 dtimer_.resched(Random::uniform(waketime/2, waketime)); 00280 } 00281 }
Here is the call graph for this function: ![]() |
|
|
Reimplemented in SRMAgent. Definition at line 91 of file agent.h. References Agent::sendmsg(). 00091 { sendmsg(nbytes); }
Here is the call graph for this function: ![]() |
|
||||||||||||
|
Reimplemented in HttpInvalAgent. Definition at line 84 of file agent.h. References Agent::sendmsg(). 00084 { sendmsg(sz, data, 0); }
Here is the call graph for this function: ![]() |
|
||||||||||||
|
|
Definition at line 442 of file gaf.cc. References hdr_gaf::access(), Agent::allocpkt(), GAF_DISCOVER, God::getMyGrid(), gid_, God::instance(), makeUpDiscoveryMsg(), Agent::send(), seqno_, hdr_gaf::seqno_, thisnode, and hdr_gaf::type_. Referenced by duty_timeout(), processDiscoveryMsg(), and timeout(). 00443 { 00444 Packet *p = allocpkt(); 00445 double x=0.0, y=0.0, z=0.0; 00446 00447 hdr_gaf *h = hdr_gaf::access(p); 00448 //hdr_ip *iph = hdr_ip::access(p); 00449 00450 h->type_ = GAF_DISCOVER; 00451 h->seqno_ = ++seqno_; 00452 00453 // update my grid infomation 00454 00455 ((MobileNode *)thisnode)->getLoc(&x, &y, &z); 00456 gid_ = God::instance()->getMyGrid(x,y); 00457 00458 makeUpDiscoveryMsg(p); 00459 00460 send(p,0); 00461 }
Here is the call graph for this function: ![]() |
|
||||||||||||
|
Reimplemented in SA_Agent, RTPAgent, UdpAgent, MessagePassingAgent, LmsSender, SRMAgent, SctpAgent, FullTcpAgent, TcpAgent, TfrcAgent, and SimpleTcpAgent. Definition at line 407 of file agent.cc.
|
|
||||||||||||||||
|
Reimplemented in UdpAgent, and MessagePassingAgent. Definition at line 400 of file agent.cc. References abort(). Referenced by Agent::command(), Application::send(), Agent::send(), TrafficTrace::timeout(), TelnetApp::timeout(), SctpApp1::timeout(), EXPOO_Traffic::timeout(), and CBR_PP_Traffic::timeout(). 00401 { 00402 fprintf(stderr, 00403 "Agent::sendmsg(int, AppData*, const char*) not implemented\n"); 00404 abort(); 00405 }
Here is the call graph for this function: ![]() |
|
||||||||||||||||
|
Reimplemented in MessagePassingAgent. |
|
||||||||||||||||
|
|
|
||||||||||||||||||||
|
Reimplemented in MessagePassingAgent. Definition at line 420 of file agent.cc.
|
|
||||||||||||||||||||
|
Definition at line 411 of file agent.cc. References abort(). Referenced by Agent::command(), AnWormApp::probe(), and DnhWormApp::send_probe(). 00413 { 00414 fprintf(stderr, 00415 "Agent::sendmsg(int, AppData*, const char*) not implemented\n"); 00416 abort(); 00417 }
Here is the call graph for this function: ![]() |
|
|
Definition at line 103 of file agent.h. References Agent::type_. Referenced by Agent::command(), RA_Traffic::init(), POO_Traffic::init(), EXPOO_Traffic::init(), and CBR_PP_Traffic::init(). 00103 { type_ = pkttype; }
|
|
|
Definition at line 51 of file connector.h. References Connector::drop_. Referenced by XCPWrapQ::command(). 00051 {drop_ = dt; }
|
|
|
Definition at line 598 of file gaf.cc. References state_. Referenced by node_off(), node_on(), and timeout(). 00599 { 00600 //printf("Node (%d %d) changes state from %d to %d at %f\n", nid_, gid_, state_,gs,Scheduler::instance().clock()); 00601 00602 state_ = gs; 00603 }
|
|
|
Reimplemented in FullTcpAgent. Definition at line 98 of file agent.h. References Agent::size_. Referenced by rtProtoDV::command(), RLM_Sender::command(), imepAgent::getResponseListSize(), LandmarkAgent::makeUpdate(), Agent::recv(), SSMSRMAgent::send_glb_sess(), SSMSRMAgent::send_loc_sess(), SSMSRMAgent::send_rep_sess(), SRMAgent::send_sess(), TelnetApp::timeout(), and SctpApp1::timeout(). 00098 { return size_; }
|
|
|
Definition at line 49 of file connector.h. References Connector::target(), and Connector::target_.
Here is the call graph for this function: ![]() |
|
|
Definition at line 48 of file connector.h. References Connector::target_. Referenced by JoBS::assignRateDropsADC(), FQ::deque(), MIPMHAgent::reg(), MIPBSAgent::send_ads(), and Connector::target(). 00048 { return target_; }
|
|
|
Reimplemented in SA_Agent, RTPAgent, FtpClientAgent, BayFullTcpAgent, SinkAgent, RLM_Sender, MIPBSAgent, MIPMHAgent, RapAgent, RTCPAgent, TcpAsymSink, FackTcpAgent, FullTcpAgent, QSNewRenoTcpAgent, RBPVegasTcpAgent, RBPRenoTcpAgent, SackRHTcpAgent, Sack1TcpAgent, TcpSessionAgent, DelAckSink, TcpAgent, RenoTcpAgent, VegasTcpAgent, and SimpleTcpAgent. Definition at line 347 of file agent.cc. Referenced by SimpleTimer::expire().
|
|
|
Definition at line 302 of file gaf.cc. References duty_timeout(), GAF_DISCOVER, GAF_DUTY, GAF_FREE, GAF_LEADER, GAF_SELECT, GAF_SLEEP, leader_settime_, MAX_DISCOVERY_TIME, MIN_LIFETIME, myttl(), NOW, TimerHandler::resched(), send_discovery(), setGAFstate(), state_, stimer_, timer_, DiscoveryMsg::ttl, and Random::uniform(). Referenced by GAFDutyTimer::expire(), GAFSelectTimer::expire(), and GAFDiscoverTimer::expire(). 00303 { 00304 00305 int ttl; 00306 00307 //printf ("Node (%d %d) get signal %d at %f\n",nid_, gid_, msgt, Scheduler::instance().clock()); 00308 00309 switch (msgt) { 00310 case GAF_DISCOVER: 00311 00312 switch (state_) { 00313 case GAF_SLEEP: 00314 break; 00315 00316 case GAF_FREE: 00317 00318 if ((ttl = (int)myttl()) > MIN_LIFETIME) { 00319 ttl = (int) ttl/2; 00320 } 00321 00322 leader_settime_ = (int) (ttl + NOW); 00323 00324 // schdule to tell me that I can switch after ttl 00325 00326 stimer_.resched(ttl); 00327 00328 setGAFstate(GAF_LEADER); 00329 00330 send_discovery(); 00331 00332 //printf ("Node (%d %d) becomes a leader at %f\n",nid_, gid_, Scheduler::instance().clock()); 00333 00334 timer_.resched(Random::uniform(MAX_DISCOVERY_TIME-1,MAX_DISCOVERY_TIME)); 00335 00336 // fall through 00337 break; 00338 00339 case GAF_LEADER: 00340 00341 send_discovery(); 00342 00343 timer_.resched(Random::uniform(MAX_DISCOVERY_TIME-1,MAX_DISCOVERY_TIME)); 00344 break; 00345 default: 00346 break; 00347 00348 } 00349 00350 break; 00351 00352 case GAF_SELECT: 00353 switch (state_) { 00354 00355 case GAF_LEADER: 00356 00357 // I just finish my LEADER role, put myself into FREE 00358 // state so that I have chance to go sleep 00359 // put myself into FREE does not hurt anything 00360 00361 //printf("Node (%d %d) go BACK to FREE from LEADER at %f\n",nid_,gid_,Scheduler::instance().clock()); 00362 00363 duty_timeout(); 00364 00365 leader_settime_ = 0; 00366 00367 break; 00368 00369 case GAF_FREE: 00370 case GAF_SLEEP: 00371 break; 00372 default: 00373 break; 00374 } 00375 break; 00376 case GAF_DUTY: 00377 duty_timeout(); 00378 break; 00379 default: 00380 printf("Wrong GAF msg time!\n"); 00381 } 00382 00383 }
Here is the call graph for this function: ![]() |
|
|
Reimplemented in SctpAgent, and TcpAgent. Definition at line 266 of file agent.cc. References ns_addr_t::addr_, Agent::channel_, Agent::dst_, Agent::here_, Agent::insertOldValue(), Scheduler::instance(), Agent::lookupOldValue(), min, TIME_FORMAT, Agent::traceName_, TRACEVAR_MAXVALUELENGTH, and OldValue::val_. Referenced by TcpAgent::trace(). 00267 { 00268 if (channel_ == 0) 00269 return; 00270 char wrk[256], value[128]; 00271 int n; 00272 00273 // XXX we need to keep track of old values. What's the best way? 00274 v->value(value, 128); 00275 00276 // XXX hack: how do I know ns has not started yet? 00277 // if there's nothing in value, return 00278 static int started = 0; 00279 if (!started) { 00280 Tcl::instance().evalc("[Simulator instance] is-started"); 00281 if (Tcl::instance().result()[0] == '0') 00282 // Simulator not started, do nothing 00283 return; 00284 // remember for next time (so we don't always have to call to tcl) 00285 started = 1; 00286 }; 00287 00288 OldValue *ov = lookupOldValue(v); 00289 if (ov != NULL) { 00290 sprintf(wrk, 00291 "f -t "TIME_FORMAT" -s %d -d %d -n %s -a %s -v %s -o %s -T v", 00292 Scheduler::instance().clock(), here_.addr_, 00293 dst_.addr_, v->name(), traceName_, value, ov->val_); 00294 strncpy(ov->val_, 00295 value, 00296 min(strlen(value)+1, TRACEVAR_MAXVALUELENGTH)); 00297 } else { 00298 // if there is value, insert it into old value list 00299 sprintf(wrk, "f -t "TIME_FORMAT" -s %d -d %d -n %s -a %s -v %s -T v", 00300 Scheduler::instance().clock(), here_.addr_, 00301 dst_.addr_, v->name(), traceName_, value); 00302 insertOldValue(v, value); 00303 } 00304 n = strlen(wrk); 00305 wrk[n] = '\n'; 00306 wrk[n+1] = 0; 00307 (void)Tcl_Write(channel_, wrk, n+1); 00308 }
Here is the call graph for this function: ![]() |
|
|
Reimplemented in TcpAgent. Definition at line 149 of file agent.h.
|
|
|
Definition at line 177 of file gaf.h. Referenced by command(), and schedule_wakeup(). |
|
|
Reimplemented in BayFullTcpAgent. Definition at line 137 of file agent.h. Referenced by Agent::attachApp(), Agent::idle(), RapAgent::IpgTimeout(), UdpAgent::recv(), TPAgent::recv(), SimpleTcpAgent::recv(), RapAgent::recv(), MessagePassingAgent::recv(), HttpInvalAgent::recv(), Agent::recv(), and Agent::recvBytes(). |
|
|
|
|
|
|
Reimplemented in FECModel, FloodAgent, and LandmarkAgent. Definition at line 66 of file object.h. Referenced by REDQueue::command(), RedPDQueue::command(), PushbackQueue::command(), NsObject::debug(), NsObject::delay_bind_dispatch(), PushbackQueue::enque(), NsObject::isdebug(), NsObject::NsObject(), TfrcAgent::recv(), PushbackQueue::reportDrop(), SctpAgent::Reset(), REDQueue::reset(), DropTail::shrink_queue(), and Delayer::try_send(). |
|
|
Definition at line 124 of file agent.h. Referenced by Agent::delay_bind_dispatch(), and Agent::initpkt(). |
|
|
Definition at line 59 of file connector.h. Referenced by XCPWrapQ::command(), Connector::command(), Connector::drop(), ErrorModel::recv(), and Connector::setDropTarget(). |
|
|
Reimplemented in AckRecons. Definition at line 118 of file agent.h. Referenced by Agent::addAgentTrace(), Agent::daddr(), Agent::delay_bind_dispatch(), Agent::deleteAgentTrace(), Agent::dport(), DSRProto::DSRProto(), Agent::flushAVar(), Agent::initpkt(), SRMAgent::recv(), SSMSRMAgent::recv(), NatAgent::recv(), SRMAgent::sendmsg(), PushbackAgent::sendMsg(), and Agent::trace(). |
|
|
Definition at line 168 of file gaf.h. Referenced by schedule_wakeup(). |
|
|
Definition at line 148 of file agent.h. Referenced by TcpAgent::command(), and TcpAgent::trace_event(). |
|
|
Definition at line 121 of file agent.h. Referenced by Agent::delay_bind_dispatch(), AbsTcpAgent::flowid(), Agent::initpkt(), CtrMcastEncap::recv(), Sack1TcpAgent::timeout(), and TcpAgent::trace_event(). |
|
|
Reimplemented in BayFullTcpAgent, RapAgent, and FullTcpAgent. Definition at line 123 of file agent.h. Referenced by Agent::delay_bind_dispatch(). |
|
|
Definition at line 170 of file gaf.h. Referenced by duty_timeout(), GAFAgent(), makeUpDiscoveryMsg(), processDiscoveryMsg(), and send_discovery(). |
|
|
|
Definition at line 176 of file gaf.h. Referenced by makeUpDiscoveryMsg(), processDiscoveryMsg(), and timeout(). |
|
|
Definition at line 173 of file gaf.h. Referenced by command(). |
|
|
Definition at line 171 of file gaf.h. Referenced by GAFAgent(), makeUpDiscoveryMsg(), nodeid(), and processDiscoveryMsg(). |
|
|
Definition at line 135 of file agent.h. Referenced by Agent::insertOldValue(), Agent::lookupOldValue(), and Agent::~Agent(). |
|
|
Definition at line 122 of file agent.h. Referenced by Agent::delay_bind_dispatch(), and Agent::initpkt(). |
|
|
|
|
|
Definition at line 169 of file gaf.h. Referenced by GAFAgent(), and send_discovery(). |
|
|
|
Definition at line 175 of file gaf.h. Referenced by makeUpDiscoveryMsg(), processDiscoveryMsg(), recv(), setGAFstate(), and timeout(). |
|
|
Definition at line 167 of file gaf.h. Referenced by processDiscoveryMsg(), and timeout(). |
|
|
|
Definition at line 172 of file gaf.h. Referenced by duty_timeout(), GAFAgent(), makeUpDiscoveryMsg(), myttl(), node_off(), node_on(), processDiscoveryMsg(), and send_discovery(). |
|
|
Definition at line 166 of file gaf.h. Referenced by command(), duty_timeout(), and timeout(). |
|
|
Definition at line 134 of file agent.h. Referenced by Agent::addAgentTrace(), Agent::command(), Agent::deleteAgentTrace(), Agent::flushAVar(), Agent::monitorAgentTrace(), and Agent::trace(). |
|
|
Definition at line 120 of file agent.h. Referenced by Agent::get_pkttype(), Agent::initpkt(), FullTcpAgent::listen(), BayFullTcpAgent::listen(), RapAgent::SendAck(), SRMAgent::sendmsg(), RapAgent::SendPacket(), Agent::set_pkttype(), and XcpAgent::XcpAgent(). |
|
|
Definition at line 131 of file agent.h. Referenced by imepAgent::handlerControlTimer(), Agent::initpkt(), imepAgent::sendAck(), imepAgent::sendBeacon(), toraAgent::sendCLR(), imepAgent::sendHello(), toraAgent::sendQRY(), and toraAgent::sendUPD(). |
1.4.6