Inheritance diagram for LmsSender:


Definition at line 72 of file lms-sender.cc.
Public Member Functions | |
| nsaddr_t & | addr () |
| virtual void | attachApp (Application *app) |
| virtual void | close () |
| int | command (int argc, const char *const *argv) |
| virtual void | connect (nsaddr_t dst) |
| nsaddr_t & | daddr () |
| virtual void | debug (const char *fmt,...) |
| nsaddr_t & | dport () |
| virtual void | drop (Packet *p) |
| packet_t | get_pkttype () |
| int | isdebug () const |
| virtual void | listen () |
| LmsSender () | |
| nsaddr_t & | port () |
| virtual void | recv (Packet *p, const char *s) |
| void | recv (Packet *pkt, 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 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) |
Data Fields | |
| LmsSender * | next_ |
Protected Member Functions | |
| int | add_req (Packet *rq) |
| void | addAgentTrace (const char *name) |
| Packet * | allocpkt (int) const |
| Packet * | allocpkt () const |
| 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 | handle (Event *) |
| void | handle_lms_pkt (Packet *pkt) |
| virtual void | idle () |
| void | initpkt (Packet *) const |
| void | insertOldValue (TracedVar *v, const char *value) |
| OldValue * | lookupOldValue (TracedVar *v) |
| void | monitorAgentTrace () |
| void | print_all_stats (int drops) |
| void | print_stats () |
| virtual void | recvBytes (int bytes) |
| virtual void | reset () |
| void | send_dmcast (hdr_lms *lh, int seqno, int fid) |
| void | send_lms_pkt (int, int) |
| void | send_spm () |
| virtual void | sendmsg (int nbytes, const char *flags=0) |
| void | solicit_naks () |
| virtual void | trace (TracedVar *v) |
| virtual void | trace_event (char *eventtype) |
Protected Attributes | |
| Application * | app_ |
| Tcl_Channel | channel_ |
| int | debug_ |
| int | defttl_ |
| int | dmcasts_sent_ |
| NsObject * | drop_ |
| ns_addr_t | dst_ |
| int | dup_reqs_ |
| EventTrace * | et_ |
| int | fid_ |
| int | flags_ |
| ns_addr_t | here_ |
| int | lms_cost_ |
| int | lms_ttl_ |
| int | lmsPacketSize_ |
| OldValue * | oldValueList_ |
| int | packetSize_ |
| int | prio_ |
| Packet * | req_list_ |
| int | req_list_sz_ |
| int | req_rcvd_ |
| int | seqno_ |
| int | size_ |
| int | spm_seqno_ |
| NsObject * | target_ |
| char * | traceName_ |
| packet_t | type_ |
| char | uname_ [16] |
Static Protected Attributes | |
| static int | max_dup_naks_ = 0 |
| static int | uidcnt_ |
|
|
Definition at line 129 of file lms-sender.cc. References dmcasts_sent_, dup_reqs_, lms_cost_, lmsPacketSize_, max_dup_naks_, packetSize_, req_list_, req_rcvd_, snd_uid_, spm_seqno_, and uname_. 00129 : Agent(PT_LMS), seqno_(-1) 00130 { 00131 sprintf (uname_, "sender%d", snd_uid_++); 00132 00133 lms_cost_ = 0; 00134 spm_seqno_ = 0; 00135 req_list_ = NULL; 00136 req_rcvd_ = dup_reqs_ = max_dup_naks_ = 0; 00137 dmcasts_sent_ = 0; 00138 bind("lmsPacketSize_", &lmsPacketSize_); 00139 bind("packetSize_", &packetSize_); 00140 // bind("off_ip_", &off_ip_); 00141 // bind("off_lms_", &off_lms_); 00142 // bind("off_rtp_", &off_rtp_); 00143 // bind("off_cmn_", &off_cmn_); 00144 // bind("maxpkts_", &maxpkts_); 00145 }
|
|
|
Definition at line 351 of file lms-sender.cc. References Packet::accessdata(), lms_nak::dup_cnt_, Packet::free(), HDR_LMS, hdr_lms::hi_, hdr_lms::lo_, max_dup_naks_, Packet::next_, req_list_, req_list_sz_, hdr_lms::tp_addr_, hdr_lms::tp_iface_, and uname_. Referenced by handle_lms_pkt(). 00352 { 00353 hdr_lms *lh = HDR_LMS(rq); 00354 Packet *p = req_list_; 00355 int i = 0; 00356 00357 if (!p) 00358 { 00359 req_list_ = rq; 00360 rq->next_ = 0; 00361 req_list_sz_ = 1; 00362 return 1; 00363 } 00364 while (p) 00365 { 00366 if (i++ > 10) 00367 break; 00368 hdr_lms *plh = HDR_LMS(p); 00369 if ((plh->lo_ == lh->lo_) && 00370 (plh->hi_ == lh->hi_) && 00371 (plh->tp_addr_ == lh->tp_addr_) && 00372 (plh->tp_iface_ == lh->tp_iface_)) 00373 { 00374 struct lms_nak *nh = (struct lms_nak *)p->accessdata(); 00375 // increments the dup_cnt_ for this NAK, and updates 00376 // max_dup_naks_ if appropriate 00377 ++nh->dup_cnt_; 00378 00379 #ifdef LMS_DEBUG 00380 printf ("SNDR: %s got %d dup reqs, max is %d\n", uname_, nh->dup_cnt_, max_dup_naks_); 00381 #endif 00382 00383 if( nh->dup_cnt_ > max_dup_naks_) 00384 max_dup_naks_ = nh->dup_cnt_; 00385 00386 return 0; 00387 } 00388 00389 p = p->next_; 00390 } 00391 if (i > 10 && p && p->next_) 00392 { 00393 Packet::free (p->next_); 00394 p->next_ = 0; 00395 req_list_sz_--; 00396 } 00397 rq->next_ = req_list_; 00398 req_list_ = rq; 00399 req_list_sz_++; 00400 return 1; 00401 }
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 273 of file lms-sender.cc. References Agent::command(), lms_cost_, LMS_LINKS, LMS_REFRESH, LMS_SETUP, lms_ttl_, packetSize_, print_all_stats(), print_stats(), send_lms_pkt(), sendmsg(), and solicit_naks(). 00274 { 00275 if (argc == 2) { 00276 if (strcmp(argv[1], "lms-setup") == 0) { 00277 send_lms_pkt (LMS_SETUP, packetSize_); // XXX 00278 return (TCL_OK); 00279 } 00280 if (strcmp(argv[1], "gather-links") == 0) { 00281 send_lms_pkt (LMS_LINKS, 0); 00282 return (TCL_OK); 00283 } 00284 if (strcmp(argv[1], "print-stats") == 0) { 00285 print_stats (); 00286 return (TCL_OK); 00287 } 00288 } 00289 if (argc == 3) 00290 { 00291 if (strcmp(argv[1], "solicit-naks") == 0) { 00292 lms_ttl_ = atoi (argv[2]); 00293 solicit_naks (); 00294 return (TCL_OK); 00295 } 00296 if (strcmp(argv[1], "set-replier-cost") == 0) 00297 { 00298 lms_cost_ = atoi (argv[2]); 00299 send_lms_pkt (LMS_REFRESH, lms_cost_); 00300 return (TCL_OK); 00301 } 00302 if (strcmp(argv[1], "print-all-stats") == 0) { 00303 print_all_stats ( atoi(argv[2]) ); 00304 return (TCL_OK); 00305 } 00306 if (strcmp(argv[1], "send") == 0) { 00307 sendmsg( atoi (argv[2]), 0); 00308 return (TCL_OK); 00309 } 00310 } 00311 return (Agent::command(argc, argv)); 00312 }
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 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 232 of file lms-sender.cc. References abort(), add_req(), Agent::addr(), dup_reqs_, hdr_lms::from(), hdr_lms::group(), HDR_LMS, LMS_REFRESH, LMS_REQ, hdr_lms::lo_, req_rcvd_, send_dmcast(), hdr_lms::src(), hdr_lms::src_, hdr_lms::tp_addr_, hdr_lms::tp_iface_, hdr_lms::type(), and uname_. Referenced by recv(). 00233 { 00234 int st = 0; 00235 00236 hdr_lms* lh = HDR_LMS(pkt); 00237 //hdr_ip* iph = HDR_IP(pkt); 00238 #ifdef LMS_DEBUG 00239 int a1, a2; 00240 #endif 00241 switch (lh->type()) 00242 { 00243 case LMS_REQ: 00244 req_rcvd_++; 00245 if (lh->src_ != addr()) 00246 { 00247 printf ("ERROR: %s REQ with wrong source addr %d:%d\n", 00248 uname_, lh->src_>>8, lh->src_&0xff); 00249 abort (); 00250 } 00251 #ifdef LMS_DEBUG 00252 a1 = lh->from(); a2 = lh->src(); 00253 printf ("SNDR: %s got LMS_REQ from %d:%d src %d:%d group 0x%x\n\n", 00254 uname_, a1>>8, a1&0xff, a2>>8, a2&0xff, lh->group()); 00255 printf ("SNDR: TP: (%d, %d)\n\n", lh->tp_addr_, lh->tp_iface_); 00256 #endif 00257 if ((st = add_req (pkt)) != 0) 00258 for (int i = lh->lo_; i <= lh->hi_; i++) 00259 send_dmcast (lh, i, 3); 00260 else dup_reqs_++; 00261 00262 break; 00263 case LMS_REFRESH: 00264 break; 00265 default: 00266 printf ("***ERROR: %s Unexpected LMS packet type: %d\n\n", uname_, lh->type()); 00267 abort (); 00268 } 00269 if (!st) 00270 Packet::free(pkt); 00271 }
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 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 454 of file lms-sender.cc. References dup_reqs_, and max_dup_naks_. Referenced by command(). 00455 { 00456 if (drops) 00457 printf ("\t%.5lf\t %d", float(dup_reqs_)/float(drops), max_dup_naks_); 00458 else 00459 printf ("\t0.0\t 0"); 00460 }
|
|
|
Definition at line 444 of file lms-sender.cc. References dmcasts_sent_, dup_reqs_, req_rcvd_, seqno_, and uname_. Referenced by command(). 00445 { 00446 printf ("%s:\n", uname_); 00447 printf ("\tPackets sent:\t\t%d\n", seqno_); 00448 printf ("\tRequests received:\t%d\n", req_rcvd_); 00449 printf ("\tDuplicate Requests:\t%d\n", dup_reqs_); 00450 printf ("\tDMCASTs sent:\t\t%d\n", dmcasts_sent_); 00451 printf ("\n"); 00452 }
|
|
||||||||||||
|
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 217 of file lms-sender.cc. References Packet::free(), handle_lms_pkt(), HDR_CMN, PT_LMS, hdr_cmn::ptype_, and uname_. 00218 { 00219 hdr_cmn* h = HDR_CMN(pkt); 00220 00221 if (h->ptype_ == PT_LMS) 00222 handle_lms_pkt (pkt); 00223 else { 00224 printf ("ERROR: %s received non LMS pkt type %d\n", uname_, h->ptype_); 00225 Packet::free(pkt); 00226 } 00227 }
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().
|
|
|
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 317 of file lms-sender.cc. References Agent::addr(), Agent::allocpkt(), Agent::daddr(), hdr_ip::daddr(), dmcasts_sent_, hdr_ip::dport(), hdr_ip::flowid(), hdr_lms::from_, hdr_lms::group_, HDR_CMN, HDR_IP, HDR_LMS, HDR_RTP, LMS_DMCAST, packetSize_, NsObject::recv(), hdr_rtp::seqno(), hdr_cmn::size_, hdr_lms::src_, Connector::target_, hdr_lms::tp_addr_, hdr_lms::tp_iface_, hdr_lms::tp_port_, and hdr_lms::type_. Referenced by handle_lms_pkt(). 00318 { 00319 Packet *p = allocpkt(); 00320 hdr_rtp *rh = HDR_RTP(p); 00321 hdr_ip *piph = HDR_IP(p); 00322 hdr_cmn *ch = HDR_CMN(p); 00323 hdr_lms *plh = HDR_LMS(p); 00324 00325 dmcasts_sent_++; 00326 rh->seqno() = seqno; 00327 piph->daddr() = lh->tp_addr_; 00328 piph->dport() = lh->tp_port_; 00329 ch->size_= packetSize_; 00330 piph->flowid() = fid; // Green for repair; to color packets in NAM 00331 00332 plh->type_ = LMS_DMCAST; 00333 plh->from_ = addr(); 00334 // plh->from_ = port(); 00335 plh->src_ = addr(); 00336 plh->group_ = daddr(); 00337 plh->tp_addr_ = lh->tp_addr_; 00338 plh->tp_port_ = lh->tp_port_; 00339 plh->tp_iface_ = lh->tp_iface_; 00340 //const char* nname = packet_info.name(t); 00341 00342 target_->recv(p); 00343 }
Here is the call graph for this function: ![]() |
|
||||||||||||
|
Definition at line 179 of file lms-sender.cc. References Agent::addr(), Agent::allocpkt(), Scheduler::clock(), hdr_lms::cost_, Agent::daddr(), hdr_lms::from_, hdr_lms::group_, HDR_CMN, HDR_IP, HDR_LMS, hdr_lms::hi_, Scheduler::instance(), LMS_NOADDR, LMS_NOIFACE, LMS_SETUP, lmsPacketSize_, hdr_lms::lo_, packetSize_, PT_LMS, NsObject::recv(), Agent::size_, hdr_lms::src_, Connector::target_, hdr_lms::tp_addr_, hdr_lms::tp_iface_, hdr_lms::tp_port_, hdr_lms::ts_, hdr_lms::type_, and uname_. Referenced by command(). 00180 { 00181 Packet* p = allocpkt(); 00182 00183 (HDR_CMN(p))->ptype_ = PT_LMS; 00184 (HDR_IP(p))->flowid() = 7; //Coloring in NAM 00185 00186 if (type != LMS_SETUP) 00187 (HDR_CMN(p))->size_ = lmsPacketSize_; 00188 //(HDR_CMN(p))->size_ = sizeof(hdr_lms); 00189 else 00190 (HDR_CMN(p))->size_ = packetSize_; 00191 //(HDR_CMN(p))->size_ = sizeof(hdr_lms); 00192 00193 hdr_lms* lh = HDR_LMS(p); 00194 lh->type_ = type; 00195 lh->cost_ = cost; 00196 lh->from_ = addr(); 00197 // lh->from_ = port(); 00198 lh->src_ = addr(); 00199 lh->group_ = daddr(); 00200 lh->tp_addr_ = LMS_NOADDR; 00201 lh->tp_port_ = -1; 00202 lh->tp_iface_ = LMS_NOIFACE; 00203 lh->lo_ = lh->hi_ = -1; 00204 lh->ts_ = Scheduler::instance().clock(); 00205 00206 #ifdef LMS_DEBUG 00207 printf ("SNDR: %s send_lms_pkt from %d src %d dst %x type %d cost %d size %d at %f\n\n", 00208 uname_, lh->from_, lh->src_, lh->group_, lh->type_, lh->cost_, 00209 (HDR_CMN(p))->size_, lh->ts_); 00210 #endif 00211 target_->recv(p); 00212 }
Here is the call graph for this function: ![]() |
|
|
Definition at line 404 of file lms-sender.cc. References Agent::addr(), Agent::allocpkt(), Scheduler::clock(), HDR_CMN, HDR_IP, HDR_LMS, Scheduler::instance(), LMS_SPM, PT_LMS, NsObject::recv(), Agent::size_, lms_spm::spm_path_, spm_seqno_, lms_spm::spm_seqno_, lms_spm::spm_ts_, Connector::target_, and hdr_lms::type_. 00405 { 00406 Packet* p = allocpkt (sizeof (struct lms_spm)); 00407 (HDR_CMN(p))->ptype_ = PT_LMS; 00408 (HDR_CMN(p))->size_ = sizeof(struct lms_spm) + sizeof(hdr_lms); 00409 (HDR_IP(p))->flowid() = 7; 00410 00411 hdr_lms* lh = HDR_LMS(p); 00412 00413 lh->type_ = LMS_SPM; 00414 00415 struct lms_spm *spm = (struct lms_spm *)p->accessdata(); 00416 spm->spm_seqno_ = spm_seqno_++; 00417 spm->spm_path_ = addr(); 00418 spm->spm_ts_ = Scheduler::instance().clock(); 00419 00420 target_->recv(p); 00421 }
Here is the call graph for this function: ![]() |
|
||||||||||||||||
|
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 from Agent. Definition at line 150 of file lms-sender.cc. References Agent::allocpkt(), Scheduler::clock(), hdr_ip::flowid(), HDR_CMN, HDR_IP, HDR_LMS, HDR_RTP, Scheduler::instance(), p_info::name(), packet_info, packetSize_, hdr_cmn::ptype(), NsObject::recv(), hdr_rtp::seqno(), seqno_, hdr_cmn::size_, Connector::target_, and uname_. Referenced by command(). 00151 { 00152 Packet* p = allocpkt (); 00153 hdr_ip* ih = HDR_IP(p); 00154 hdr_cmn* th = HDR_CMN(p); 00155 hdr_rtp* rh = HDR_RTP(p); // XXX 00156 00157 bzero (HDR_LMS(p), sizeof (struct hdr_lms)); 00158 packetSize_ = nbytes; 00159 th->size_ = packetSize_; 00160 rh->seqno() = ++seqno_; // XXX 00161 00162 ih->flowid() = 1; //for coloring in NAM 00163 00164 #ifdef LMS_DEBUG 00165 packet_t t = th->ptype(); 00166 const char* nname = packet_info.name(t); 00167 double now = Scheduler::instance().clock(); 00168 printf("SNDR: at %f %s sendmsg pkt %d type is %s, size is %d\n\n", 00169 now, uname_, seqno_, nname, th->size_); 00170 #endif 00171 00172 target_->recv(p); 00173 }
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; }
|
|
|
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 423 of file lms-sender.cc. References Packet::accessdata(), Agent::addr(), Agent::allocpkt(), lms_ctl::cost_, Agent::daddr(), hdr_lms::from_, hdr_lms::group_, HDR_CMN, HDR_IP, HDR_LMS, lms_ctl::hop_cnt_, lms_cost_, LMS_SRC_REFRESH, lms_ttl_, PT_LMS, NsObject::recv(), Agent::size_, hdr_lms::src_, Connector::target_, hdr_lms::ttl_, and hdr_lms::type_. Referenced by command(). 00424 { 00425 Packet* p = allocpkt(sizeof (struct lms_ctl)); 00426 struct lms_ctl *ctl = (struct lms_ctl*)p->accessdata (); 00427 (HDR_CMN(p))->size_ = sizeof(struct lms_ctl) + sizeof(hdr_lms); 00428 (HDR_CMN(p))->ptype_ = PT_LMS; 00429 (HDR_IP(p))->flowid() = 7; 00430 00431 hdr_lms* lh = HDR_LMS(p); 00432 lh->type_ = LMS_SRC_REFRESH; 00433 lh->ttl_ = lms_ttl_; 00434 lh->from_ = addr(); 00435 lh->src_ = addr(); 00436 lh->group_ = daddr(); 00437 00438 ctl->cost_ = lms_cost_; 00439 ctl->hop_cnt_ = 0; 00440 00441 target_->recv(p); 00442 }
Here is the call graph for this function: ![]() |
|
|
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().
|
|
|
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.
|
|
|
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 102 of file lms-sender.cc. Referenced by LmsSender(), print_stats(), and send_dmcast(). |
|
|
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 101 of file lms-sender.cc. Referenced by handle_lms_pkt(), LmsSender(), print_all_stats(), and print_stats(). |
|
|
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 92 of file lms-sender.cc. Referenced by command(), LmsSender(), and solicit_naks(). |
|
|
Definition at line 93 of file lms-sender.cc. Referenced by command(), and solicit_naks(). |
|
|
Definition at line 95 of file lms-sender.cc. Referenced by LmsSender(), and send_lms_pkt(). |
|
|
Definition at line 104 of file lms-sender.cc. Referenced by add_req(), LmsSender(), and print_all_stats(). |
|
|
Definition at line 75 of file lms-sender.cc. |
|
|
Definition at line 135 of file agent.h. Referenced by Agent::insertOldValue(), Agent::lookupOldValue(), and Agent::~Agent(). |
|
|
Definition at line 94 of file lms-sender.cc. Referenced by command(), LmsSender(), send_dmcast(), send_lms_pkt(), and sendmsg(). |
|
|
Definition at line 122 of file agent.h. Referenced by Agent::delay_bind_dispatch(), and Agent::initpkt(). |
|
|
Definition at line 96 of file lms-sender.cc. Referenced by add_req(), and LmsSender(). |
|
|
Definition at line 97 of file lms-sender.cc. Referenced by add_req(). |
|
|
Definition at line 100 of file lms-sender.cc. Referenced by handle_lms_pkt(), LmsSender(), and print_stats(). |
|
|
Definition at line 107 of file lms-sender.cc. Referenced by print_stats(), and sendmsg(). |
|
|
|
Definition at line 91 of file lms-sender.cc. Referenced by LmsSender(), and send_spm(). |
|
|
|
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(). |
|
|
Definition at line 90 of file lms-sender.cc. Referenced by add_req(), handle_lms_pkt(), LmsSender(), print_stats(), recv(), send_lms_pkt(), and sendmsg(). |
1.4.6