Main Page | Namespace List | Class Hierarchy | Alphabetical List | Compound List | File List | Compound Members | File Members

LDPAgent Class Reference

#include <ldp.h>

Inheritance diagram for LDPAgent:

Inheritance graph
[legend]
Collaboration diagram for LDPAgent:

Collaboration graph
[legend]
List of all members.

Public Member Functions

 LDPAgent ()
virtual int command (int argc, const char *const *argv)
virtual void recv (Packet *, Handler *)
virtual void delay_bind_init_all ()
virtual int delay_bind_dispatch (const char *, const char *, TclObject *)
int peer () const
void turn_on_trace ()
void PKTinit (hdr_ldp *hdrldp, int msgtype, const char *pathvec, const char *er)
int PKTsize (const char *pathvec, const char *er)
int MSGTinsert (int MsgID, int FEC, int LspID, int Src, int PMsgID)
void MSGTdelete (int entrynb)
int MSGTlocate (int MsgID)
int MSGTlocate (int FEC, int LspID, int Src)
void MSGTlookup (int entrynb, int &MsgID, int &FEC, int &LspID, int &src, int &PMsgID, int &LabelOp)
void MSGTdump ()
virtual void recv (Packet *p, const char *s)
void recvOnly (Packet *)
void send (Packet *p, Handler *h)
virtual void send (int sz, AppData *data)
virtual void send (int nbytes)
virtual void timeout (int tno)
virtual void sendmsg (int sz, AppData *, const char *flags=0)
virtual void sendmsg (int nbytes, const char *flags=0)
virtual void sendto (int sz, AppData *, const char *flags, nsaddr_t dst)
virtual void sendto (int nbytes, const char *flags, nsaddr_t dst)
virtual void connect (nsaddr_t dst)
virtual void close ()
virtual void listen ()
virtual void attachApp (Application *app)
virtual int & size ()
nsaddr_taddr ()
nsaddr_tport ()
nsaddr_tdaddr ()
nsaddr_tdport ()
void set_pkttype (packet_t pkttype)
packet_t get_pkttype ()
NsObjecttarget ()
virtual void drop (Packet *p)
int isdebug () const
virtual void debug (const char *fmt,...)

Protected Member Functions

void trace (ns_addr_t src, hdr_ldp *hdrldp)
char * parse_msgtype (int msgtype, int lspid)
char * parse_status (int status)
virtual void recvBytes (int bytes)
virtual void idle ()
Packetallocpkt () const
Packetallocpkt (int) const
void initpkt (Packet *) const
virtual void trace (TracedVar *v)
void deleteAgentTrace ()
void addAgentTrace (const char *name)
void monitorAgentTrace ()
OldValuelookupOldValue (TracedVar *v)
void insertOldValue (TracedVar *v, const char *value)
void dumpTracedVars ()
virtual void trace_event (char *eventtype)
virtual void drop (Packet *p, const char *s)
virtual void reset ()
void handle (Event *)

Protected Attributes

int new_msgid_
int trace_ldp_
int peer_
MsgT MSGT_
ns_addr_t here_
ns_addr_t dst_
int size_
packet_t type_
int fid_
int prio_
int flags_
int defttl_
Tcl_Channel channel_
char * traceName_
OldValueoldValueList_
Applicationapp_
EventTraceet_
NsObjecttarget_
NsObjectdrop_
int debug_

Static Protected Attributes

int uidcnt_

Constructor & Destructor Documentation

LDPAgent::LDPAgent  ) 
 

Definition at line 69 of file ldp.cc.

References MSGT_, MsgT::NB, and PT_LDP.

00069                    : Agent(PT_LDP), 
00070         new_msgid_(0), trace_ldp_(0), peer_(0)
00071 {
00072         MSGT_.NB      = 0;
00073 }


Member Function Documentation

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 96 of file agent.h.

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

Referenced by LandmarkAgent::assign_lmaddress(), SSMSRMAgent::command(), IntTcpAgent::createTcpSession(), Agent::flushAVar(), LmsSender::handle_lms_pkt(), SSMSRMAgent::is_active(), QSNewRenoTcpAgent::recv(), TcpAsymSink::recv(), SRMAgent::recv(), SSMSRMAgent::recv(), QSAgent::recv(), MIPBSAgent::recv(), LmsAgent::recv(), HttpInvalAgent::recv(), CtrMcastEncap::recv(), SSMSRMAgent::recv_glb_sess(), SSMSRMAgent::recv_loc_sess(), SSMSRMAgent::recv_rep_sess(), SRMAgent::recv_sess(), TapAgent::recvpkt(), MIPMHAgent::reg(), MIPBSAgent::send_ads(), LmsSender::send_dmcast(), LmsReceiver::send_dmcast(), LmsAgent::send_downstream(), SSMSRMAgent::send_glb_sess(), LmsSender::send_lms_pkt(), SSMSRMAgent::send_loc_sess(), LmsReceiver::send_nak(), LmsReceiver::send_refresh(), SSMSRMAgent::send_rep_sess(), SRMAgent::send_sess(), MIPMHAgent::send_sols(), LmsSender::send_spm(), LmsAgent::send_upstream(), SRMAgent::sendmsg(), LmsSender::solicit_naks(), SRMAgent::start(), TcpAgent::trace_event(), TcpAgent::traceAll(), TcpAsymAgent::traceAll(), TcpAgent::traceVar(), TcpSessionAgent::traceVar(), and TcpAsymAgent::traceVar().

00096 { return here_.addr_; }

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

Definition at line 517 of file agent.cc.

References Packet::allocdata(), and Agent::allocpkt().

00518 {
00519         Packet* p = allocpkt();
00520 
00521         if (n > 0)
00522                 p->allocdata(n);
00523 
00524         return(p);
00525 }

Here is the call graph for this function:

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

Definition at line 506 of file agent.cc.

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

Referenced by TcpSink::ack(), QSTcpSink::ack(), Agent::allocpkt(), PingAgent::command(), MessageAgent::command(), mcastControlAgent::command(), LmsAgent::command(), 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(), TcpAgent::output(), VegasTcpAgent::output(), RFC793eduTcpAgent::output(), QSNewRenoTcpAgent::output(), IntTcpAgent::output(), AbsTcpAgent::output(), TCPTapAgent::processpkt(), AbsDelAckSink::recv(), AbsTcpSink::recv(), SAack_Agent::recv(), PingAgent::recv(), Encapsulator::recv(), TapAgent::recvpkt(), MIPMHAgent::reg(), DSRAgent::replyFromRouteCache(), DSRAgent::returnSrcRouteToRequestor(), HttpInvalAgent::send(), MIPBSAgent::send_ads(), SRMAgent::send_ctrl(), SSMSRMAgent::send_ctrl(), MFTPSndAgent::send_data(), GAFAgent::send_discovery(), LmsSender::send_dmcast(), LmsReceiver::send_dmcast(), SSMSRMAgent::send_glb_sess(), LmsSender::send_lms_pkt(), SSMSRMAgent::send_loc_sess(), MFTPRcvAgent::send_nak(), LmsReceiver::send_nak(), LmsReceiver::send_refresh(), SSMSRMAgent::send_rep_sess(), SRMAgent::send_sess(), MIPMHAgent::send_sols(), LmsSender::send_spm(), MFTPSndAgent::send_status_request(), RapAgent::SendAck(), UdpAgent::sendmsg(), SimpleTcpAgent::sendmsg(), SRMAgent::sendmsg(), SA_Agent::sendmsg(), RTPAgent::sendmsg(), PushbackAgent::sendMsg(), LmsSender::sendmsg(), FullTcpAgent::sendpacket(), BayFullTcpAgent::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(), LmsSender::solicit_naks(), and AbsDelAckSink::timeout().

00507 {
00508         Packet* p = Packet::alloc();
00509         initpkt(p);
00510         return (p);
00511 }

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 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 LDPAgent::command int  argc,
const char *const *  argv
[virtual]
 

Reimplemented from Agent.

Definition at line 150 of file ldp.cc.

References hdr_ldp::access(), Agent::allocpkt(), Agent::command(), MsgT::Entry, MsgTable::ERLspID, hdr_ldp::fec, hdr_ldp::label, MsgTable::LabelOp, LDP_LabelPASS, LDP_LabelSTACK, LDP_LoopDetected, LDP_MappingMSG, LDP_NoRoute, LDP_NotificationMSG, LDP_ReleaseMSG, LDP_RequestMSG, LDP_WithdrawMSG, hdr_ldp::lspid, MSGT_, MSGTdelete(), MSGTdump(), MSGTinsert(), MSGTlocate(), MSGTlookup(), new_msgid_, peer_, PKTinit(), PKTsize(), hdr_ldp::rc, hdr_ldp::reqmsgid, Agent::send(), Agent::size_, and hdr_ldp::status.

00151 {
00152         Tcl& tcl = Tcl::instance();
00153         if (argc == 2) {      
00154                 if (strcmp(argv[1], "msgtbl-dump") == 0) {              
00155                         MSGTdump();
00156                         return (TCL_OK);
00157                 } else if (strcmp(argv[1], "new-msgid") == 0) {
00158                         tcl.resultf("%d", ++new_msgid_);
00159                         return (TCL_OK);
00160                 } else if (strcmp(argv[1], "peer-ldpnode") == 0) {
00161                         tcl.resultf("%d", peer_);
00162                         return (TCL_OK);
00163                 }
00164         } else if (argc == 3) {
00165                 if (strcmp(argv[1], "set-peer") == 0) {
00166                         peer_ = atoi(argv[2]);
00167                         return (TCL_OK);
00168                 }
00169 
00170                 // The following is shared by all if-s in this branch
00171                 int MsgID = atoi(argv[2]);
00172                 int msgid,fec,lspid,src,pmsgid,labelop;
00173                 int entrynb = MSGTlocate(MsgID);
00174                 MSGTlookup(entrynb,msgid,fec,lspid,src,pmsgid,labelop);
00175 
00176                 if (strcmp(argv[1], "msgtbl-clear") == 0) {
00177                         /* <agent> MSGTdelete MsgID */
00178                         if (entrynb > -1)  
00179                                 MSGTdelete(entrynb);
00180                         return (TCL_OK);
00181                 } else if (strcmp(argv[1], "msgtbl-get-src") == 0) {
00182                         /* <agent> GetMSGTsrc MsgID */
00183                         tcl.resultf("%d", src);
00184                         return (TCL_OK);
00185                 } else if (strcmp(argv[1], "msgtbl-get-reqmsgid") == 0) {
00186                         /* <agent> GetMSGTpmsgid msgid */
00187                         tcl.resultf("%d",pmsgid);
00188                         return (TCL_OK);
00189                 } else if (strcmp(argv[1], "msgtbl-get-labelop") == 0) {
00190                         /* <agent> GetMSGTlabelpass msgid */
00191                         tcl.resultf("%d", labelop);
00192                         return (TCL_OK);
00193                 } else if (strcmp(argv[1], "msgtbl-get-erlspid") == 0) {
00194                         /* 
00195                          * <agent> msgtbl-get-erlspid <msgid>
00196                          */
00197                         tcl.resultf("%d",MSGT_.Entry[entrynb].ERLspID);
00198                         return (TCL_OK);
00199                 } else if (strcmp(argv[1], "msgtbl-set-labelpass") == 0) {
00200                         /* 
00201                          * <agent> msgtbl-set-labelpass <msgid>
00202                          */
00203                         MSGT_.Entry[entrynb].LabelOp = LDP_LabelPASS;
00204                         return (TCL_OK);
00205                 } 
00206         } else if (argc == 4) {      
00207                 if (strcmp(argv[1], "notification-msg") == 0) {
00208                         /* 
00209                          * <agent> notification-msg <status> <lspid>
00210                          */
00211                         size_ = PKTsize("*", "*");
00212                         if ( atoi(argv[3]) > -1 )  /* packet size adjustment */
00213                                 size_ += 16;
00214                         else
00215                                 size_ += 8;
00216                         Packet* pkt = allocpkt();
00217                         hdr_ldp *hdrldp = hdr_ldp::access(pkt);
00218                         PKTinit(hdrldp, LDP_NotificationMSG, "*", "*");
00219 
00220                         if (strcmp(argv[2], "LoopDetected") == 0)
00221                                 hdrldp->status = LDP_LoopDetected;
00222                         else if (strcmp(argv[2], "NoRoute") == 0)
00223                                 hdrldp->status  = LDP_NoRoute;
00224        
00225                         hdrldp->lspid   = atoi(argv[3]);
00226                         send(pkt, 0);
00227                         return (TCL_OK);
00228                 } else if (strcmp(argv[1], "withdraw-msg") == 0) {
00229                         /* 
00230                          * <agent> withdraw-msg <fec> <lspid>
00231                          */
00232                         size_ = PKTsize("*","*");
00233                         if ( atoi(argv[3]) > -1 )  /* packet size adjustment */
00234                                 size_ += 16;
00235                         else
00236                                 size_ += 8;
00237                         Packet* pkt = allocpkt();
00238                         hdr_ldp *hdrldp = hdr_ldp::access(pkt);
00239                         PKTinit(hdrldp, LDP_WithdrawMSG, "*", "*");
00240                         hdrldp->fec    = atoi(argv[2]);
00241                         hdrldp->lspid  = atoi(argv[3]);
00242                         send(pkt, 0);
00243                         return (TCL_OK);
00244                 } else if (strcmp(argv[1], "release-msg") == 0) {
00245                         /* 
00246                          * <agent> release-msg <fec> <lspid>
00247                          */
00248                         size_ = PKTsize("*","*");
00249                         if ( atoi(argv[3]) > -1 )  /* packet size adjustment */
00250                                 size_ += 16;
00251                         else
00252                                 size_ += 8;
00253                         Packet* pkt = allocpkt();
00254                         hdr_ldp *hdrldp = hdr_ldp::access(pkt);
00255                         PKTinit(hdrldp, LDP_ReleaseMSG,"*","*");
00256                         hdrldp->fec     = atoi(argv[2]);
00257                         hdrldp->lspid   = atoi(argv[3]);
00258                         send(pkt, 0);
00259                         return (TCL_OK);
00260                 } else if (strcmp(argv[1], "request-msg") == 0) {
00261                         /* 
00262                          * <agent> request-msg <fec> <pathvec>
00263                          */
00264                         size_ = PKTsize(argv[3],"*");
00265                         size_ += 8;      /* packet size adjustment */
00266                         Packet* pkt = allocpkt();
00267                         hdr_ldp *hdrldp = hdr_ldp::access(pkt);
00268                         PKTinit(hdrldp, LDP_RequestMSG, argv[3], "*");
00269                         hdrldp->fec     = atoi(argv[2]);
00270                         send(pkt, 0);
00271                         return (TCL_OK);
00272                 } else if (strcmp(argv[1], "msgtbl-set-labelstack") == 0) {
00273                         /*
00274                          * <agent> msgtbl-set-labelstack <msgid> <erlspid>
00275                          */
00276                         int MsgID   = atoi(argv[2]);
00277                         int ERLspID = atoi(argv[3]);
00278                         int entrynb = MSGTlocate(MsgID);
00279                         MSGT_.Entry[entrynb].LabelOp = LDP_LabelSTACK;
00280                         MSGT_.Entry[entrynb].ERLspID = ERLspID;
00281                         return (TCL_OK);
00282                 } 
00283         } else if (argc == 5) {      
00284                 if (strcmp(argv[1], "msgtbl-get-msgid") == 0) {
00285                         /* 
00286                          * <classifier> msgtbl-get-msgid <FEC> <LspID> <Src>
00287                          */
00288                         int msgid,tmp;
00289                         int fec    = atoi(argv[2]);
00290                         int LspID  = atoi(argv[3]);
00291                         int src    = atoi(argv[4]);     
00292                         int entrynb = MSGTlocate(fec,LspID,src);
00293 
00294                         MSGTlookup(entrynb,msgid,tmp,tmp,tmp,tmp,tmp);
00295                         tcl.resultf("%d", msgid);
00296                         return (TCL_OK);
00297                 }
00298         } else if (argc == 6) {
00299                 if (strcmp(argv[1], "mapping-msg") == 0) {
00300                         /* 
00301                          * <agent> mapping <fec> <label> <pathvec> <premsgid>
00302                          */
00303                         size_ = PKTsize(argv[4],"*");
00304                         if ( atoi(argv[5]) > -1 )  /* packet size adjustment*/
00305                                 size_ += 24;
00306                         else
00307                                 size_ += 16;
00308                         Packet* pkt = allocpkt();
00309                         hdr_ldp *hdrldp = hdr_ldp::access(pkt);
00310                         PKTinit(hdrldp, LDP_MappingMSG, argv[4], "*");
00311                         hdrldp->fec     = atoi(argv[2]);
00312                         hdrldp->label   = atoi(argv[3]);
00313                         hdrldp->reqmsgid= atoi(argv[5]);
00314                         send(pkt, 0);
00315                         return (TCL_OK);
00316                 } else if (strcmp(argv[1], "cr-mapping-msg") == 0) {
00317                         /* 
00318                          * <agent> cr-mapping-msg <fec> <label> <lspid>
00319                          *         <premsgid>
00320                          */
00321                         size_ = PKTsize("*","*");
00322                         size_ += 32;      /* packet size adjustment */
00323                         Packet* pkt = allocpkt();
00324                         hdr_ldp *hdrldp = hdr_ldp::access(pkt);
00325                         PKTinit(hdrldp, LDP_MappingMSG, "*", "*");
00326                         hdrldp->fec     = atoi(argv[2]);
00327                         hdrldp->label   = atoi(argv[3]);
00328                         hdrldp->lspid   = atoi(argv[4]);
00329                         hdrldp->reqmsgid= atoi(argv[5]);
00330                         send(pkt, 0);
00331                         return (TCL_OK);
00332                 }
00333         } else if (argc == 7) {      
00334                 if (strcmp(argv[1], "cr-request-msg") == 0) {
00335                         /* 
00336                          * <agent> cr-request <fec> <pathvec> <er> <lspid> <rc>
00337                          */
00338                         size_ = PKTsize(argv[3],argv[4]);
00339                         if (atoi(argv[6]) > -1)  /* packet size adjustment */
00340                                 size_ += 24;
00341                         else
00342                                 size_ += 16;
00343                         Packet* pkt = allocpkt();
00344                         hdr_ldp *hdrldp = hdr_ldp::access(pkt);
00345                         PKTinit(hdrldp, LDP_RequestMSG, argv[3], argv[4]);
00346                         hdrldp->fec     = atoi(argv[2]);
00347                         hdrldp->lspid   = atoi(argv[5]);
00348                         hdrldp->rc      = atoi(argv[6]);
00349                         send(pkt, 0);
00350                         return (TCL_OK);
00351                 } else if (strcmp(argv[1], "msgtbl-install") == 0) {
00352                         /* 
00353                          * <agent> msgtbl-install <msgid> <FEC> <LspID> 
00354                          *         <Src> <Pmsgid>
00355                          */
00356                         int msgid  = atoi(argv[2]);
00357                         int fec    = atoi(argv[3]);
00358                         int LspID  = atoi(argv[4]);
00359                         int src    = atoi(argv[5]);     
00360                         int PMsgID = atoi(argv[6]);     
00361                         int entrynb = MSGTinsert(msgid,fec,LspID,src,PMsgID);
00362                         tcl.resultf("%d", entrynb);
00363                         return (TCL_OK);
00364                 }
00365         }
00366         return (Agent::command(argc, argv));
00367 }

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 98 of file agent.h.

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

Referenced by IntTcpAgent::createTcpSession(), DSDV_Agent::lost_link(), TcpAsymSink::recv(), CtrMcastEncap::recv(), PingResponder::reflect(), IntTcpAgent::rxmit_last(), LmsSender::send_dmcast(), LmsSender::send_lms_pkt(), IntTcpAgent::send_one(), rtProtoDV::sendpkt(), LmsSender::solicit_naks(), TcpAgent::trace_event(), TcpAgent::traceAll(), TcpAsymAgent::traceAll(), TcpAgent::traceVar(), TcpSessionAgent::traceVar(), and TcpAsymAgent::traceVar().

00098 { 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 LDPAgent::delay_bind_dispatch const char *  ,
const char *  ,
TclObject
[virtual]
 

Reimplemented from Agent.

Definition at line 81 of file ldp.cc.

References Agent::delay_bind_dispatch(), and trace_ldp_.

00083 {
00084         if (delay_bind_bool(varName,localName,"trace_ldp_",&trace_ldp_,tracer))
00085                 return TCL_OK;
00086         return Agent::delay_bind_dispatch(varName, localName, tracer);
00087 }

Here is the call graph for this function:

void LDPAgent::delay_bind_init_all  )  [virtual]
 

Reimplemented from Agent.

Definition at line 75 of file ldp.cc.

References Agent::delay_bind_init_all().

00076 {
00077         delay_bind_init_one("trace_ldp_");
00078         Agent::delay_bind_init_all();
00079 }

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 99 of file agent.h.

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

Referenced by DSDV_Agent::lost_link(), TcpAsymSink::recv(), CtrMcastEncap::recv(), IntTcpAgent::rxmit_last(), IntTcpAgent::send_one(), rtProtoDV::sendpkt(), TcpAgent::trace_event(), TcpAgent::traceAll(), TcpAsymAgent::traceAll(), TcpAgent::traceVar(), TcpSessionAgent::traceVar(), and TcpAsymAgent::traceVar().

00099 { 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]
 

Definition at line 106 of file connector.cc.

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

Referenced by DSRAgent::acceptRouteReply(), ARPTable::arpresolve(), 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(), LandmarkAgent::ForwardPacket(), DSDV_Agent::forwardPacket(), DSRAgent::getRouteForPacket(), Snoop::handle(), DSRAgent::handleFlowForwarding(), DSRAgent::handleForwarding(), DSDV_Agent::lost_link(), TCPTapAgent::processpkt(), CMUPriQueue::prq_enqueue(), rtqueue::purge(), imepAgent::purgeReXmitQ(), SessionTTLChecker::recv(), TTLChecker::recv(), toraAgent::recv(), FullTcpAgent::recv(), BayFullTcpAgent::recv(), TBF::recv(), SatLL::recv(), LL::recv(), GAFPartner::recv(), FloodAgent::recv(), Filter::recv(), DynamicLink::recv(), DSDV_Agent::recv(), AODV::recv(), AODV::recvError(), PriQueue::recvHighPriority(), AODV::recvReply(), toraAgent::reset(), Queue< T >::reset(), LinkDelay::reset(), AODV::rt_ll_failed(), AODV::rt_purge(), AODV::rt_resolve(), toraAgent::rtRoutePacket(), TCPTapAgent::sendpkt(), TapAgent::sendpkt(), IPTapAgent::sendpkt(), AODV::sendRequest(), SatLL::sendUp(), LL::sendUp(), 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 101 of file agent.h.

References packet_t, and Agent::type_.

Referenced by CBR_Traffic::init().

00101 { 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 Agent::idle  )  [protected, virtual, inherited]
 

Definition at line 363 of file agent.cc.

References Agent::app_, and Application::resume().

Referenced by FullTcpAgent::foutput(), TcpAgent::output(), VegasTcpAgent::output(), RFC793eduTcpAgent::output(), QSNewRenoTcpAgent::output(), IntTcpAgent::output(), BayFullTcpAgent::output(), UdpAgent::sendmsg(), SA_Agent::sendmsg(), and RTPAgent::sendmsg().

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 446 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(), NixVec::Reset(), hdr_ip::saddr(), hdr_cmn::size(), Agent::size_, hdr_ip::sport(), hdr_cmn::timestamp(), hdr_ip::ttl(), Agent::type_, hdr_cmn::uid(), and Agent::uidcnt_.

Referenced by Agent::allocpkt(), and PingResponder::recv().

00447 {
00448         hdr_cmn* ch = hdr_cmn::access(p);
00449         ch->uid() = uidcnt_++;
00450         ch->ptype() = type_;
00451         ch->size() = size_;
00452         ch->timestamp() = Scheduler::instance().clock();
00453         ch->iface() = UNKN_IFACE.value(); // from packet.h (agent is local)
00454         ch->direction() = hdr_cmn::NONE;
00455 
00456         ch->error() = 0;        /* pkt not corrupt to start with */
00457 
00458         hdr_ip* iph = hdr_ip::access(p);
00459         iph->saddr() = here_.addr_;
00460         iph->sport() = here_.port_;
00461         iph->daddr() = dst_.addr_;
00462         iph->dport() = dst_.port_;
00463         
00464         //DEBUG
00465         //if (dst_ != -1)
00466         //  printf("pl break\n");
00467         
00468         iph->flowid() = fid_;
00469         iph->prio() = prio_;
00470         iph->ttl() = defttl_;
00471 
00472         hdr_flags* hf = hdr_flags::access(p);
00473         hf->ecn_capable_ = 0;
00474         hf->ecn_ = 0;
00475         hf->eln_ = 0;
00476         hf->ecn_to_echo_ = 0;
00477         hf->fs_ = 0;
00478         hf->no_ts_ = 0;
00479         hf->pri_ = 0;
00480         hf->cong_action_ = 0;
00481 #ifdef HAVE_STL
00482 
00483         hdr_nv* nv = hdr_nv::access(p);
00484         if (0)
00485                 printf("Off hdr_nv %d, ip_hdr %d myaddr %ld\n",
00486                        hdr_nv::offset(), hdr_ip::offset(), here_.addr_);
00487         NixNode* pNixNode = NixNode::GetNodeObject(here_.addr_);
00488         if (0)
00489                 printf("Node Object %p\n", pNixNode);
00490         if (pNixNode) { 
00491                 // If we get non-null, indicates nixvector routing in use
00492                 // Delete any left over nv in the packet
00493                 // Get a nixvector to the target (may create new)
00494                 NixVec* pNv = pNixNode->GetNixVector(dst_.addr_);
00495                 pNv->Reset();
00496                 nv->nv() = pNv; // And set the nixvec in the packet
00497                 nv->h_used = 0; // And reset used portion to 0
00498         }
00499 #endif //HAVE_STL
00500 }

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:

void LDPAgent::MSGTdelete int  entrynb  ) 
 

Definition at line 467 of file ldp.cc.

References MsgT::Entry, MsgTable::ERLspID, MsgTable::FEC, MsgTable::LabelOp, MsgTable::LspID, MsgTable::MsgID, MSGT_, MsgT::NB, MsgTable::PMsgID, and MsgTable::Src.

Referenced by command().

00468 {
00469         if ( (entrynb > -1) && (entrynb < MSGT_.NB) ) {
00470                 MSGT_.Entry[entrynb].MsgID = -1;
00471                 MSGT_.Entry[entrynb].FEC   = MSGT_.Entry[entrynb].LspID  = -1;
00472                 MSGT_.Entry[entrynb].Src   = MSGT_.Entry[entrynb].PMsgID = -1;
00473                 MSGT_.Entry[entrynb].LabelOp = -1;
00474                 MSGT_.Entry[entrynb].ERLspID = -1;
00475         }   
00476 }

void LDPAgent::MSGTdump  ) 
 

Definition at line 529 of file ldp.cc.

References MsgT::Entry, MsgTable::FEC, MsgTable::LabelOp, MsgTable::LspID, MsgTable::MsgID, MSGT_, MsgT::NB, MsgTable::PMsgID, and MsgTable::Src.

Referenced by MPLSModule::command(), and command().

00530 {
00531         for (int i = 0; i < MSGT_.NB; i++) {
00532                 cerr << "  # MsgID =" << MSGT_.Entry[i].MsgID << "  ";
00533                 cerr << "  # FEC   =" << MSGT_.Entry[i].FEC   << "  ";
00534                 cerr << "  # LspID =" << MSGT_.Entry[i].LspID << "  ";
00535                 cerr << "  # Src   =" << MSGT_.Entry[i].Src   << "  ";
00536                 cerr << "  # PMsgID=" << MSGT_.Entry[i].PMsgID<< "  ";
00537                 cerr << "  # LabelOp=" << MSGT_.Entry[i].LabelOp << "\n";
00538         }
00539 }

int LDPAgent::MSGTinsert int  MsgID,
int  FEC,
int  LspID,
int  Src,
int  PMsgID
 

Definition at line 446 of file ldp.cc.

References MsgT::Entry, LDP_LabelALLOC, LDP_MaxMSGTEntryNB, MSGT_, MSGTlocate(), and MsgT::NB.

Referenced by command().

00447 {
00448         if (MSGT_.NB == LDP_MaxMSGTEntryNB - 1)
00449                 return(-1);
00450 
00451         if (MSGTlocate(FEC, LspID, Src) > -1)
00452                 return(-1);
00453     
00454         MSGT_.Entry[MSGT_.NB].MsgID     = MsgID;
00455         MSGT_.Entry[MSGT_.NB].FEC       = FEC;
00456         MSGT_.Entry[MSGT_.NB].LspID     = LspID;
00457         MSGT_.Entry[MSGT_.NB].Src       = Src;
00458         MSGT_.Entry[MSGT_.NB].PMsgID    = PMsgID;
00459         MSGT_.Entry[MSGT_.NB].LabelOp   = LDP_LabelALLOC;
00460         MSGT_.Entry[MSGT_.NB].ERLspID   = -1;
00461     
00462         MSGT_.NB++;
00463 
00464         return(MSGT_.NB-1);
00465 }

Here is the call graph for this function:

int LDPAgent::MSGTlocate int  FEC,
int  LspID,
int  Src
 

Definition at line 491 of file ldp.cc.

References MsgT::Entry, MsgTable::FEC, MsgTable::LspID, MSGT_, MsgT::NB, and MsgTable::Src.

00492 {
00493         int i;
00494         if ( (FEC < 0) && (Src < 0) ) {
00495                 if ( LspID > -1) {
00496                         for (i=0; i<MSGT_.NB; i++)
00497                                 if ( MSGT_.Entry[i].LspID  == LspID )
00498                                         return(i);
00499                 }
00500                 return(-1);
00501         }
00502        
00503         for (i=0; i<MSGT_.NB; i++) {
00504                 if ( (MSGT_.Entry[i].FEC   == FEC  ) &&
00505                      (MSGT_.Entry[i].LspID == LspID) &&
00506                      (MSGT_.Entry[i].Src   == Src  ) )
00507                         
00508                         return(i);
00509         }
00510 
00511         return(-1);
00512 }

int LDPAgent::MSGTlocate int  MsgID  ) 
 

Definition at line 478 of file ldp.cc.

References MsgT::Entry, MsgTable::MsgID, MSGT_, and MsgT::NB.

Referenced by command(), and MSGTinsert().

00479 {
00480         if ( MsgID < 0 )
00481                 return(-1);
00482     
00483         for (int i=0; i<MSGT_.NB; i++) {
00484                 if ( MSGT_.Entry[i].MsgID == MsgID )
00485                         return(i);
00486         }
00487 
00488         return(-1);
00489 }

void LDPAgent::MSGTlookup int  entrynb,
int &  MsgID,
int &  FEC,
int &  LspID,
int &  src,
int &  PMsgID,
int &  LabelOp
 

Definition at line 514 of file ldp.cc.

References MsgT::Entry, MsgTable::FEC, MsgTable::LabelOp, MsgTable::LspID, MsgTable::MsgID, MSGT_, MsgT::NB, MsgTable::PMsgID, and MsgTable::Src.

Referenced by command().

00516 {
00517         if ( (entrynb > -1) && (entrynb < MSGT_.NB) ) {  
00518                 MsgID    = MSGT_.Entry[entrynb].MsgID;
00519                 FEC      = MSGT_.Entry[entrynb].FEC;
00520                 LspID    = MSGT_.Entry[entrynb].LspID;
00521                 Src      = MSGT_.Entry[entrynb].Src;
00522                 PMsgID   = MSGT_.Entry[entrynb].PMsgID;
00523                 LabelOp= MSGT_.Entry[entrynb].LabelOp;
00524         } else {  
00525                 MsgID = FEC = LspID = Src = PMsgID = LabelOp = -1;
00526         }
00527 }

char * LDPAgent::parse_msgtype int  msgtype,
int  lspid
[protected]
 

Definition at line 569 of file ldp.cc.

References LDP_MappingMSG, LDP_NotificationMSG, LDP_ReleaseMSG, LDP_RequestMSG, and LDP_WithdrawMSG.

Referenced by trace().

00570 {
00571 
00572         switch (msgtype) {
00573         case LDP_NotificationMSG:    /* Notification   */
00574                 return("Notification");
00575 
00576         case LDP_MappingMSG:    /* Label Mapping  */
00577                 if (lspid >= 0)          /* CR-LDP */
00578                         return("CR-Mapping");
00579                 else
00580                         return("Mapping");
00581                 
00582         case LDP_RequestMSG:    /* Label Request  */
00583                 if (lspid >= 0)
00584                         return("CR-Request");
00585                 else
00586                         return("Request");
00587                 
00588         case LDP_WithdrawMSG:    /* Label Withdraw */
00589                 return("Withdraw");
00590                 
00591         case LDP_ReleaseMSG:    /* Label Release */
00592                 return("Release");
00593         }
00594 
00595         return ("Error");
00596 }

char * LDPAgent::parse_status int  status  )  [protected]
 

Definition at line 598 of file ldp.cc.

References LDP_LoopDetected, and LDP_NoRoute.

Referenced by recv(), and trace().

00599 {
00600         switch (status) {
00601         case LDP_LoopDetected:
00602                 return "LoopDetected";
00603                 
00604         case LDP_NoRoute:
00605                 return "NoRoute";
00606                 
00607         default:
00608                 return "Unknown";
00609         }
00610 }

int LDPAgent::peer  )  const [inline]
 

Definition at line 128 of file ldp.h.

References peer_.

Referenced by MPLSModule::exist_ldp().

00128 { return peer_; }

void LDPAgent::PKTinit hdr_ldp hdrldp,
int  msgtype,
const char *  pathvec,
const char *  er
 

Definition at line 115 of file ldp.cc.

References hdr_ldp::er, hdr_ldp::fec, hdr_ldp::label, len, hdr_ldp::lspid, hdr_ldp::msgid, hdr_ldp::msgtype, new_msgid_, hdr_ldp::pathvec, hdr_ldp::rc, hdr_ldp::reqmsgid, and hdr_ldp::status.

Referenced by command().

00117 {
00118         hdrldp->msgtype = msgtype;
00119         hdrldp->msgid   = new_msgid_;
00120         hdrldp->fec     = -1;
00121         hdrldp->label   = -1;
00122         hdrldp->reqmsgid= -1;
00123         hdrldp->status  = -1;
00124 
00125         int i;
00126         int len = strlen(pathvec);
00127         hdrldp->pathvec = (char *) malloc(len+1);
00128         for (i=0; i<len; i++) { 
00129                 if ( *(pathvec+i) == ' ' )
00130                         *(hdrldp->pathvec+i) = '_';
00131                 else
00132                         *(hdrldp->pathvec+i) = *(pathvec+i);
00133         }
00134         *(hdrldp->pathvec+len) = '\0';
00135 
00136         len = strlen(er);
00137         hdrldp->er = (char *) malloc(len+1);
00138         for (i=0; i<len; i++) { 
00139                 if ( *(er+i) == ' ' )
00140                         *(hdrldp->er+i) = '_';
00141                 else
00142                         *(hdrldp->er+i) = *(er+i);
00143         }
00144         *(hdrldp->er+len) = '\0';
00145 
00146         hdrldp->lspid = -1;
00147         hdrldp->rc    = -1;
00148 }

int LDPAgent::PKTsize const char *  pathvec,
const char *  er
 

Definition at line 89 of file ldp.cc.

References len.

Referenced by command().

00090 {
00091         // header size for Version, PDU Length, and LDP Identifier
00092         int psize = 10; 
00093         // size for message type and message id
00094         psize += 8; 
00095     
00096         int len = strlen(pathvec);
00097         if (len > 1) {
00098                 psize += 4;   // size for path vector header
00099                 for (int i=0; i<len; i++)
00100                         if ( *(pathvec+i) == ' ' ) {
00101                                 psize += 4;   // size for path vector data
00102                         }  
00103         }     
00104 
00105         len = strlen(er);
00106         if (len > 1) { 
00107                 psize += 4;   // size for explicit route header
00108                 for (int i=0; i<len; i++)
00109                         if (*(er+i) == ' ')
00110                                 psize += 4;   // size for explicit route data 
00111         }
00112         return (psize);
00113 }

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

Definition at line 97 of file agent.h.

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

Referenced by LmsAgent::pkt2agent(), TcpAsymSink::recv(), MIPBSAgent::recv(), LmsAgent::recv(), HttpInvalAgent::recv(), CtrMcastEncap::recv(), IntTcpAgent::rxmit_last(), IntTcpAgent::send_one(), LmsReceiver::send_refresh(), IcmpAgent::sendredirect(), TcpAgent::trace_event(), TcpAgent::traceAll(), TcpAsymAgent::traceAll(), TcpAgent::traceVar(), TcpSessionAgent::traceVar(), and TcpAsymAgent::traceVar().

00097 { return here_.port_; }

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 LDPAgent::recv Packet ,
Handler
[virtual]
 

Reimplemented from Agent.

Definition at line 369 of file ldp.cc.

References hdr_ip::access(), hdr_ldp::access(), ns_addr_t::addr_, hdr_ldp::er, hdr_ldp::fec, Packet::free(), hdr_ldp::label, LDP_MappingMSG, LDP_NotificationMSG, LDP_ReleaseMSG, LDP_RequestMSG, LDP_WithdrawMSG, hdr_ldp::lspid, hdr_ldp::msgid, hdr_ldp::msgtype, parse_status(), hdr_ldp::pathvec, hdr_ldp::rc, rc, hdr_ldp::reqmsgid, hdr_ip::src_, hdr_ldp::status, and trace().

00370 {
00371         char out[400];  
00372         Tcl& tcl = Tcl::instance();
00373 
00374         hdr_ldp *hdrldp = hdr_ldp::access(pkt);
00375         int msgtype = hdrldp->msgtype;
00376         int msgid   = hdrldp->msgid;
00377         int fec     = hdrldp->fec;
00378         int label   = hdrldp->label;
00379         int reqmsgid= hdrldp->reqmsgid;
00380         int status  = hdrldp->status;
00381         int lspid   = hdrldp->lspid;
00382         int rc      = hdrldp->rc;
00383   
00384         char pathvec[400];
00385         char er[400];
00386         strcpy(pathvec, hdrldp->pathvec);
00387         strcpy(er, hdrldp->er);
00388 
00389         ns_addr_t src = hdr_ip::access(pkt)->src_;
00390         trace(src, hdrldp);
00391 
00392         free(hdrldp->pathvec);
00393         free(hdrldp->er);
00394         Packet::free(pkt);
00395 
00396         switch (msgtype) {
00397         case LDP_NotificationMSG:    /* Notification   */
00398                 char code[30];
00399                 strcpy(code, parse_status(status));
00400                 sprintf(out, "%s get-notification-msg %d %s %d", 
00401                         name(), src.addr_, code, lspid);
00402                 tcl.eval(out);
00403                 break;
00404 
00405         case LDP_MappingMSG:    /* Label Mapping  */
00406                 if (lspid >= 0) {
00407                         /* CR-LDP */
00408                         sprintf(out, "%s get-cr-mapping-msg %d %d %d %d %d %d",
00409                                 name(), msgid, src.addr_, fec, 
00410                                 label, lspid, reqmsgid);
00411                 } else { 
00412                         sprintf(out, "%s get-mapping-msg %d %d %d %d %s %d", 
00413                                 name(), msgid, src.addr_, fec, 
00414                                 label, pathvec, reqmsgid);
00415                 }
00416                 tcl.eval(out);
00417                 break;
00418 
00419         case LDP_RequestMSG:    /* Label Request  */
00420                 if (lspid >= 0) { 
00421                         sprintf(out,
00422                                 "%s get-cr-request-msg %d %d %d %s %s %d %d", 
00423                                 name(), msgid, src.addr_, fec, pathvec,
00424                                 er, lspid, rc);
00425                 } else { 
00426                         sprintf(out, "%s get-request-msg %d %d %d %s", 
00427                                 name(), msgid, src.addr_, fec, pathvec);
00428                 }
00429                 tcl.eval(out);
00430                 break;
00431 
00432         case LDP_WithdrawMSG:    /* Label Withdraw */
00433                 sprintf(out, "%s get-withdraw-msg %d %d %d", 
00434                         name(), src.addr_, fec, lspid);
00435                 tcl.eval(out);
00436                 break;
00437 
00438         case LDP_ReleaseMSG:    /* Label Release */
00439                 sprintf(out, "%s get-release-msg %d %d %d", 
00440                         name(), src.addr_, fec, lspid);
00441                 tcl.eval(out);
00442                 break;
00443         }
00444 }

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 DelAckSink::recv(), TcpSink::recv(), QSTcpSink::recv(), FullTcpAgent::recv(), and 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, and Queue< T >.

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 89 of file agent.h.

References Agent::sendmsg().

00089 { 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 TcpSink::ack(), QSTcpSink::ack(), SinkAgent::bcast_interest(), PingAgent::command(), MessageAgent::command(), mcastControlAgent::command(), LmsAgent::command(), command(), SinkAgent::data_ready(), DSDV_Agent::forwardPacket(), FullTcpAgent::foutput(), TcpAgent::output(), VegasTcpAgent::output(), RFC793eduTcpAgent::output(), QSNewRenoTcpAgent::output(), IntTcpAgent::output(), BayFullTcpAgent::output(), AbsTcpAgent::output(), AbsDelAckSink::recv(), AbsTcpSink::recv(), SRAgent::recv(), PingAgent::recv(), NatAgent::recv(), MIPBSAgent::recv(), Encapsulator::recv(), Decapsulator::recv(), MIPMHAgent::reg(), HttpInvalAgent::send(), GAFAgent::send_discovery(), RapAgent::SendAck(), SimpleTcpAgent::sendmsg(), PushbackAgent::sendMsg(), FullTcpAgent::sendpacket(), BayFullTcpAgent::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 Agent::sendmsg int  nbytes,
const char *  flags = 0
[virtual, inherited]
 

Reimplemented in SA_Agent, RTPAgent, UdpAgent, LmsSender, SRMAgent, FullTcpAgent, TcpAgent, TfrcAgent, and SimpleTcpAgent.

Definition at line 415 of file agent.cc.

00416 {
00417 }

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

Reimplemented in UdpAgent.

Definition at line 400 of file agent.cc.

References abort().

Referenced by Agent::command(), Application::send(), Agent::send(), TrafficTrace::timeout(), TelnetApp::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:

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

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

Definition at line 407 of file agent.cc.

References abort().

Referenced by Agent::command().

00409 {
00410         fprintf(stderr, 
00411         "Agent::sendmsg(int, AppData*, const char*) not implemented\n");
00412         abort();
00413 }

Here is the call graph for this function:

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

Definition at line 100 of file agent.h.

References Agent::type_.

Referenced by Agent::command(), HttpUInvalClass::create(), RA_Traffic::init(), POO_Traffic::init(), EXPOO_Traffic::init(), CBR_Traffic::init(), and CBR_PP_Traffic::init().

00100 { type_ = pkttype; }

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

Reimplemented in FullTcpAgent.

Definition at line 95 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(), and TelnetApp::timeout().

00095 { return size_; }

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

Definition at line 48 of file connector.h.

References Connector::target_.

Referenced by JoBS::assignRateDropsADC(), FQ::deque(), QSAgent::recv(), and MIPMHAgent::reg().

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 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:

void LDPAgent::trace ns_addr_t  src,
hdr_ldp hdrldp
[protected]
 

Definition at line 541 of file ldp.cc.

References ns_addr_t::addr_, Scheduler::clock(), hdr_ldp::er, hdr_ldp::fec, Scheduler::instance(), hdr_ldp::label, hdr_ldp::lspid, hdr_ldp::msgid, hdr_ldp::msgtype, parse_msgtype(), parse_status(), hdr_ldp::pathvec, ns_addr_t::port_, hdr_ldp::rc, hdr_ldp::reqmsgid, hdr_ldp::status, and trace_ldp_.

Referenced by recv().

00542 {
00543         // XXX will be changed later to directly write to a output channel
00544         // instead of sending stuff to otcl
00545         if (trace_ldp_ == 1) { 
00546                 const char *msgtype = parse_msgtype(hdrldp->msgtype,
00547                                                     hdrldp->lspid);
00548                 const char *status = (hdrldp->msgtype == 0x0001) ? 
00549                         parse_status(hdrldp->status) : "*";
00550                 Tcl::instance().evalf("%s trace-ldp-packet %d %d %s %d %d %d "
00551                                       "%s %d %s %d %d %s %7f",
00552                                       name(),
00553                                       src.addr_,
00554                                       src.port_,
00555                                       msgtype, 
00556                                       hdrldp->msgid, 
00557                                       hdrldp->fec, 
00558                                       hdrldp->label, 
00559                                       hdrldp->pathvec, 
00560                                       hdrldp->lspid, 
00561                                       hdrldp->er, 
00562                                       hdrldp->rc, 
00563                                       hdrldp->reqmsgid,
00564                                       status,
00565                                       Scheduler::instance().clock());  
00566         }       
00567 }

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 146 of file agent.h.

00146 {}

void LDPAgent::turn_on_trace  )  [inline]
 

Definition at line 129 of file ldp.h.

References trace_ldp_.

Referenced by MPLSModule::command().

00129 { trace_ldp_ = 1; }


Member Data Documentation

Application* Agent::app_ [protected, inherited]
 

Reimplemented in BayFullTcpAgent.

Definition at line 134 of file agent.h.

Referenced by Agent::attachApp(), Agent::idle(), RapAgent::IpgTimeout(), UdpAgent::recv(), SimpleTcpAgent::recv(), RapAgent::recv(), HttpInvalAgent::recv(), Agent::recv(), and Agent::recvBytes().

Tcl_Channel Agent::channel_ [protected, inherited]
 

Definition at line 130 of file agent.h.

Referenced by Agent::addAgentTrace(), Agent::command(), Agent::flushAVar(), Agent::monitorAgentTrace(), TcpAsymSink::recv(), Agent::trace(), TcpAgent::traceAll(), TcpAsymAgent::traceAll(), TcpAgent::traceVar(), TcpSessionAgent::traceVar(), and TcpAsymAgent::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(), RedPDQueue::enque(), PushbackQueue::enque(), NsObject::isdebug(), NsObject::NsObject(), TfrcAgent::recv(), PushbackQueue::reportDrop(), and REDQueue::reset().

int Agent::defttl_ [protected, inherited]
 

Definition at line 121 of file agent.h.

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

NsObject* Connector::drop_ [protected, inherited]
 

Definition at line 57 of file connector.h.

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

ns_addr_t Agent::dst_ [protected, inherited]
 

Reimplemented in AckRecons.

Definition at line 115 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().

EventTrace* Agent::et_ [protected, inherited]
 

Definition at line 145 of file agent.h.

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

int Agent::fid_ [protected, inherited]
 

Definition at line 118 of file agent.h.

Referenced by Agent::delay_bind_dispatch(), AbsTcpAgent::flowid(), Agent::initpkt(), FullTcpAgent::recv(), CtrMcastEncap::recv(), AbsTcpAgent::send_batch(), Sack1TcpAgent::timeout(), and TcpAgent::trace_event().

int Agent::flags_ [protected, inherited]
 

Reimplemented in BayFullTcpAgent, RapAgent, and FullTcpAgent.

Definition at line 120 of file agent.h.

Referenced by Agent::delay_bind_dispatch().

ns_addr_t Agent::here_ [protected, inherited]
 

Definition at line 114 of file agent.h.

Referenced by Agent::addAgentTrace(), Agent::addr(), SinkAgent::bcast_interest(), SinkAgent::data_ready(), OmniMcastAgent::DataForSink(), FloodingAgent::DataForSink(), DiffusionAgent::DataForSink(), Agent::delay_bind_dispatch(), Agent::deleteAgentTrace(), 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(), DumbAgent::recv(), SinkAgent::sendpkt(), SinkAgent::set_addr(), SinkAgent::Terminate(), and Agent::trace().

MsgT LDPAgent::MSGT_ [protected]
 

Definition at line 152 of file ldp.h.

Referenced by command(), LDPAgent(), MSGTdelete(), MSGTdump(), MSGTinsert(), MSGTlocate(), and MSGTlookup().

int LDPAgent::new_msgid_ [protected]
 

Definition at line 144 of file ldp.h.

Referenced by command(), and PKTinit().

OldValue* Agent::oldValueList_ [protected, inherited]
 

Definition at line 132 of file agent.h.

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

int LDPAgent::peer_ [protected]
 

Definition at line 146 of file ldp.h.

Referenced by command(), and peer().

int Agent::prio_ [protected, inherited]
 

Definition at line 119 of file agent.h.

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

int Agent::size_ [protected, inherited]
 

Reimplemented in SA_Agent, and AckRecons.

Definition at line 116 of file agent.h.

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

NsObject* Connector::target_ [protected, inherited]
 

Definition at line 56 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(), toraAgent::forward(), AODV::forward(), LandmarkAgent::ForwardPacket(), DSDV_Agent::forwardPacket(), SensorQueryAgent::generate_query(), DSDVTriggerHandler::handle(), AckRecons::handle(), DSRAgent::handlePacketReceipt(), DSDV_Agent::helper_callback(), AODV::initialized(), DSDV_Agent::lost_link(), OmniMcastAgent::OmniMcastAgent(), LandmarkAgent::periodic_callback(), LandmarkAgent::ProcessHierUpdate(), TCPTapAgent::processpkt(), IPTapAgent::processpkt(), CMUPriQueue::prq_enqueue(), CMUPriQueue::prq_resume(), DequeTrace::recv(), Trace::recv(), TraceIpMac::recv(), TraceIp::recv(), TBF::recv(), SRMAgent::recv(), SSMSRMAgent::recv(), SatDequeTrace::recv(), SAack_Agent::recv(), Queue< T >::recv(), PingResponder::recv(), MIPEncapsulator::recv(), LmsAgent::recv(), HackLossyLink::recv(), GAFPartner::recv(), FQ::recv(), FloodAgent::recv(), ErrorModel::recv(), DynamicLink::recv(), DumbAgent::recv(), DSRAgent::recv(), DelayModel::recv(), LinkDelay::recv(), CtrMcastDecap::recv(), CtrMcastEncap::recv(), CMUTrace::recv(), PriQueue::recvHighPriority(), Trace::recvOnly(), TapAgent::recvpkt(), Queue< T >::resume(), LinkDelay::send(), Connector::send(), Agent::send(), MIPBSAgent::send_ads(), SRMAgent::send_ctrl(), SSMSRMAgent::send_ctrl(), MFTPSndAgent::send_data(), LmsSender::send_dmcast(), LmsReceiver::send_dmcast(), LmsAgent::send_downstream(), SSMSRMAgent::send_glb_sess(), LmsSender::send_lms_pkt(), SSMSRMAgent::send_loc_sess(), MFTPRcvAgent::send_nak(), LmsReceiver::send_nak(), LmsReceiver::send_refresh(), SSMSRMAgent::send_rep_sess(), SRMAgent::send_sess(), MIPMHAgent::send_sols(), LmsSender::send_spm(), MFTPSndAgent::send_status_request(), LmsAgent::send_upstream(), LandmarkAgent::SendChangedTagListUpdate(), AODV::sendError(), AODV::sendHello(), UdpAgent::sendmsg(), SRMAgent::sendmsg(), SA_Agent::sendmsg(), RTPAgent::sendmsg(), LmsSender::sendmsg(), DSDV_Agent::sendOutBCastPkt(), SA_Agent::sendpkt(), rtProtoDV::sendpkt(), RTPAgent::sendpkt(), RTCPAgent::sendpkt(), IvsSource::sendpkt(), AODV::sendReply(), AODV::sendRequest(), LmsSender::solicit_naks(), Connector::target(), TBF::timeout(), and toraAgent::tora_output().

int LDPAgent::trace_ldp_ [protected]
 

Definition at line 145 of file ldp.h.

Referenced by delay_bind_dispatch(), trace(), and turn_on_trace().

char* Agent::traceName_ [protected, inherited]
 

Definition at line 131 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 117 of file agent.h.

Referenced by Agent::get_pkttype(), Agent::initpkt(), FullTcpAgent::listen(), BayFullTcpAgent::listen(), RapAgent::SendAck(), SRMAgent::sendmsg(), RapAgent::SendPacket(), and Agent::set_pkttype().

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

Definition at line 68 of file agent.cc.

Referenced by imepAgent::handlerControlTimer(), imepAgent::handlerReXmitTimer(), Agent::initpkt(), imepAgent::sendAck(), imepAgent::sendBeacon(), toraAgent::sendCLR(), imepAgent::sendHello(), toraAgent::sendQRY(), DSRAgent::sendUnknownFlow(), toraAgent::sendUPD(), and DSRAgent::xmitFailed().


The documentation for this class was generated from the following files:
Generated on Tue Apr 20 12:54:57 2004 for NS2.26SourcesOriginal by doxygen 1.3.3