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

RapAgent Class Reference

#include <rap.h>

Inheritance diagram for RapAgent:

Inheritance graph
[legend]
Collaboration diagram for RapAgent:

Collaboration graph
[legend]
List of all members.

Public Member Functions

 RapAgent ()
 ~RapAgent ()
void recv (Packet *, Handler *)
void timeout (int type)
int GetSeqno ()
double GetTimeout ()
int GetDebugFlag ()
FILE * GetLogfile ()
void IncrementLossCount ()
void start ()
void stop ()
void listen ()
void advanceby (int delta)
void finish ()
double srtt ()
double ipg ()
int anyack ()
int is_stopped ()
int counting_pkt ()
void FixIpg (double fipg)
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 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 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

virtual int command (int argc, const char *const *argv)
void IpgTimeout ()
void RttTimeout ()
void IncreaseIpg ()
void DecreaseIpg ()
void UpdateTimeValues (double sampleRtt)
int LossDetection (RapLossType type, hdr_rap *ackHeader=NULL)
void LossHandler ()
void SendPacket (int nbytes, AppData *data=0)
void RecvAck (hdr_rap *ackHeader)
void UpdateLastHole (int seqNum)
void SendAck (int seqNum)
virtual void delay_bind_init_all ()
virtual int delay_bind_dispatch (const char *varName, const char *localName, TclObject *tracer)
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

IpgTimer ipgTimer_
RttTimer rttTimer_
List transmissionHistory_
TracedInt seqno_
TracedInt sessionLossCount_
TracedInt curseq_
TracedDouble ipg_
double beta_
double alpha_
TracedDouble srtt_
double variance_
double delta_
double mu_
double phi_
double overhead_
int useFineGrain_
double frtt_
double xrtt_
double kxrtt_
double kfrtt_
TracedDouble timeout_
double startTime_
double stopTime_
int debugEnable_
FILE * logfile_
int lastRecv_
int lastMiss_
int prevRecv_
int rap_base_hdr_size_
int dctr_
int dpthresh_
int flags_
double fixIpg_
ns_addr_t here_
ns_addr_t dst_
int size_
packet_t type_
int fid_
int prio_
int defttl_
Tcl_Channel channel_
char * traceName_
OldValueoldValueList_
Applicationapp_
EventTraceet_
NsObjecttarget_
NsObjectdrop_
int debug_

Static Protected Attributes

int uidcnt_

Constructor & Destructor Documentation

RapAgent::RapAgent  ) 
 

Definition at line 88 of file rap.cc.

References alpha_, beta_, debugEnable_, delta_, dpthresh_, frtt_, ipg_, kfrtt_, kxrtt_, mu_, overhead_, phi_, PT_RAP_DATA, rap_base_hdr_size_, seqno_, sessionLossCount_, Agent::size_, srtt_, timeout_, useFineGrain_, variance_, and xrtt_.

00088                    : Agent(PT_RAP_DATA), ipgTimer_(this), rttTimer_(this),
00089         seqno_(0), sessionLossCount_(0), curseq_(0), ipg_(2.0), srtt_(2.0), 
00090         timeout_(2.0), lastRecv_(0), lastMiss_(0), prevRecv_(0), dctr_(0), 
00091         flags_(0), fixIpg_(0)
00092 {
00093         bind("packetSize_", &size_);    // Default 512
00094         bind("seqno_", &seqno_);        // Default 0
00095         bind("sessionLossCount_", &sessionLossCount_); // Default 0
00096 
00097         bind("ipg_", &ipg_);            // Default 2 seconds
00098         bind("beta_", &beta_);  // Default 0.5
00099         bind("alpha_", &alpha_);        // Default 1.0
00100 
00101         bind("srtt_", &srtt_);  // Default 2 seconds
00102         bind("variance_", &variance_);// Default 0
00103         bind("delta_", &delta_);        // Default 0.5
00104         bind("mu_", &mu_);              // Default 1.2
00105         bind("phi_", &phi_);            // Default 4
00106 
00107         bind("timeout_", &timeout_);    // Default 2 seconds
00108 
00109         bind("overhead_", &overhead_); // Default 0
00110 
00111         bind("useFineGrain_", &useFineGrain_); // Default FALSE
00112         bind("kfrtt_", &kfrtt_);        // Default 0.9
00113         bind("kxrtt_", &kxrtt_);        // Default 0.01
00114 
00115         bind("debugEnable_", &debugEnable_);    // Default FALSE
00116 
00117         bind("rap_base_hdr_size_", &rap_base_hdr_size_);
00118 
00119         bind("dpthresh_", &dpthresh_);
00120 
00121         frtt_ = xrtt_ = srtt_;
00122 }

RapAgent::~RapAgent  ) 
 

Definition at line 125 of file rap.cc.

References stop().

00126 {
00127 //      fprintf(stderr, "%g: rap agent %s(%d) stops.\n", 
00128 //              Scheduler::instance().clock(), name(), addr());
00129 //      Tcl::instance().eval("[Simulator instance] flush-trace");
00130         stop();
00131 }

Here is the call graph for this function:


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

void RapAgent::advanceby int  delta  ) 
 

Definition at line 700 of file rap.cc.

References curseq_, flags_, RF_COUNTPKT, and start().

Referenced by command().

00701 {
00702         flags_ |= RF_COUNTPKT;
00703         curseq_ = delta;
00704         start();
00705 }

Here is the call graph for this function:

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(), LDPAgent::command(), LandmarkAgent::command(), IvsReceiver::command(), DSDV_Agent::command(), OmniMcastAgent::create_packet(), FloodingAgent::create_packet(), DiffusionAgent::create_packet(), SinkAgent::create_packet(), SensorQueryAgent::generate_query(), DSRAgent::getRouteForPacket(), LandmarkAgent::makeUpdate(), DSDV_Agent::makeUpdate(), 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(), SendAck(), UdpAgent::sendmsg(), SimpleTcpAgent::sendmsg(), SRMAgent::sendmsg(), SA_Agent::sendmsg(), RTPAgent::sendmsg(), PushbackAgent::sendMsg(), LmsSender::sendmsg(), FullTcpAgent::sendpacket(), BayFullTcpAgent::sendpacket(), 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:

int RapAgent::anyack  )  [inline]
 

Definition at line 162 of file rap.h.

References flags_, and RF_ANYACK.

Referenced by QA::get_data(), and RecvAck().

00162 { return flags_ & RF_ANYACK; }

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

Reimplemented from Agent.

Definition at line 222 of file rap.cc.

References advanceby(), Agent::command(), listen(), start(), and stop().

00223 {
00224         if (argc == 2) {
00225                 if (strcmp(argv[1], "start") == 0) {
00226                         start();
00227                         // return TCL_OK, so the calling function knows that 
00228                         // the command has been processed
00229                         return (TCL_OK);
00230                 } else if (strcmp(argv[1], "stop") == 0) {
00231                         stop();
00232                         return (TCL_OK);
00233                 } else if (strcmp(argv[1], "listen") == 0) {
00234                         listen();
00235                         return (TCL_OK);
00236                 }
00237         } else if (argc == 3) {
00238                 if (strcmp(argv[1], "advanceby") == 0) {
00239                         advanceby(atoi(argv[2]));
00240                         return (TCL_OK);
00241                 }
00242         }
00243 
00244 
00245         // If the command hasn't been processed by RapAgent()::command,
00246         // call the command() function for the base class
00247         return (Agent::command(argc, argv));
00248 }

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 }

int RapAgent::counting_pkt  )  [inline]
 

Definition at line 164 of file rap.h.

References flags_, and RF_COUNTPKT.

Referenced by IpgTimeout(), and RecvAck().

00164 { return flags_ & RF_COUNTPKT; }

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 }

void RapAgent::DecreaseIpg  )  [inline, protected]
 

Definition at line 177 of file rap.h.

References alpha_, fixIpg_, ipg_, and srtt_.

Referenced by RttTimeout().

00177                            { 
00178                 if (fixIpg_ != 0) 
00179                         ipg_ = fixIpg_;
00180                 else 
00181                         ipg_ *= srtt_ / (alpha_ * ipg_ + srtt_);
00182         }

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

Reimplemented from NsObject.

Reimplemented in BayFullTcpAgent, LDPAgent, FullTcpAgent, SackFullTcpAgent, RFC793eduTcpAgent, TcpSink, TcpAgent, and VegasTcpAgent.

Definition at line 93 of file agent.cc.

References ns_addr_t::addr_, Agent::defttl_, NsObject::delay_bind_dispatch(), Agent::dst_, Agent::fid_, Agent::flags_, Agent::here_, ns_addr_t::port_, and Agent::prio_.

Referenced by TcpAgent::delay_bind_dispatch(), TcpSink::delay_bind_dispatch(), and LDPAgent::delay_bind_dispatch().

00094 {
00095         if (delay_bind(varName, localName, "agent_addr_", (int*)&(here_.addr_), tracer)) return TCL_OK;
00096         if (delay_bind(varName, localName, "agent_port_", (int*)&(here_.port_), tracer)) return TCL_OK;
00097         if (delay_bind(varName, localName, "dst_addr_", (int*)&(dst_.addr_), tracer)) return TCL_OK;
00098         if (delay_bind(varName, localName, "dst_port_", (int*)&(dst_.port_), tracer)) return TCL_OK;
00099         if (delay_bind(varName, localName, "fid_", (int*)&fid_, tracer)) return TCL_OK;
00100         if (delay_bind(varName, localName, "prio_", (int*)&prio_, tracer)) return TCL_OK;
00101         if (delay_bind(varName, localName, "flags_", (int*)&flags_, tracer)) return TCL_OK;
00102         if (delay_bind(varName, localName, "ttl_", &defttl_, tracer)) return TCL_OK;
00103         if (delay_bind(varName, localName, "class_", (int*)&fid_, tracer)) return TCL_OK;
00104         return Connector::delay_bind_dispatch(varName, localName, tracer);
00105 }

Here is the call graph for this function:

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

Reimplemented from NsObject.

Reimplemented in BayFullTcpAgent, LDPAgent, FullTcpAgent, SackFullTcpAgent, RFC793eduTcpAgent, TcpSink, TcpAgent, and VegasTcpAgent.

Definition at line 78 of file agent.cc.

References NsObject::delay_bind_init_all().

Referenced by TcpAgent::delay_bind_init_all(), TcpSink::delay_bind_init_all(), and LDPAgent::delay_bind_init_all().

00079 {
00080         delay_bind_init_one("agent_addr_");
00081         delay_bind_init_one("agent_port_");
00082         delay_bind_init_one("dst_addr_");
00083         delay_bind_init_one("dst_port_");
00084         delay_bind_init_one("fid_");
00085         delay_bind_init_one("prio_");
00086         delay_bind_init_one("flags_");
00087         delay_bind_init_one("ttl_");
00088         delay_bind_init_one("class_");
00089         Connector::delay_bind_init_all();
00090 }

Here is the call graph for this function:

void Agent::deleteAgentTrace  )  [protected, inherited]
 

Definition at line 222 of file agent.cc.

References ns_addr_t::addr_, Agent::dst_, Agent::flushAVar(), Agent::here_, Scheduler::instance(), TIME_FORMAT, and Agent::traceName_.

Referenced by Agent::command().

00223 {
00224         char wrk[256];
00225 
00226         // XXX we don't know InstVar outside of Tcl! Is there any
00227         // tracedvars hidden in InstVar? If so, shall we have a tclclInt.h?
00228         TracedVar* var = tracedvar_;
00229         for ( ;  var != 0;  var = var->next_) 
00230                 flushAVar(var);
00231 
00232         // we need to flush all var values to trace file, 
00233         // so nam can do backtracing
00234         sprintf(wrk, "a -t "TIME_FORMAT" -s %d -d %d -n %s -x",
00235                 Scheduler::instance().clock(), here_.addr_,
00236                 dst_.addr_, traceName_); 
00237         if (traceName_ != NULL)
00238                 delete[] traceName_;
00239         traceName_ = NULL;
00240 }

Here is the call graph for this function:

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

Definition at line 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]
 

void RapAgent::finish  ) 
 

Definition at line 707 of file rap.cc.

References stop().

Referenced by RecvAck().

00708 {
00709         stop();
00710         Tcl::instance().evalf("%s done", this->name());
00711 }

Here is the call graph for this function:

void RapAgent::FixIpg double  fipg  )  [inline]
 

Definition at line 165 of file rap.h.

References fixIpg_.

Referenced by QA::get_data().

00165 { fixIpg_ = fipg; }

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

int RapAgent::GetDebugFlag  )  [inline]
 

Definition at line 147 of file rap.h.

References debugEnable_.

Referenced by AckLostPacket(), DestroyTransHistoryEntry(), and TimerLostPacket().

00147 { return debugEnable_; }

FILE* RapAgent::GetLogfile  )  [inline]
 

Definition at line 148 of file rap.h.

References logfile_.

Referenced by AckLostPacket(), DestroyTransHistoryEntry(), and TimerLostPacket().

00148 { return logfile_; }

int RapAgent::GetSeqno  )  [inline]
 

Definition at line 145 of file rap.h.

References seqno_.

Referenced by AckLostPacket(), and TimerLostPacket().

00145 { return seqno_; }

double RapAgent::GetTimeout  )  [inline]
 

Definition at line 146 of file rap.h.

References timeout_.

Referenced by TimerLostPacket().

00146 { return timeout_; }

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 RapAgent::IncreaseIpg  )  [inline, protected]
 

Definition at line 173 of file rap.h.

References beta_, fixIpg_, and ipg_.

Referenced by LossHandler().

00173                            { 
00174                 fixIpg_ = 0; 
00175                 ipg_ /= beta_; 
00176         }

void RapAgent::IncrementLossCount  )  [inline]
 

Definition at line 150 of file rap.h.

References sessionLossCount_.

Referenced by AckLostPacket(), and TimerLostPacket().

00150 { sessionLossCount_++; }

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 }

double RapAgent::ipg  )  [inline]
 

Definition at line 160 of file rap.h.

References ipg_.

Referenced by QA::get_data(), and QA::rate().

00160 { return ipg_; }

void RapAgent::IpgTimeout  )  [protected]
 

Definition at line 393 of file rap.cc.

References Agent::app_, counting_pkt(), curseq_, dctr_, Debug(), debugEnable_, fixIpg_, frtt_, Process::get_data(), Scheduler::instance(), ipg_, ipgTimer_, is_stopped(), logfile_, LossDetection(), LossHandler(), overhead_, RAP_TIMER_BASED, TimerHandler::resched(), SendPacket(), seqno_, Agent::size_, Random::uniform(), useFineGrain_, and xrtt_.

Referenced by start(), and timeout().

00394 {
00395         double waitPeriod;              // Time before next transmission
00396 
00397         Debug(debugEnable_, logfile_, 
00398               "%.3f: IPG Timeout.\n", Scheduler::instance().clock());
00399 
00400         if (LossDetection(RAP_TIMER_BASED))
00401                 LossHandler();
00402         else if (!counting_pkt()) {
00403                 if (app_) {
00404                         int nbytes;
00405                         AppData* data = app_->get_data(nbytes);
00406                         // Missing data in application. What should we do??
00407                         // For now, simply schedule the next SendPacket(). 
00408                         // If the application has nothing to send, it'll stop 
00409                         // the rap agent later on. 
00410                         if (data != NULL) {
00411                                 SendPacket(nbytes, data);
00412                                 dctr_++;
00413                         }
00414                 } else {
00415                         // If RAP doesn't have application, just go ahead and 
00416                         // send packet
00417                         SendPacket(size_);
00418                         dctr_++;
00419                 }
00420         } else if (seqno_ < curseq_) {
00421                         SendPacket(size_);
00422                         dctr_++;
00423         }
00424 
00425         // XXX If we only bound IPG in DecreaseIpg(), the thresholding will 
00426         // happen immediately because DecreaseIpg() isn't called immediately. 
00427         // So we do it here. 
00428         if (fixIpg_ != 0)
00429                 ipg_ = fixIpg_;
00430 
00431         if (useFineGrain_)
00432                 waitPeriod = frtt_ / xrtt_ * ipg_;
00433         else 
00434                 waitPeriod = ipg_;
00435         // By this point, we may have been stopped by applications above
00436         // Thus, do not reschedule a timer if we are stopped. 
00437         if (!is_stopped())
00438                 ipgTimer_.resched(waitPeriod + Random::uniform(overhead_));
00439 }

Here is the call graph for this function:

int RapAgent::is_stopped  )  [inline]
 

Definition at line 163 of file rap.h.

References flags_, and RF_STOP.

Referenced by IpgTimeout().

00163 { return flags_ & RF_STOP; }

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

Definition at line 61 of file object.h.

References NsObject::debug_.

00061 { return debug_; }

void RapAgent::listen  )  [virtual]
 

Reimplemented from Agent.

Definition at line 189 of file rap.cc.

References DebugEnable(), debugEnable_, Address::instance(), logfile_, and Address::NodeShift_.

Referenced by command().

00190 {
00191         if (debugEnable_)
00192                 logfile_ = DebugEnable(this->addr() >> 
00193                                        Address::instance().NodeShift_[1]);
00194 }

Here is the call graph for this function:

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 }

int RapAgent::LossDetection RapLossType  type,
hdr_rap ackHeader = NULL
[protected]
 

Definition at line 556 of file rap.cc.

References ackHdr, AckLostPacket(), currentTime, Debug(), debugEnable_, TransHistoryEntry::departureTime, DestroyTransHistoryEntry(), EqualStatus(), FALSE, logfile_, List::Mapcar(), numLosses, List::Purge(), RAP_ACK_BASED, RAP_PURGED, RAP_TIMER_BASED, rapAgent, List::Size(), TimerLostPacket(), transmissionHistory_, and TRUE.

Referenced by IpgTimeout(), and RecvAck().

00557 {
00558         TransHistoryEntry key(0, RAP_PURGED);
00559 
00560         currentTime = key.departureTime;
00561         ackHdr = ackHeader;
00562         rapAgent = this;
00563         numLosses = 0;
00564 
00565         switch(type) {
00566         case RAP_TIMER_BASED:
00567                 transmissionHistory_.Mapcar(TimerLostPacket);
00568                 break;
00569                 
00570         case RAP_ACK_BASED:
00571                 transmissionHistory_.Mapcar(AckLostPacket);
00572                 break;
00573 
00574         default:
00575                 assert(FALSE);
00576         }
00577 
00578         Debug(debugEnable_, logfile_, 
00579               "- %d losses detected\n", numLosses); 
00580 
00581         Debug(debugEnable_, logfile_, 
00582               "- history size %d\n", transmissionHistory_.Size());
00583   
00584         transmissionHistory_.Purge((void *) &key, 
00585                                    EqualStatus, // Purge PURGED packets
00586                                    DestroyTransHistoryEntry);
00587 
00588         Debug(debugEnable_, logfile_, 
00589               "- history size %d\n", transmissionHistory_.Size());
00590 
00591         if (numLosses)
00592                 return TRUE;
00593         else
00594                 return FALSE;
00595 }

Here is the call graph for this function:

void RapAgent::LossHandler  )  [protected]
 

Definition at line 610 of file rap.cc.

References Debug(), debugEnable_, IncreaseIpg(), Scheduler::instance(), ipg_, logfile_, List::Mapcar(), MarkInactive(), overhead_, TimerHandler::resched(), rttTimer_, srtt_, and transmissionHistory_.

Referenced by IpgTimeout(), and RecvAck().

00611 {
00612         IncreaseIpg();          // Multiplicative decrease in rate
00613 
00614         double debugIpg = ipg_ + overhead_ / 2;
00615         Debug(debugEnable_, logfile_, 
00616               "- ipg increased at %.3f to %f\n", 
00617               Scheduler::instance().clock(), debugIpg);
00618 
00619         transmissionHistory_.Mapcar(MarkInactive);
00620         Debug(debugEnable_, logfile_, 
00621               "- window full packets marked inactive\n");
00622 
00623         rttTimer_.resched(srtt_);
00624 }

Here is the call graph for this function:

void Agent::monitorAgentTrace  )  [protected, inherited]
 

Definition at line 310 of file agent.cc.

References ns_addr_t::addr_, Agent::channel_, Scheduler::clock(), Agent::here_, Scheduler::instance(), TIME_FORMAT, and Agent::traceName_.

Referenced by Agent::command().

00311 {
00312         char wrk[256];
00313         int n;
00314         double curTime = (&Scheduler::instance() == NULL ? 0 : 
00315                           Scheduler::instance().clock());
00316         
00317         sprintf(wrk, "v -t "TIME_FORMAT" -e monitor_agent %d %s",
00318                 curTime, here_.addr_, traceName_);
00319         n = strlen(wrk);
00320         wrk[n] = '\n';
00321         wrk[n+1] = 0;
00322         if (channel_)
00323                 (void)Tcl_Write(channel_, wrk, n+1);
00324 }

Here is the call graph for this function:

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

Definition at line 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 RapAgent::recv Packet ,
Handler
[virtual]
 

Reimplemented from Agent.

Definition at line 297 of file rap.cc.

References hdr_rap::access(), Agent::app_, Packet::datalen(), Debug(), debugEnable_, hdr_rap::flags(), Packet::free(), Scheduler::instance(), logfile_, Process::process_data(), RecvAck(), RH_ACK, RH_DATA, SendAck(), hdr_rap::seqno(), UpdateLastHole(), and Packet::userdata().

00298 {
00299         Debug(debugEnable_, logfile_, 
00300               "%.3f: RAP packet received.\n", Scheduler::instance().clock());
00301 
00302         hdr_rap* hdr = hdr_rap::access(pkt); // Access RAP header
00303 
00304         switch (hdr->flags()) { 
00305         case RH_DATA:
00306                 UpdateLastHole(hdr->seqno());
00307                 SendAck(hdr->seqno());
00308                 if ((pkt->datalen() > 0) && app_) 
00309                         // We do have user data, process it
00310                         app_->process_data(pkt->datalen(), pkt->userdata());
00311                 break;
00312         case RH_ACK:
00313                 RecvAck(hdr);
00314                 break;
00315         default:
00316                 fprintf(stderr, 
00317                         "RAP agent %s received a packet with unknown flags %x",
00318                         name(), hdr->flags());
00319                 break;
00320         } 
00321         Packet::free(pkt);              // Discard the packet
00322 }

Here is the call graph for this function:

void RapAgent::RecvAck hdr_rap ackHeader  )  [protected]
 

Definition at line 331 of file rap.cc.

References anyack(), counting_pkt(), curseq_, Debug(), debugEnable_, TransHistoryEntry::departureTime, EqualSeqno(), finish(), flags_, ipg_, logfile_, LossDetection(), LossHandler(), RAP_ACK_BASED, RAP_INACTIVE, RAP_SENT, RF_ANYACK, hdr_rap::seqno_, List::SetRemove(), srtt_, TransHistoryEntry::status, transmissionHistory_, and UpdateTimeValues().

Referenced by recv().

00332 {
00333         double sampleRtt;
00334         TransHistoryEntry *old, key(ackHeader->seqno_);
00335 
00336         assert(ackHeader->seqno_ > 0);
00337 
00338         Debug(debugEnable_, logfile_, 
00339               "- ack %d\n", ackHeader->seqno_);
00340 
00341         old = (TransHistoryEntry *) 
00342                 transmissionHistory_.SetRemove((void *) &key, EqualSeqno);
00343 
00344         if (old != NULL) {
00345                 Debug(debugEnable_, logfile_, 
00346                       "- found in transmission history\n");
00347                 assert((old->status == RAP_SENT) || (old->status == RAP_INACTIVE));
00348 
00349                 // Get sample rtt               
00350                 sampleRtt = key.departureTime - old->departureTime; 
00351 
00352                 UpdateTimeValues(sampleRtt);
00353                 
00354                 delete old;
00355         }
00356   
00357         if (!anyack()) {
00358                 flags_ |= RF_ANYACK;
00359                 ipg_ = srtt_;
00360         }
00361   
00362         if (LossDetection(RAP_ACK_BASED, ackHeader))
00363                 LossHandler();
00364 
00365         // XXX We only stop by sequence number when we are in 
00366         // "counting sequence number" mode.   -- haoboy
00367         if (counting_pkt() && (ackHeader->seqno_ >= curseq_)) 
00368                 finish();
00369 }

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 }

void RapAgent::RttTimeout  )  [protected]
 

Definition at line 447 of file rap.cc.

References dctr_, Debug(), debugEnable_, DecreaseIpg(), dpthresh_, Scheduler::instance(), ipg_, logfile_, overhead_, TimerHandler::resched(), rttTimer_, and srtt_.

Referenced by start(), and timeout().

00448 {
00449         Debug(debugEnable_, logfile_, 
00450               "%.3f: RTT Timeout.\n", Scheduler::instance().clock());
00451 
00452         // During the past srtt_, we are supposed to send out srtt_/ipg_
00453         // packets. If we sent less than that, we may not increase rate
00454         if (100*dctr_*(ipg_/srtt_) >= dpthresh_)
00455                 DecreaseIpg();          // Additive increase in rate
00456         else 
00457                 Debug(debugEnable_, logfile_, 
00458                       "- %f Cannot increase rate due to insufficient data.\n",
00459                       Scheduler::instance().clock());
00460         dctr_ = 0;
00461 
00462         double debugIpg = ipg_ + overhead_ / 2;
00463         Debug(debugEnable_, logfile_, 
00464               "- ipg decreased at %.3f to %f\n", 
00465               Scheduler::instance().clock(), debugIpg);
00466 
00467         rttTimer_.resched(srtt_);
00468 }

Here is the call graph for this function:

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(), LDPAgent::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(), SendAck(), SimpleTcpAgent::sendmsg(), PushbackAgent::sendMsg(), FullTcpAgent::sendpacket(), BayFullTcpAgent::sendpacket(), 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 RapAgent::SendAck int  seqNum  )  [protected]
 

Definition at line 633 of file rap.cc.

References hdr_cmn::access(), hdr_rap::access(), Agent::allocpkt(), Debug(), debugEnable_, hdr_rap::flags(), hdr_rap::lastMiss, lastMiss_, hdr_rap::lastRecv, lastRecv_, logfile_, hdr_rap::prevRecv, prevRecv_, PT_RAP_ACK, rap_base_hdr_size_, RH_ACK, Agent::send(), hdr_rap::seqno(), hdr_cmn::size(), and Agent::type_.

Referenced by recv().

00634 {
00635         type_ = PT_RAP_ACK;
00636         Packet* pkt = allocpkt();       // Create a new packet
00637         hdr_rap* hdr = hdr_rap::access(pkt);   // Access header
00638 
00639         hdr->seqno() = seqNum;
00640         hdr->flags() = RH_ACK;
00641 
00642         hdr->lastRecv = lastRecv_;
00643         hdr->lastMiss = lastMiss_;
00644         hdr->prevRecv = prevRecv_;
00645 
00646         hdr_cmn *ch = hdr_cmn::access(pkt);
00647         ch->size() = rap_base_hdr_size_;
00648 
00649         send(pkt, 0);
00650         Debug(debugEnable_, logfile_, 
00651               "- ack sent %u [%u %u %u]\n", 
00652               seqNum, lastRecv_, lastMiss_, prevRecv_);
00653 }

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:

void RapAgent::SendPacket int  nbytes,
AppData data = 0
[protected]
 

Definition at line 256 of file rap.cc.

References hdr_cmn::access(), hdr_rap::access(), Agent::allocpkt(), Debug(), debugEnable_, EqualSeqno(), hdr_rap::flags(), hdr_rap::lastMiss, hdr_rap::lastRecv, logfile_, hdr_rap::prevRecv, PT_RAP_DATA, RH_DATA, Agent::send(), hdr_rap::seqno(), seqno_, Packet::setdata(), List::SetInsert(), hdr_cmn::size(), hdr_rap::size(), AppData::size(), Agent::size_, transmissionHistory_, and Agent::type_.

Referenced by IpgTimeout().

00257 {
00258         TransHistoryEntry *pktInfo;
00259         Packet *pkt;
00260 
00261         type_ = PT_RAP_DATA;
00262         if (data)
00263                 pkt = allocpkt(data->size()); 
00264         else 
00265                 pkt = allocpkt();
00266 
00267         // Fill in RAP headers
00268         hdr_rap* hdr = hdr_rap::access(pkt);
00269         hdr->seqno() = ++seqno_;        // Start counting from 1;
00270         hdr->lastRecv = hdr->lastMiss = hdr->prevRecv = 0; // Ignore @ sender
00271         hdr->flags() = RH_DATA;
00272         if (data) {
00273                 hdr->size() = data->size();
00274                 pkt->setdata(data);
00275         } else {
00276                 hdr->size() = size_;
00277         }
00278         // XXX Simply set packet size to the given ADU's nominal size. 
00279         // Make sure that the size is reasonable!!
00280         hdr_cmn *ch = hdr_cmn::access(pkt);
00281         ch->size() = nbytes; 
00282 
00283         send(pkt, 0);
00284         pktInfo = new TransHistoryEntry(seqno_);
00285         transmissionHistory_.SetInsert((void *) pktInfo, EqualSeqno);
00286         int debugSeqno = seqno_;
00287         Debug(debugEnable_, logfile_, 
00288               "- packet %d sent\n", debugSeqno);
00289 }

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

double RapAgent::srtt  )  [inline]
 

Definition at line 159 of file rap.h.

References srtt_.

Referenced by QA::get_data(), and QA::UpdateInterval().

00159 { return srtt_; }

void RapAgent::start  ) 
 

Definition at line 171 of file rap.cc.

References Scheduler::clock(), Debug(), DebugEnable(), debugEnable_, flags_, Scheduler::instance(), Address::instance(), IpgTimeout(), logfile_, Address::NodeShift_, RF_STOP, RttTimeout(), and startTime_.

Referenced by advanceby(), and command().

00172 {
00173         if (debugEnable_)
00174                 logfile_ = DebugEnable(this->addr() >> 
00175                                        Address::instance().NodeShift_[1]);
00176         else
00177                 // Should initialize it regardless of whether it'll be used.
00178                 logfile_ = NULL;
00179         Debug(debugEnable_, logfile_, "%.3f: RAP start.\n", 
00180               Scheduler::instance().clock());
00181 
00182         flags_ = flags_ & ~RF_STOP;
00183         startTime_ = Scheduler::instance().clock();
00184         RttTimeout();           // Decreases initial IPG
00185         IpgTimeout();
00186 }

Here is the call graph for this function:

void RapAgent::stop  ) 
 

Definition at line 196 of file rap.cc.

References TimerHandler::cancel(), Scheduler::clock(), Debug(), debugEnable_, flags_, Scheduler::instance(), ipgTimer_, logfile_, RF_STOP, rttTimer_, seqno_, startTime_, TimerHandler::status(), stopTime_, and TIMER_PENDING.

Referenced by command(), finish(), QA::output(), QA::stop(), MediaApp::stop(), and ~RapAgent().

00197 {
00198         Debug(debugEnable_, logfile_, 
00199               "%.3f: RAP stop.\n", Scheduler::instance().clock());
00200                         
00201         // Cancel the timer only when there is one
00202         if (ipgTimer_.status() == TIMER_PENDING)
00203                 ipgTimer_.cancel();  
00204         if (rttTimer_.status() == TIMER_PENDING)
00205                 rttTimer_.cancel();
00206 
00207         stopTime_ = Scheduler::instance().clock();
00208         int debugSeqno = seqno_;
00209         Debug(debugEnable_, logfile_, 
00210               "- numPackets %d, totalTime %f\n", 
00211               debugSeqno, stopTime_ - startTime_);
00212         flags_ |= RF_STOP;
00213 }

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(), QSAgent::recv(), and MIPMHAgent::reg().

00048 { return target_; }

void RapAgent::timeout int  type  )  [virtual]
 

Reimplemented from Agent.

Definition at line 378 of file rap.cc.

References FALSE, IpgTimeout(), RAP_IPG_TIMEOUT, RAP_RTT_TIMEOUT, and RttTimeout().

Referenced by RttTimer::expire(), and IpgTimer::expire().

00379 {
00380         if (type == RAP_IPG_TIMEOUT)
00381                 IpgTimeout();
00382         else if (type == RAP_RTT_TIMEOUT)
00383                 RttTimeout();
00384         else
00385                 assert(FALSE);
00386 }

Here is the call graph for this function:

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:

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

Reimplemented in TcpAgent.

Definition at line 146 of file agent.h.

00146 {}

void RapAgent::UpdateLastHole int  seqNum  )  [protected]
 

Definition at line 662 of file rap.cc.

References lastMiss_, lastRecv_, and prevRecv_.

Referenced by recv().

00663 {
00664         assert(seqNum > 0);
00665 
00666         if (seqNum > (lastRecv_ + 1)) {
00667                 prevRecv_ = lastRecv_;
00668                 lastRecv_ = seqNum;
00669                 lastMiss_ = seqNum - 1;
00670                 return;
00671         }
00672 
00673         if (seqNum == (lastRecv_ + 1)) {
00674                 lastRecv_ = seqNum;
00675                 return;
00676         }
00677         
00678         if ((lastMiss_ < seqNum) && (seqNum <= lastRecv_)) // Duplicate
00679                 return;
00680 
00681         if (seqNum == lastMiss_) {
00682                 if ((prevRecv_ + 1) == seqNum) // Hole filled
00683                         prevRecv_ = lastMiss_ = 0;
00684                 else
00685                         lastMiss_--;
00686                 
00687                 return;
00688         }
00689         
00690         if ((prevRecv_ < seqNum) && (seqNum < lastMiss_)) {
00691                 prevRecv_ = seqNum;
00692                 return;
00693         }
00694 
00695         assert(seqNum <= prevRecv_);    // Pretty late...
00696 }

void RapAgent::UpdateTimeValues double  sampleRtt  )  [protected]
 

Definition at line 142 of file rap.cc.

References Debug(), debugEnable_, delta_, FALSE, frtt_, kfrtt_, kxrtt_, logfile_, mu_, phi_, srtt_, timeout_, TRUE, useFineGrain_, variance_, and xrtt_.

Referenced by RecvAck().

00143 { 
00144         double diff;
00145         static int initial = TRUE;
00146 
00147         if (initial) {
00148                 frtt_ = xrtt_ = srtt_ = sampleRtt; // First sample, no history
00149                 variance_ = 0;
00150                 initial = FALSE;
00151         }
00152 
00153         diff = sampleRtt - srtt_;
00154         srtt_ += delta_ * diff;
00155       
00156         diff = (diff < 0) ? diff * -1 : diff; // Take mod
00157         variance_ += delta_ * (diff - variance_);
00158 
00159         timeout_ = mu_ * srtt_ + phi_ * variance_;
00160 
00161         if (useFineGrain_) {
00162                 frtt_ = (1 - kfrtt_) * frtt_ + kfrtt_ * sampleRtt;
00163                 xrtt_ = (1 - kxrtt_) * xrtt_ + kxrtt_ * sampleRtt;
00164         }
00165 
00166         double debugSrtt = srtt_;       // $%#& stoopid compiler
00167         Debug(debugEnable_, logfile_, 
00168               "- srtt updated to %f\n", debugSrtt);
00169 }

Here is the call graph for this function:


Member Data Documentation

double RapAgent::alpha_ [protected]
 

Definition at line 208 of file rap.h.

Referenced by DecreaseIpg(), and RapAgent().

Application* Agent::app_ [protected, inherited]
 

Reimplemented in BayFullTcpAgent.

Definition at line 134 of file agent.h.

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

double RapAgent::beta_ [protected]
 

Definition at line 207 of file rap.h.

Referenced by IncreaseIpg(), and RapAgent().

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

TracedInt RapAgent::curseq_ [protected]
 

Definition at line 204 of file rap.h.

Referenced by advanceby(), IpgTimeout(), and RecvAck().

int RapAgent::dctr_ [protected]
 

Definition at line 243 of file rap.h.

Referenced by IpgTimeout(), and RttTimeout().

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 RapAgent::debugEnable_ [protected]
 

Definition at line 228 of file rap.h.

Referenced by GetDebugFlag(), IpgTimeout(), listen(), LossDetection(), LossHandler(), RapAgent(), recv(), RecvAck(), RttTimeout(), SendAck(), SendPacket(), start(), stop(), and UpdateTimeValues().

int Agent::defttl_ [protected, inherited]
 

Definition at line 121 of file agent.h.

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

double RapAgent::delta_ [protected]
 

Definition at line 212 of file rap.h.

Referenced by RapAgent(), and UpdateTimeValues().

int RapAgent::dpthresh_ [protected]
 

Definition at line 245 of file rap.h.

Referenced by RapAgent(), and RttTimeout().

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

double RapAgent::fixIpg_ [protected]
 

Definition at line 249 of file rap.h.

Referenced by DecreaseIpg(), FixIpg(), IncreaseIpg(), and IpgTimeout().

int RapAgent::flags_ [protected]
 

Reimplemented from Agent.

Definition at line 248 of file rap.h.

Referenced by advanceby(), anyack(), counting_pkt(), is_stopped(), RecvAck(), start(), and stop().

double RapAgent::frtt_ [protected]
 

Definition at line 219 of file rap.h.

Referenced by IpgTimeout(), RapAgent(), and UpdateTimeValues().

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

TracedDouble RapAgent::ipg_ [protected]
 

Definition at line 206 of file rap.h.

Referenced by DecreaseIpg(), IncreaseIpg(), ipg(), IpgTimeout(), LossHandler(), RapAgent(), RecvAck(), and RttTimeout().

IpgTimer RapAgent::ipgTimer_ [protected]
 

Definition at line 197 of file rap.h.

Referenced by IpgTimeout(), and stop().

double RapAgent::kfrtt_ [protected]
 

Definition at line 222 of file rap.h.

Referenced by RapAgent(), and UpdateTimeValues().

double RapAgent::kxrtt_ [protected]
 

Definition at line 221 of file rap.h.

Referenced by RapAgent(), and UpdateTimeValues().

int RapAgent::lastMiss_ [protected]
 

Definition at line 233 of file rap.h.

Referenced by SendAck(), and UpdateLastHole().

int RapAgent::lastRecv_ [protected]
 

Definition at line 232 of file rap.h.

Referenced by SendAck(), and UpdateLastHole().

FILE* RapAgent::logfile_ [protected]
 

Definition at line 229 of file rap.h.

Referenced by GetLogfile(), IpgTimeout(), listen(), LossDetection(), LossHandler(), recv(), RecvAck(), RttTimeout(), SendAck(), SendPacket(), start(), stop(), and UpdateTimeValues().

double RapAgent::mu_ [protected]
 

Definition at line 213 of file rap.h.

Referenced by RapAgent(), and UpdateTimeValues().

OldValue* Agent::oldValueList_ [protected, inherited]
 

Definition at line 132 of file agent.h.

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

double RapAgent::overhead_ [protected]
 

Definition at line 216 of file rap.h.

Referenced by IpgTimeout(), LossHandler(), RapAgent(), and RttTimeout().

double RapAgent::phi_ [protected]
 

Definition at line 214 of file rap.h.

Referenced by RapAgent(), and UpdateTimeValues().

int RapAgent::prevRecv_ [protected]
 

Definition at line 234 of file rap.h.

Referenced by SendAck(), and UpdateLastHole().

int Agent::prio_ [protected, inherited]
 

Definition at line 119 of file agent.h.

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

int RapAgent::rap_base_hdr_size_ [protected]
 

Definition at line 238 of file rap.h.

Referenced by RapAgent(), and SendAck().

RttTimer RapAgent::rttTimer_ [protected]
 

Definition at line 198 of file rap.h.

Referenced by LossHandler(), RttTimeout(), and stop().

TracedInt RapAgent::seqno_ [protected]
 

Definition at line 202 of file rap.h.

Referenced by GetSeqno(), IpgTimeout(), RapAgent(), SendPacket(), and stop().

TracedInt RapAgent::sessionLossCount_ [protected]
 

Definition at line 203 of file rap.h.

Referenced by IncrementLossCount(), and RapAgent().

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(), LDPAgent::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(), IpgTimeout(), IvsReceiver::IvsReceiver(), LmsAgent::LmsAgent(), LmsReceiver::LmsReceiver(), mcastControlAgent::mcastControlAgent(), MessageAgent::MessageAgent(), MIPBSAgent::MIPBSAgent(), MIPMHAgent::MIPMHAgent(), TfrcAgent::nextpkt(), IntTcpAgent::opencwnd(), PingAgent::PingAgent(), 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(), 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().

TracedDouble RapAgent::srtt_ [protected]
 

Definition at line 210 of file rap.h.

Referenced by DecreaseIpg(), LossHandler(), RapAgent(), RecvAck(), RttTimeout(), srtt(), and UpdateTimeValues().

double RapAgent::startTime_ [protected]
 

Definition at line 226 of file rap.h.

Referenced by start(), and stop().

double RapAgent::stopTime_ [protected]
 

Definition at line 226 of file rap.h.

Referenced by stop().

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

TracedDouble RapAgent::timeout_ [protected]
 

Definition at line 224 of file rap.h.

Referenced by GetTimeout(), RapAgent(), and UpdateTimeValues().

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

List RapAgent::transmissionHistory_ [protected]
 

Definition at line 200 of file rap.h.

Referenced by LossDetection(), LossHandler(), RecvAck(), and SendPacket().

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(), SendAck(), SRMAgent::sendmsg(), 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().

int RapAgent::useFineGrain_ [protected]
 

Definition at line 218 of file rap.h.

Referenced by IpgTimeout(), RapAgent(), and UpdateTimeValues().

double RapAgent::variance_ [protected]
 

Definition at line 211 of file rap.h.

Referenced by RapAgent(), and UpdateTimeValues().

double RapAgent::xrtt_ [protected]
 

Definition at line 220 of file rap.h.

Referenced by IpgTimeout(), RapAgent(), and UpdateTimeValues().


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