LmsSender Class Reference

Inheritance diagram for LmsSender:

Agent Connector NsObject TclObject Handler Collaboration diagram for LmsSender:

Collaboration graph
[legend]

Detailed Description

Definition at line 72 of file lms-sender.cc.

Public Member Functions

nsaddr_taddr ()
virtual void attachApp (Application *app)
virtual void close ()
int command (int argc, const char *const *argv)
virtual void connect (nsaddr_t dst)
nsaddr_tdaddr ()
virtual void debug (const char *fmt,...)
nsaddr_tdport ()
virtual void drop (Packet *p)
packet_t get_pkttype ()
int isdebug () const
virtual void listen ()
 LmsSender ()
nsaddr_tport ()
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)
NsObjecttarget ()
virtual void timeout (int tno)

Data Fields

LmsSendernext_

Protected Member Functions

int add_req (Packet *rq)
void addAgentTrace (const char *name)
Packetallocpkt (int) const
Packetallocpkt () 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)
OldValuelookupOldValue (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

Applicationapp_
Tcl_Channel channel_
int debug_
int defttl_
int dmcasts_sent_
NsObjectdrop_
ns_addr_t dst_
int dup_reqs_
EventTraceet_
int fid_
int flags_
ns_addr_t here_
int lms_cost_
int lms_ttl_
int lmsPacketSize_
OldValueoldValueList_
int packetSize_
int prio_
Packetreq_list_
int req_list_sz_
int req_rcvd_
int seqno_
int size_
int spm_seqno_
NsObjecttarget_
char * traceName_
packet_t type_
char uname_ [16]

Static Protected Attributes

static int max_dup_naks_ = 0
static int uidcnt_


Constructor & Destructor Documentation

LmsSender::LmsSender  ) 
 

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 }


Member Function Documentation

int LmsSender::add_req Packet rq  )  [protected]
 

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:

void Agent::addAgentTrace const char *  name  )  [protected, inherited]
 

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:

nsaddr_t& Agent::addr  )  [inline, inherited]
 

Definition at line 99 of file agent.h.

References ns_addr_t::addr_, and Agent::here_.

Referenced by LandmarkAgent::assign_lmaddress(), WormApp::command(), SSMSRMAgent::command(), IntTcpAgent::createTcpSession(), DiffusionProb::DecGradient(), Agent::flushAVar(), SctpAgent::ForceSource(), handle_lms_pkt(), DiffusionProb::IncGradient(), SSMSRMAgent::is_active(), QSAgent::process(), TPAgent::recv(), SRMAgent::recv(), SSMSRMAgent::recv(), QSAgent::recv(), MIPBSAgent::recv(), HttpInvalAgent::recv(), CtrMcastEncap::recv(), SSMSRMAgent::recv_glb_sess(), SSMSRMAgent::recv_loc_sess(), SSMSRMAgent::recv_rep_sess(), SRMAgent::recv_sess(), MIPMHAgent::reg(), MIPBSAgent::send_ads(), send_dmcast(), LmsReceiver::send_dmcast(), LmsAgent::send_downstream(), SSMSRMAgent::send_glb_sess(), send_lms_pkt(), SSMSRMAgent::send_loc_sess(), LmsReceiver::send_nak(), LmsReceiver::send_refresh(), SSMSRMAgent::send_rep_sess(), SRMAgent::send_sess(), MIPMHAgent::send_sols(), send_spm(), LmsAgent::send_upstream(), SRMAgent::sendmsg(), SctpAgent::SetSource(), solicit_naks(), SRMAgent::start(), TcpAgent::trace_event(), TcpAgent::traceAll(), TcpAsymAgent::traceAll(), SctpAgent::TraceAll(), MultipleFastRtxSctpAgent::TraceAll(), MfrTimestampSctpAgent::TraceAll(), TcpAgent::traceVar(), TcpSessionAgent::traceVar(), TcpAsymAgent::traceVar(), SctpAgent::TraceVar(), MultipleFastRtxSctpAgent::TraceVar(), and MfrTimestampSctpAgent::TraceVar().

00099 { return here_.addr_; }

Packet * Agent::allocpkt int   )  const [protected, inherited]
 

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:

Packet * Agent::allocpkt  )  const [protected, inherited]
 

Definition at line 517 of file agent.cc.

References Packet::alloc(), and Agent::initpkt().

Referenced by XcpSink::ack(), TcpSink::ack(), QSTcpSink::ack(), SctpAgent::AddDestination(), Agent::allocpkt(), PingAgent::command(), MessageAgent::command(), mcastControlAgent::command(), LmsAgent::command(), LDPAgent::command(), LandmarkAgent::command(), IvsReceiver::command(), DSDV_Agent::command(), OmniMcastAgent::create_packet(), FloodingAgent::create_packet(), DiffusionAgent::create_packet(), SinkAgent::create_packet(), SensorQueryAgent::generate_query(), DSRAgent::getRouteForPacket(), LandmarkAgent::makeUpdate(), DSDV_Agent::makeUpdate(), XcpAgent::output(), TcpAgent::output(), VegasTcpAgent::output(), RFC793eduTcpAgent::output(), QSNewRenoTcpAgent::output(), IntTcpAgent::output(), AbsTcpAgent::output(), TCPTapAgent::processpkt(), AbsTcpSink::recv(), SAack_Agent::recv(), PingAgent::recv(), Encapsulator::recv(), MIPMHAgent::reg(), DSRAgent::returnSrcRouteToRequestor(), HttpInvalAgent::send(), MIPBSAgent::send_ads(), SRMAgent::send_ctrl(), SSMSRMAgent::send_ctrl(), GAFAgent::send_discovery(), send_dmcast(), LmsReceiver::send_dmcast(), SSMSRMAgent::send_glb_sess(), send_lms_pkt(), SSMSRMAgent::send_loc_sess(), LmsReceiver::send_nak(), LmsReceiver::send_refresh(), SSMSRMAgent::send_rep_sess(), SRMAgent::send_sess(), MIPMHAgent::send_sols(), send_spm(), RapAgent::SendAck(), UdpAgent::sendmsg(), SimpleTcpAgent::sendmsg(), SRMAgent::sendmsg(), SA_Agent::sendmsg(), RTPAgent::sendmsg(), PushbackAgent::sendMsg(), MessagePassingAgent::sendmsg(), sendmsg(), FullTcpAgent::sendpacket(), BayFullTcpAgent::sendpacket(), SctpAgent::SendPacket(), RapAgent::SendPacket(), TfrcAgent::sendpkt(), TfrcSinkAgent::sendpkt(), SA_Agent::sendpkt(), rtProtoDV::sendpkt(), RTPAgent::sendpkt(), RTCPAgent::sendpkt(), RLM_Sender::sendpkt(), IvsSource::sendpkt(), IcmpAgent::sendredirect(), SA_Agent::sendreq(), DSRAgent::sendRouteShortening(), SA_Agent::sendteardown(), TPAgent::sendto(), MessagePassingAgent::sendto(), solicit_naks(), and AbsDelAckSink::timeout().

00518 {
00519     Packet* p = Packet::alloc();
00520     initpkt(p);
00521     return (p);
00522 }

Here is the call graph for this function:

void Agent::attachApp Application app  )  [virtual, inherited]
 

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 }

void Agent::close  )  [virtual, inherited]
 

Reimplemented in FullTcpAgent.

Definition at line 377 of file agent.cc.

Referenced by Agent::command().

00378 {
00379 }

int LmsSender::command int  argc,
const char *const *  argv
[virtual]
 

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:

void Agent::connect nsaddr_t  dst  )  [virtual, inherited]
 

Definition at line 389 of file agent.cc.

Referenced by Agent::command().

00390 {
00391 /*
00392     dst_ = dst;
00393 */
00394 }

nsaddr_t& Agent::daddr  )  [inline, inherited]
 

Definition at line 101 of file agent.h.

References ns_addr_t::addr_, and Agent::dst_.

Referenced by SctpAgent::AddDestination(), IntTcpAgent::createTcpSession(), DSDV_Agent::lost_link(), CtrMcastEncap::recv(), PingResponder::reflect(), IntTcpAgent::rxmit_last(), send_dmcast(), send_lms_pkt(), IntTcpAgent::send_one(), rtProtoDV::sendpkt(), SctpAgent::SetDestination(), solicit_naks(), TcpAgent::trace_event(), TcpAgent::traceAll(), TcpAsymAgent::traceAll(), TcpAgent::traceVar(), TcpSessionAgent::traceVar(), TcpAsymAgent::traceVar(), SctpAgent::TraceVar(), MultipleFastRtxSctpAgent::TraceVar(), and MfrTimestampSctpAgent::TraceVar().

00101 { return dst_.addr_; }

void NsObject::debug const char *  fmt,
  ...
[virtual, inherited]
 

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 }

int Agent::delay_bind_dispatch const char *  varName,
const char *  localName,
TclObject tracer
[protected, virtual, inherited]
 

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:

void Agent::delay_bind_init_all  )  [protected, virtual, inherited]
 

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:

void Agent::deleteAgentTrace  )  [protected, inherited]
 

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:

nsaddr_t& Agent::dport  )  [inline, inherited]
 

Definition at line 102 of file agent.h.

References Agent::dst_, and ns_addr_t::port_.

Referenced by SctpAgent::AddDestination(), DSDV_Agent::lost_link(), CtrMcastEncap::recv(), AODV::recvAODV(), toraAgent::recvTORA(), IntTcpAgent::rxmit_last(), IntTcpAgent::send_one(), rtProtoDV::sendpkt(), SctpAgent::SetDestination(), TcpAgent::trace_event(), TcpAgent::traceAll(), TcpAsymAgent::traceAll(), TcpAgent::traceVar(), TcpSessionAgent::traceVar(), TcpAsymAgent::traceVar(), SctpAgent::TraceVar(), MultipleFastRtxSctpAgent::TraceVar(), and MfrTimestampSctpAgent::TraceVar().

00102 { return dst_.port_; }

void Connector::drop Packet p,
const char *  s
[protected, virtual, inherited]
 

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:

void Connector::drop Packet p  )  [virtual, inherited]
 

Reimplemented in XCPQueue.

Definition at line 106 of file connector.cc.

References Connector::drop_, Packet::free(), and NsObject::recv().

Referenced by ARPTable::arpresolve(), XCPQueue::drop(), JoBS::dropFront(), Vq::dropPacketForECN(), DSRAgent::dropSendBuff(), JoBS::dropTail(), dsREDQueue::edrop(), Vq::enque(), SRR::enque(), SimpleIntServ::enque(), SFQ::enque(), rtqueue::enque(), RIOQueue::enque(), REMQueue::enque(), REDQueue::enque(), RedPDQueue::enque(), PIQueue::enque(), Marker::enque(), GK::enque(), dsREDQueue::enque(), DRR::enque(), DropTail::enque(), Demarker::enque(), aodv_rqueue::enque(), toraAgent::forward(), AODV::forward(), DSDV_Agent::forwardPacket(), DSRAgent::getRouteForPacket(), HDLC::goBackNMode(), Snoop::handle(), DSRAgent::handleFlowForwarding(), DSRAgent::handleForwarding(), HDLC::handleRR(), DSDV_Agent::lost_link(), TCPTapAgent::processpkt(), CMUPriQueue::prq_enqueue(), rtqueue::purge(), SessionTTLChecker::recv(), TTLChecker::recv(), FullTcpAgent::recv(), BayFullTcpAgent::recv(), SatLL::recv(), LL::recv(), GAFPartner::recv(), Filter::recv(), DynamicLink::recv(), AODV::recvError(), PriQueue::recvHighPriority(), HDLC::recvIncoming(), toraAgent::reset(), HDLC::reset(), Queue< T >::reset(), LinkDelay::reset(), AODV::rt_ll_failed(), AODV::rt_purge(), toraAgent::rtRoutePacket(), HDLC::selectiveRepeatMode(), AODV::sendRequest(), SatLL::sendUp(), LL::sendUp(), DropTail::shrink_queue(), PriQueue::Terminate(), DSRAgent::Terminate(), CMUPriQueue::Terminate(), ARPTable::Terminate(), and DSRAgent::undeliverablePkt().

00107 {
00108     if (drop_ != 0)
00109         drop_->recv(p);
00110     else
00111         Packet::free(p);
00112 }

Here is the call graph for this function:

void Agent::dumpTracedVars  )  [protected, inherited]
 

packet_t Agent::get_pkttype  )  [inline, inherited]
 

Definition at line 104 of file agent.h.

References Agent::type_.

00104 { return type_; }

void NsObject::handle Event  )  [protected, virtual, inherited]
 

Implements Handler.

Reimplemented in LinkDelay, LL, AckRecons, and Snoop.

Definition at line 91 of file object.cc.

References NsObject::recv().

00092 {
00093     recv((Packet*)e);
00094 }

Here is the call graph for this function:

void LmsSender::handle_lms_pkt Packet pkt  )  [protected]
 

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:

void Agent::idle  )  [protected, virtual, inherited]
 

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().

00364 {
00365     if (app_)
00366         app_->resume();
00367 }

Here is the call graph for this function:

void Agent::initpkt Packet  )  const [protected, inherited]
 

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:

void Agent::insertOldValue TracedVar *  v,
const char *  value
[protected, inherited]
 

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 }

int NsObject::isdebug  )  const [inline, inherited]
 

Definition at line 61 of file object.h.

References NsObject::debug_.

00061 { return debug_; }

void Agent::listen  )  [virtual, inherited]
 

Reimplemented in BayFullTcpAgent, RapAgent, and FullTcpAgent.

Definition at line 381 of file agent.cc.

Referenced by Agent::command().

00382 {
00383 }

OldValue * Agent::lookupOldValue TracedVar *  v  )  [protected, inherited]
 

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 }

void Agent::monitorAgentTrace  )  [protected, inherited]
 

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:

nsaddr_t& Agent::port  )  [inline, inherited]
 

Definition at line 100 of file agent.h.

References Agent::here_, and ns_addr_t::port_.

Referenced by SctpAgent::ForceSource(), LmsAgent::pkt2agent(), MIPBSAgent::recv(), HttpInvalAgent::recv(), CtrMcastEncap::recv(), IntTcpAgent::rxmit_last(), IntTcpAgent::send_one(), LmsReceiver::send_refresh(), IcmpAgent::sendredirect(), SctpAgent::SetSource(), TcpAgent::trace_event(), TcpAgent::traceAll(), TcpAsymAgent::traceAll(), SctpAgent::TraceAll(), MultipleFastRtxSctpAgent::TraceAll(), MfrTimestampSctpAgent::TraceAll(), TcpAgent::traceVar(), TcpSessionAgent::traceVar(), TcpAsymAgent::traceVar(), SctpAgent::TraceVar(), MultipleFastRtxSctpAgent::TraceVar(), and MfrTimestampSctpAgent::TraceVar().

00100 { return here_.port_; }

void LmsSender::print_all_stats int  drops  )  [protected]
 

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 }

void LmsSender::print_stats  )  [protected]
 

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 }

void NsObject::recv Packet p,
const char *  s
[virtual, inherited]
 

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:

void LmsSender::recv Packet pkt,
Handler
[virtual]
 

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:

void Agent::recvBytes int  bytes  )  [protected, virtual, inherited]
 

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:

void Agent::recvOnly Packet  )  [inline, virtual, inherited]
 

Reimplemented from NsObject.

Definition at line 78 of file agent.h.

00078 {};

void NsObject::reset  )  [protected, virtual, inherited]
 

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().

00071 {
00072 }

virtual void Agent::send int  nbytes  )  [inline, virtual, inherited]
 

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:

virtual void Agent::send int  sz,
AppData data
[inline, virtual, inherited]
 

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:

void Agent::send Packet p,
Handler h
[inline, inherited]
 

Reimplemented from Connector.

Definition at line 80 of file agent.h.

References NsObject::recv(), and Connector::target_.

Referenced by XcpSink::ack(), SinkAgent::bcast_interest(), PingAgent::command(), MessageAgent::command(), mcastControlAgent::command(), LmsAgent::command(), LDPAgent::command(), SinkAgent::data_ready(), DSDV_Agent::forwardPacket(), FullTcpAgent::foutput(), XcpAgent::output(), TcpAgent::output(), RFC793eduTcpAgent::output(), QSNewRenoTcpAgent::output(), IntTcpAgent::output(), BayFullTcpAgent::output(), AbsTcpAgent::output(), AbsTcpSink::recv(), SRAgent::recv(), PingAgent::recv(), NatAgent::recv(), MIPBSAgent::recv(), Encapsulator::recv(), Decapsulator::recv(), MIPMHAgent::reg(), SctpAgent::RouteCalcDelayTimerExpiration(), HttpInvalAgent::send(), GAFAgent::send_discovery(), RapAgent::SendAck(), SimpleTcpAgent::sendmsg(), PushbackAgent::sendMsg(), FullTcpAgent::sendpacket(), BayFullTcpAgent::sendpacket(), SctpAgent::SendPacket(), RapAgent::SendPacket(), TfrcAgent::sendpkt(), TfrcSinkAgent::sendpkt(), SinkAgent::sendpkt(), IcmpAgent::sendredirect(), and AbsDelAckSink::timeout().

00080 { target_->recv(p, h); }

Here is the call graph for this function:

void LmsSender::send_dmcast hdr_lms lh,
int  seqno,
int  fid
[protected]
 

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:

void LmsSender::send_lms_pkt int  ,
int 
[protected]
 

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:

void LmsSender::send_spm  )  [protected]
 

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:

void Agent::sendmsg int  sz,
AppData ,
const char *  flags = 0
[virtual, inherited]
 

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:

void LmsSender::sendmsg int  nbytes,
const char *  flags = 0
[protected, virtual]
 

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:

virtual void Agent::sendto int  nbytes,
const char *  flags,
ns_addr_t  dst
[virtual, inherited]
 

Reimplemented in MessagePassingAgent.

virtual void Agent::sendto int  nbytes,
const char *  flags,
nsaddr_t  dst
[virtual, inherited]
 

void Agent::sendto int  sz,
AppData ,
const char *  flags,
ns_addr_t  dst
[virtual, inherited]
 

Reimplemented in MessagePassingAgent.

Definition at line 420 of file agent.cc.

00422 {
00423 }

void Agent::sendto int  sz,
AppData ,
const char *  flags,
nsaddr_t  dst
[virtual, inherited]
 

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:

void Agent::set_pkttype packet_t  pkttype  )  [inline, inherited]
 

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; }

void Connector::setDropTarget NsObject dt  )  [inline, inherited]
 

Definition at line 51 of file connector.h.

References Connector::drop_.

Referenced by XCPWrapQ::command().

00051 {drop_ = dt; } 

virtual int& Agent::size  )  [inline, virtual, inherited]
 

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_; }

void LmsSender::solicit_naks  )  [protected]
 

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:

void Connector::target NsObject target  )  [inline, inherited]
 

Definition at line 49 of file connector.h.

References Connector::target(), and Connector::target_.

00049 { target_ = target; }

Here is the call graph for this function:

NsObject* Connector::target  )  [inline, inherited]
 

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_; }

void Agent::timeout int  tno  )  [virtual, inherited]
 

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().

00348 {
00349 }

void Agent::trace TracedVar *  v  )  [protected, virtual, inherited]
 

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:

virtual void Agent::trace_event char *  eventtype  )  [inline, protected, virtual, inherited]
 

Reimplemented in TcpAgent.

Definition at line 149 of file agent.h.

00149 {}


Field Documentation

Application* Agent::app_ [protected, inherited]
 

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().

Tcl_Channel Agent::channel_ [protected, inherited]
 

Definition at line 133 of file agent.h.

Referenced by Agent::addAgentTrace(), Agent::command(), Agent::flushAVar(), Agent::monitorAgentTrace(), XcpAgent::output(), XcpAgent::recv_newack_helper(), Agent::trace(), TcpAgent::traceAll(), TcpAsymAgent::traceAll(), SctpAgent::TraceAll(), MultipleFastRtxSctpAgent::TraceAll(), MfrTimestampSctpAgent::TraceAll(), TcpAgent::traceVar(), TcpSessionAgent::traceVar(), TcpAsymAgent::traceVar(), SctpAgent::TraceVar(), MultipleFastRtxSctpAgent::TraceVar(), and MfrTimestampSctpAgent::TraceVar().

int NsObject::debug_ [protected, inherited]
 

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().

int Agent::defttl_ [protected, inherited]
 

Definition at line 124 of file agent.h.

Referenced by Agent::delay_bind_dispatch(), and Agent::initpkt().

int LmsSender::dmcasts_sent_ [protected]
 

Definition at line 102 of file lms-sender.cc.

Referenced by LmsSender(), print_stats(), and send_dmcast().

NsObject* Connector::drop_ [protected, inherited]
 

Definition at line 59 of file connector.h.

Referenced by XCPWrapQ::command(), Connector::command(), Connector::drop(), ErrorModel::recv(), and Connector::setDropTarget().

ns_addr_t Agent::dst_ [protected, inherited]
 

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().

int LmsSender::dup_reqs_ [protected]
 

Definition at line 101 of file lms-sender.cc.

Referenced by handle_lms_pkt(), LmsSender(), print_all_stats(), and print_stats().

EventTrace* Agent::et_ [protected, inherited]
 

Definition at line 148 of file agent.h.

Referenced by TcpAgent::command(), and TcpAgent::trace_event().

int Agent::fid_ [protected, inherited]
 

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().

int Agent::flags_ [protected, inherited]
 

Reimplemented in BayFullTcpAgent, RapAgent, and FullTcpAgent.

Definition at line 123 of file agent.h.

Referenced by Agent::delay_bind_dispatch().

ns_addr_t Agent::here_ [protected, inherited]
 

Definition at line 117 of file agent.h.

Referenced by Agent::addAgentTrace(), Agent::addr(), SinkAgent::bcast_interest(), MessagePassingAgent::command(), SinkAgent::data_ready(), OmniMcastAgent::DataForSink(), FloodingAgent::DataForSink(), DiffusionAgent::DataForSink(), Agent::delay_bind_dispatch(), Agent::deleteAgentTrace(), AODV::forward(), DiffusionProb::ForwardData(), DiffusionProb::ForwardTxFailed(), DiffusionRate::FwdOriginal(), DiffusionProb::FwdPosReinf(), DiffusionRate::FwdSubsample(), OmniMcastAgent::GodForwardData(), Agent::initpkt(), OmniMcastAgent::MACprepare(), FloodingAgent::MACprepare(), DiffusionAgent::MACprepare(), Agent::monitorAgentTrace(), Agent::port(), OmniMcastAgent::prepare_message(), FloodingAgent::prepare_message(), DiffusionAgent::prepare_message(), SSMSRMAgent::recv(), PingAgent::recv(), NatAgent::recv(), SinkAgent::sendpkt(), SinkAgent::set_addr(), SinkAgent::Terminate(), and Agent::trace().

int LmsSender::lms_cost_ [protected]
 

Definition at line 92 of file lms-sender.cc.

Referenced by command(), LmsSender(), and solicit_naks().

int LmsSender::lms_ttl_ [protected]
 

Definition at line 93 of file lms-sender.cc.

Referenced by command(), and solicit_naks().

int LmsSender::lmsPacketSize_ [protected]
 

Definition at line 95 of file lms-sender.cc.

Referenced by LmsSender(), and send_lms_pkt().

int LmsSender::max_dup_naks_ = 0 [static, protected]
 

Definition at line 104 of file lms-sender.cc.

Referenced by add_req(), LmsSender(), and print_all_stats().

LmsSender* LmsSender::next_
 

Definition at line 75 of file lms-sender.cc.

OldValue* Agent::oldValueList_ [protected, inherited]
 

Definition at line 135 of file agent.h.

Referenced by Agent::insertOldValue(), Agent::lookupOldValue(), and Agent::~Agent().

int LmsSender::packetSize_ [protected]
 

Definition at line 94 of file lms-sender.cc.

Referenced by command(), LmsSender(), send_dmcast(), send_lms_pkt(), and sendmsg().

int Agent::prio_ [protected, inherited]
 

Definition at line 122 of file agent.h.

Referenced by Agent::delay_bind_dispatch(), and Agent::initpkt().

Packet* LmsSender::req_list_ [protected]
 

Definition at line 96 of file lms-sender.cc.

Referenced by add_req(), and LmsSender().

int LmsSender::req_list_sz_ [protected]
 

Definition at line 97 of file lms-sender.cc.

Referenced by add_req().

int LmsSender::req_rcvd_ [protected]
 

Definition at line 100 of file lms-sender.cc.

Referenced by handle_lms_pkt(), LmsSender(), and print_stats().

int LmsSender::seqno_ [protected]
 

Definition at line 107 of file lms-sender.cc.

Referenced by print_stats(), and sendmsg().

int Agent::size_ [protected, inherited]
 

Reimplemented in SA_Agent, and AckRecons.

Definition at line 119 of file agent.h.

Referenced by AbsDelAckSink::AbsDelAckSink(), AbsTcpAgent::AbsTcpAgent(), AbsTcpRenoAckAgent::AbsTcpRenoAckAgent(), AbsTcpRenoDelAckAgent::AbsTcpRenoDelAckAgent(), AbsTcpSink::AbsTcpSink(), AbsTcpTahoeAckAgent::AbsTcpTahoeAckAgent(), AbsTcpTahoeDelAckAgent::AbsTcpTahoeDelAckAgent(), RTCPAgent::command(), LDPAgent::command(), SinkAgent::command(), TfrcAgent::decrease_rate(), XcpSink::delay_bind_dispatch(), TcpAgent::delay_bind_dispatch(), TcpSink::delay_bind_dispatch(), FullTcpAgent::foutput(), DSRAgent::getRouteForPacket(), TfrcAgent::increase_rate(), TfrcAgent::initial_rate(), TcpAgent::initial_window(), Agent::initpkt(), RapAgent::IpgTimeout(), IvsReceiver::IvsReceiver(), LmsAgent::LmsAgent(), LmsReceiver::LmsReceiver(), mcastControlAgent::mcastControlAgent(), MessageAgent::MessageAgent(), MessagePassingAgent::MessagePassingAgent(), MIPBSAgent::MIPBSAgent(), MIPMHAgent::MIPMHAgent(), TfrcAgent::nextpkt(), IntTcpAgent::opencwnd(), XcpAgent::output(), TcpAgent::output(), PingAgent::PingAgent(), TcpAgent::processQuickStart(), RapAgent::RapAgent(), TfrcAgent::recv(), TcpSessionAgent::recv(), NewRenoTcpAgent::recv(), TfrcAgent::reduce_rate_on_no_feedback(), SctpAgent::Reset(), RLM_Sender::RLM_Sender(), RTCPAgent::RTCPAgent(), RTPAgent::RTPAgent(), IntTcpAgent::rxmit_last(), send_lms_pkt(), TcpSessionAgent::send_much(), LmsReceiver::send_nak(), IntTcpAgent::send_one(), LmsReceiver::send_refresh(), send_spm(), UdpAgent::sendmsg(), TfrcAgent::sendmsg(), TcpAgent::sendmsg(), SRMAgent::sendmsg(), RTPAgent::sendmsg(), MessagePassingAgent::sendmsg(), RapAgent::SendPacket(), TfrcAgent::sendpkt(), rtProtoDV::sendpkt(), SinkAgent::sendpkt(), TPAgent::sendto(), MessagePassingAgent::sendto(), SinkAgent::SinkAgent(), Agent::size(), TfrcAgent::slowstart(), solicit_naks(), TfrcAgent::start(), TfrcAgent::TfrcAgent(), TfrcSinkAgent::TfrcSinkAgent(), RTPAgent::timeout(), RTCPAgent::timeout(), TPAgent::TPAgent(), UdpAgent::UdpAgent(), and TfrcSinkAgent::weighted_average1().

int LmsSender::spm_seqno_ [protected]
 

Definition at line 91 of file lms-sender.cc.

Referenced by LmsSender(), and send_spm().

NsObject* Connector::target_ [protected, inherited]
 

Definition at line 58 of file connector.h.

Referenced by SRAgent::command(), SA_Agent::command(), IvsReceiver::command(), MultiFieldFilter::command(), Filter::command(), Connector::command(), DiffusionAgent::DiffusionAgent(), DSRAgent::DSRAgent(), PromotionTimer::expire(), FloodingAgent::FloodingAgent(), SctpAgent::ForceSource(), toraAgent::forward(), AODV::forward(), DSDV_Agent::forwardPacket(), SensorQueryAgent::generate_query(), DSDVTriggerHandler::handle(), AckRecons::handle(), DSDV_Agent::helper_callback(), DSDV_Agent::lost_link(), OmniMcastAgent::OmniMcastAgent(), LandmarkAgent::periodic_callback(), TCPTapAgent::processpkt(), IPTapAgent::processpkt(), CMUPriQueue::prq_enqueue(), CMUPriQueue::prq_resume(), Trace::recv(), TraceIpMac::recv(), TraceIp::recv(), SRMAgent::recv(), SSMSRMAgent::recv(), SAack_Agent::recv(), Queue< T >::recv(), PingResponder::recv(), MIPEncapsulator::recv(), LmsAgent::recv(), HackLossyLink::recv(), FQ::recv(), ErrorModel::recv(), DynamicLink::recv(), DSRAgent::recv(), DelayModel::recv(), LinkDelay::recv(), CtrMcastDecap::recv(), CtrMcastEncap::recv(), CMUTrace::recv(), Trace::recvOnly(), Queue< T >::resume(), LinkDelay::send(), Connector::send(), Agent::send(), MIPBSAgent::send_ads(), SRMAgent::send_ctrl(), SSMSRMAgent::send_ctrl(), send_dmcast(), LmsReceiver::send_dmcast(), LmsAgent::send_downstream(), send_lms_pkt(), LmsReceiver::send_nak(), LmsReceiver::send_refresh(), MIPMHAgent::send_sols(), send_spm(), LmsAgent::send_upstream(), LandmarkAgent::SendChangedTagListUpdate(), AODV::sendError(), AODV::sendHello(), UdpAgent::sendmsg(), SRMAgent::sendmsg(), SA_Agent::sendmsg(), RTPAgent::sendmsg(), MessagePassingAgent::sendmsg(), sendmsg(), DSDV_Agent::sendOutBCastPkt(), SA_Agent::sendpkt(), rtProtoDV::sendpkt(), RTPAgent::sendpkt(), RTCPAgent::sendpkt(), IvsSource::sendpkt(), AODV::sendReply(), AODV::sendRequest(), TPAgent::sendto(), MessagePassingAgent::sendto(), SctpAgent::SetSource(), solicit_naks(), Connector::target(), toraAgent::tora_output(), and Delayer::try_send().

char* Agent::traceName_ [protected, inherited]
 

Definition at line 134 of file agent.h.

Referenced by Agent::addAgentTrace(), Agent::command(), Agent::deleteAgentTrace(), Agent::flushAVar(), Agent::monitorAgentTrace(), and Agent::trace().

packet_t Agent::type_ [protected, inherited]
 

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().

int Agent::uidcnt_ [static, protected, inherited]
 

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().

char LmsSender::uname_[16] [protected]
 

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().


The documentation for this class was generated from the following file:
Generated on Tue Mar 6 17:12:45 2007 for ns2 Network Simulator 2.29 by  doxygen 1.4.6