LDPAgent Class Reference

#include <ldp.h>

Inheritance diagram for LDPAgent:

Agent Connector NsObject TclObject Handler Collaboration diagram for LDPAgent:

Collaboration graph
[legend]

Detailed Description

Definition at line 139 of file ldp.h.

Public Member Functions

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

Protected Member Functions

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

Protected Attributes

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

Static Protected Attributes

static int uidcnt_


Constructor & Destructor Documentation

LDPAgent::LDPAgent  ) 
 

Definition at line 91 of file ldp.cc.

References MSGT_, and MsgT::NB.

00091                    : Agent(PT_LDP), 
00092     new_msgid_(0), trace_ldp_(0), peer_(0)
00093 {
00094     MSGT_.NB      = 0;
00095 }


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 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(), LmsSender::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(), 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(), SctpAgent::SetSource(), LmsSender::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(), 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(), LmsSender::send_dmcast(), LmsReceiver::send_dmcast(), 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(), RapAgent::SendAck(), UdpAgent::sendmsg(), SimpleTcpAgent::sendmsg(), SRMAgent::sendmsg(), SA_Agent::sendmsg(), RTPAgent::sendmsg(), PushbackAgent::sendMsg(), MessagePassingAgent::sendmsg(), LmsSender::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(), LmsSender::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 LDPAgent::command int  argc,
const char *const *  argv
[virtual]
 

Reimplemented from Agent.

Definition at line 172 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.

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

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(), LmsSender::send_dmcast(), LmsSender::send_lms_pkt(), IntTcpAgent::send_one(), rtProtoDV::sendpkt(), SctpAgent::SetDestination(), LmsSender::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 LDPAgent::delay_bind_dispatch const char *  ,
const char *  ,
TclObject
[virtual]
 

Reimplemented from Agent.

Definition at line 103 of file ldp.cc.

References Agent::delay_bind_dispatch(), and trace_ldp_.

00105 {
00106     if (delay_bind_bool(varName,localName,"trace_ldp_",&trace_ldp_,tracer))
00107         return TCL_OK;
00108     return Agent::delay_bind_dispatch(varName, localName, tracer);
00109 }

Here is the call graph for this function:

void LDPAgent::delay_bind_init_all  )  [virtual]
 

Reimplemented from Agent.

Definition at line 97 of file ldp.cc.

References Agent::delay_bind_init_all().

00098 {
00099     delay_bind_init_one("trace_ldp_");
00100     Agent::delay_bind_init_all();
00101 }

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

void LDPAgent::MSGTdelete int  entrynb  ) 
 

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

00490 {
00491     if ( (entrynb > -1) && (entrynb < MSGT_.NB) ) {
00492         MSGT_.Entry[entrynb].MsgID = -1;
00493         MSGT_.Entry[entrynb].FEC   = MSGT_.Entry[entrynb].LspID  = -1;
00494         MSGT_.Entry[entrynb].Src   = MSGT_.Entry[entrynb].PMsgID = -1;
00495         MSGT_.Entry[entrynb].LabelOp = -1;
00496         MSGT_.Entry[entrynb].ERLspID = -1;
00497     }   
00498 }

void LDPAgent::MSGTdump  ) 
 

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

00552 {
00553     for (int i = 0; i < MSGT_.NB; i++) {
00554         cerr << "  # MsgID =" << MSGT_.Entry[i].MsgID << "  ";
00555         cerr << "  # FEC   =" << MSGT_.Entry[i].FEC   << "  ";
00556         cerr << "  # LspID =" << MSGT_.Entry[i].LspID << "  ";
00557         cerr << "  # Src   =" << MSGT_.Entry[i].Src   << "  ";
00558         cerr << "  # PMsgID=" << MSGT_.Entry[i].PMsgID<< "  ";
00559         cerr << "  # LabelOp=" << MSGT_.Entry[i].LabelOp << "\n";
00560     }
00561 }

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

Definition at line 468 of file ldp.cc.

References MsgT::Entry, MsgTable::ERLspID, MsgTable::FEC, MsgTable::LabelOp, LDP_LabelALLOC, LDP_MaxMSGTEntryNB, MsgTable::LspID, MsgTable::MsgID, MSGT_, MSGTlocate(), MsgT::NB, MsgTable::PMsgID, and MsgTable::Src.

Referenced by command().

00469 {
00470     if (MSGT_.NB == LDP_MaxMSGTEntryNB - 1)
00471         return(-1);
00472 
00473     if (MSGTlocate(FEC, LspID, Src) > -1)
00474         return(-1);
00475     
00476     MSGT_.Entry[MSGT_.NB].MsgID     = MsgID;
00477     MSGT_.Entry[MSGT_.NB].FEC       = FEC;
00478     MSGT_.Entry[MSGT_.NB].LspID     = LspID;
00479     MSGT_.Entry[MSGT_.NB].Src       = Src;
00480     MSGT_.Entry[MSGT_.NB].PMsgID    = PMsgID;
00481     MSGT_.Entry[MSGT_.NB].LabelOp   = LDP_LabelALLOC;
00482     MSGT_.Entry[MSGT_.NB].ERLspID   = -1;
00483     
00484     MSGT_.NB++;
00485 
00486     return(MSGT_.NB-1);
00487 }

Here is the call graph for this function:

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

Definition at line 513 of file ldp.cc.

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

00514 {
00515     int i;
00516     if ( (FEC < 0) && (Src < 0) ) {
00517         if ( LspID > -1) {
00518             for (i=0; i<MSGT_.NB; i++)
00519                 if ( MSGT_.Entry[i].LspID  == LspID )
00520                     return(i);
00521         }
00522         return(-1);
00523     }
00524        
00525     for (i=0; i<MSGT_.NB; i++) {
00526         if ( (MSGT_.Entry[i].FEC   == FEC  ) &&
00527              (MSGT_.Entry[i].LspID == LspID) &&
00528              (MSGT_.Entry[i].Src   == Src  ) )
00529             
00530             return(i);
00531     }
00532 
00533     return(-1);
00534 }

int LDPAgent::MSGTlocate int  MsgID  ) 
 

Definition at line 500 of file ldp.cc.

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

Referenced by command(), and MSGTinsert().

00501 {
00502     if ( MsgID < 0 )
00503         return(-1);
00504     
00505     for (int i=0; i<MSGT_.NB; i++) {
00506         if ( MSGT_.Entry[i].MsgID == MsgID )
00507             return(i);
00508     }
00509 
00510     return(-1);
00511 }

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

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

00538 {
00539     if ( (entrynb > -1) && (entrynb < MSGT_.NB) ) {  
00540         MsgID    = MSGT_.Entry[entrynb].MsgID;
00541         FEC      = MSGT_.Entry[entrynb].FEC;
00542         LspID    = MSGT_.Entry[entrynb].LspID;
00543         Src      = MSGT_.Entry[entrynb].Src;
00544         PMsgID   = MSGT_.Entry[entrynb].PMsgID;
00545         LabelOp= MSGT_.Entry[entrynb].LabelOp;
00546     } else {  
00547         MsgID = FEC = LspID = Src = PMsgID = LabelOp = -1;
00548     }
00549 }

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

Definition at line 591 of file ldp.cc.

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

Referenced by trace().

00592 {
00593 
00594     switch (msgtype) {
00595     case LDP_NotificationMSG:    /* Notification   */
00596         return("Notification");
00597 
00598     case LDP_MappingMSG:    /* Label Mapping  */
00599         if (lspid >= 0)          /* CR-LDP */
00600             return("CR-Mapping");
00601         else
00602             return("Mapping");
00603         
00604     case LDP_RequestMSG:    /* Label Request  */
00605         if (lspid >= 0)
00606             return("CR-Request");
00607         else
00608             return("Request");
00609         
00610     case LDP_WithdrawMSG:    /* Label Withdraw */
00611         return("Withdraw");
00612         
00613     case LDP_ReleaseMSG:    /* Label Release */
00614         return("Release");
00615     }
00616 
00617     return ("Error");
00618 }

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

Definition at line 620 of file ldp.cc.

References LDP_LoopDetected, and LDP_NoRoute.

Referenced by recv(), and trace().

00621 {
00622     switch (status) {
00623     case LDP_LoopDetected:
00624         return "LoopDetected";
00625         
00626     case LDP_NoRoute:
00627         return "NoRoute";
00628         
00629     default:
00630         return "Unknown";
00631     }
00632 }

int LDPAgent::peer  )  const [inline]
 

Definition at line 150 of file ldp.h.

References peer_.

00150 { return peer_; }

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

Definition at line 137 of file ldp.cc.

References hdr_ldp::fec, hdr_ldp::label, hdr_ldp::msgid, hdr_ldp::msgtype, new_msgid_, hdr_ldp::pathvec, hdr_ldp::reqmsgid, and hdr_ldp::status.

Referenced by command().

00139 {
00140     hdrldp->msgtype = msgtype;
00141     hdrldp->msgid   = new_msgid_;
00142     hdrldp->fec     = -1;
00143     hdrldp->label   = -1;
00144     hdrldp->reqmsgid= -1;
00145     hdrldp->status  = -1;
00146 
00147     int i;
00148     int len = strlen(pathvec);
00149     hdrldp->pathvec = (char *) malloc(len+1);
00150     for (i=0; i<len; i++) { 
00151         if ( *(pathvec+i) == ' ' )
00152             *(hdrldp->pathvec+i) = '_';
00153         else
00154             *(hdrldp->pathvec+i) = *(pathvec+i);
00155     }
00156     *(hdrldp->pathvec+len) = '\0';
00157 
00158     len = strlen(er);
00159     hdrldp->er = (char *) malloc(len+1);
00160     for (i=0; i<len; i++) { 
00161         if ( *(er+i) == ' ' )
00162             *(hdrldp->er+i) = '_';
00163         else
00164             *(hdrldp->er+i) = *(er+i);
00165     }
00166     *(hdrldp->er+len) = '\0';
00167 
00168     hdrldp->lspid = -1;
00169     hdrldp->rc    = -1;
00170 }

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

Definition at line 111 of file ldp.cc.

Referenced by command().

00112 {
00113     // header size for Version, PDU Length, and LDP Identifier
00114     int psize = 10; 
00115     // size for message type and message id
00116     psize += 8; 
00117     
00118     int len = strlen(pathvec);
00119     if (len > 1) {
00120         psize += 4;   // size for path vector header
00121         for (int i=0; i<len; i++)
00122             if ( *(pathvec+i) == ' ' ) {
00123                 psize += 4;   // size for path vector data
00124             }  
00125     }     
00126 
00127     len = strlen(er);
00128     if (len > 1) { 
00129         psize += 4;   // size for explicit route header
00130         for (int i=0; i<len; i++)
00131             if (*(er+i) == ' ')
00132                 psize += 4;   // size for explicit route data 
00133     }
00134     return (psize);
00135 }

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 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 391 of file ldp.cc.

References hdr_ip::access(), hdr_ldp::access(), ns_addr_t::addr_, code, 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().

00392 {
00393     char out[400];  
00394     Tcl& tcl = Tcl::instance();
00395 
00396     hdr_ldp *hdrldp = hdr_ldp::access(pkt);
00397     int msgtype = hdrldp->msgtype;
00398     int msgid   = hdrldp->msgid;
00399     int fec     = hdrldp->fec;
00400     int label   = hdrldp->label;
00401     int reqmsgid= hdrldp->reqmsgid;
00402     int status  = hdrldp->status;
00403     int lspid   = hdrldp->lspid;
00404     int rc      = hdrldp->rc;
00405   
00406     char pathvec[400];
00407     char er[400];
00408     strcpy(pathvec, hdrldp->pathvec);
00409     strcpy(er, hdrldp->er);
00410 
00411     ns_addr_t src = hdr_ip::access(pkt)->src_;
00412     trace(src, hdrldp);
00413 
00414     free(hdrldp->pathvec);
00415     free(hdrldp->er);
00416     Packet::free(pkt);
00417 
00418     switch (msgtype) {
00419     case LDP_NotificationMSG:    /* Notification   */
00420         char code[30];
00421         strcpy(code, parse_status(status));
00422         sprintf(out, "%s get-notification-msg %d %s %d", 
00423             name(), src.addr_, code, lspid);
00424         tcl.eval(out);
00425         break;
00426 
00427     case LDP_MappingMSG:    /* Label Mapping  */
00428         if (lspid >= 0) {
00429             /* CR-LDP */
00430             sprintf(out, "%s get-cr-mapping-msg %d %d %d %d %d %d",
00431                 name(), msgid, src.addr_, fec, 
00432                 label, lspid, reqmsgid);
00433         } else { 
00434             sprintf(out, "%s get-mapping-msg %d %d %d %d %s %d", 
00435                 name(), msgid, src.addr_, fec, 
00436                 label, pathvec, reqmsgid);
00437         }
00438         tcl.eval(out);
00439         break;
00440 
00441     case LDP_RequestMSG:    /* Label Request  */
00442         if (lspid >= 0) { 
00443             sprintf(out,
00444                 "%s get-cr-request-msg %d %d %d %s %s %d %d", 
00445                 name(), msgid, src.addr_, fec, pathvec,
00446                 er, lspid, rc);
00447         } else { 
00448             sprintf(out, "%s get-request-msg %d %d %d %s", 
00449                 name(), msgid, src.addr_, fec, pathvec);
00450         }
00451         tcl.eval(out);
00452         break;
00453 
00454     case LDP_WithdrawMSG:    /* Label Withdraw */
00455         sprintf(out, "%s get-withdraw-msg %d %d %d", 
00456             name(), src.addr_, fec, lspid);
00457         tcl.eval(out);
00458         break;
00459 
00460     case LDP_ReleaseMSG:    /* Label Release */
00461         sprintf(out, "%s get-release-msg %d %d %d", 
00462             name(), src.addr_, fec, lspid);
00463         tcl.eval(out);
00464         break;
00465     }
00466 }

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(), 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 Agent::sendmsg int  nbytes,
const char *  flags = 0
[virtual, inherited]
 

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

Definition at line 407 of file agent.cc.

00408 {
00409 }

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:

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

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

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

00564 {
00565     // XXX will be changed later to directly write to a output channel
00566     // instead of sending stuff to otcl
00567     if (trace_ldp_ == 1) { 
00568         const char *msgtype = parse_msgtype(hdrldp->msgtype,
00569                             hdrldp->lspid);
00570         const char *status = (hdrldp->msgtype == 0x0001) ? 
00571             parse_status(hdrldp->status) : "*";
00572         Tcl::instance().evalf("%s trace-ldp-packet %d %d %s %d %d %d "
00573                       "%s %d %s %d %d %s %7f",
00574                       name(),
00575                       src.addr_,
00576                       src.port_,
00577                       msgtype, 
00578                       hdrldp->msgid, 
00579                       hdrldp->fec, 
00580                       hdrldp->label, 
00581                       hdrldp->pathvec, 
00582                       hdrldp->lspid, 
00583                       hdrldp->er, 
00584                       hdrldp->rc, 
00585                       hdrldp->reqmsgid,
00586                       status,
00587                       Scheduler::instance().clock());  
00588     }   
00589 }

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

void LDPAgent::turn_on_trace  )  [inline]
 

Definition at line 151 of file ldp.h.

References trace_ldp_.

00151 { trace_ldp_ = 1; }


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

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

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

MsgT LDPAgent::MSGT_ [protected]
 

Definition at line 174 of file ldp.h.

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

int LDPAgent::new_msgid_ [protected]
 

Definition at line 166 of file ldp.h.

Referenced by command(), and PKTinit().

OldValue* Agent::oldValueList_ [protected, inherited]
 

Definition at line 135 of file agent.h.

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

int LDPAgent::peer_ [protected]
 

Definition at line 168 of file ldp.h.

Referenced by command(), and peer().

int Agent::prio_ [protected, inherited]
 

Definition at line 122 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 119 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(), 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(), LmsSender::send_lms_pkt(), TcpSessionAgent::send_much(), LmsReceiver::send_nak(), IntTcpAgent::send_one(), LmsReceiver::send_refresh(), LmsSender::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(), LmsSender::solicit_naks(), TfrcAgent::start(), TfrcAgent::TfrcAgent(), TfrcSinkAgent::TfrcSinkAgent(), RTPAgent::timeout(), RTCPAgent::timeout(), TPAgent::TPAgent(), UdpAgent::UdpAgent(), and TfrcSinkAgent::weighted_average1().

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(), LmsSender::send_dmcast(), LmsReceiver::send_dmcast(), LmsAgent::send_downstream(), LmsSender::send_lms_pkt(), LmsReceiver::send_nak(), LmsReceiver::send_refresh(), MIPMHAgent::send_sols(), LmsSender::send_spm(), LmsAgent::send_upstream(), LandmarkAgent::SendChangedTagListUpdate(), AODV::sendError(), AODV::sendHello(), UdpAgent::sendmsg(), SRMAgent::sendmsg(), SA_Agent::sendmsg(), RTPAgent::sendmsg(), MessagePassingAgent::sendmsg(), LmsSender::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(), LmsSender::solicit_naks(), Connector::target(), toraAgent::tora_output(), and Delayer::try_send().

int LDPAgent::trace_ldp_ [protected]
 

Definition at line 167 of file ldp.h.

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

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


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