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

MFTPSndAgent Class Reference

#include <mftp_snd.h>

Inheritance diagram for MFTPSndAgent:

Inheritance graph
[legend]
Collaboration diagram for MFTPSndAgent:

Collaboration graph
[legend]
List of all members.

Public Member Functions

 MFTPSndAgent ()
virtual ~MFTPSndAgent ()
int command (int argc, const char *const *argv)
void recv (Packet *p, Handler *h)
virtual void recv (Packet *p, const char *s)
void recvOnly (Packet *)
void send (Packet *p, Handler *h)
virtual void send (int sz, AppData *data)
virtual void send (int nbytes)
virtual void timeout (int tno)
virtual void sendmsg (int sz, AppData *, const char *flags=0)
virtual void sendmsg (int nbytes, const char *flags=0)
virtual void sendto (int sz, AppData *, const char *flags, nsaddr_t dst)
virtual void sendto (int nbytes, const char *flags, nsaddr_t dst)
virtual void connect (nsaddr_t dst)
virtual void close ()
virtual void listen ()
virtual void attachApp (Application *app)
virtual int & size ()
nsaddr_taddr ()
nsaddr_tport ()
nsaddr_tdaddr ()
nsaddr_tdport ()
void set_pkttype (packet_t pkttype)
packet_t get_pkttype ()
NsObjecttarget ()
virtual void drop (Packet *p)
int isdebug () const
virtual void debug (const char *fmt,...)

Protected Member Functions

void fill_read_ahead_buf ()
void init_user_file (unsigned long readAheadBufsize)
int send_data ()
void send_status_request (unsigned long pass_nb, unsigned long block_lo, unsigned long block_hi, double txStatusDelay)
void process_nak (hdr_mftp::Spec::Nak &nak, unsigned char *nak_bitmap, unsigned long currentPass)
int init ()
unsigned long nb_blocks () const
unsigned long get_dtus_per_group (unsigned long group_nb) const
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

int readAheadBufsize_
double txStatusDelay_
int nakCount_
unsigned char * naks
unsigned char * retx
unsigned long fseek_offset
unsigned long read_ahead_bufsize
unsigned long CurrentPass
unsigned long CurrentGroup
CW_PATTERN_t CwPat
unsigned long MinGroupNbInBuf
unsigned long NbGroupsInBuf
Codeword iterator
int dtuSize_
int fileSize_
int dtusPerBlock_
int dtusPerGroup_
int seekCount_
unsigned long FileSize
unsigned long FileDGrams
unsigned long dtu_size
unsigned long dtus_per_block
unsigned long dtus_per_group
unsigned long nb_groups
ns_addr_t here_
ns_addr_t dst_
int size_
packet_t type_
int fid_
int prio_
int flags_
int defttl_
Tcl_Channel channel_
char * traceName_
OldValueoldValueList_
Applicationapp_
EventTraceet_
NsObjecttarget_
NsObjectdrop_
int debug_

Static Protected Attributes

int uidcnt_

Constructor & Destructor Documentation

MFTPSndAgent::MFTPSndAgent  ) 
 

Definition at line 64 of file mftp_snd.cc.

References nakCount_, readAheadBufsize_, and txStatusDelay_.

00065     : MFTPAgent(),
00066       naks(0),
00067       retx(0),
00068       fseek_offset(0),
00069       read_ahead_bufsize(0),
00070       CurrentPass(0),
00071       CurrentGroup(0),
00072       CwPat(0),
00073       MinGroupNbInBuf(0),
00074       NbGroupsInBuf(0)
00075 {
00076     bind("readAheadBufsize_", &readAheadBufsize_);
00077     bind_time("txStatusDelay_", &txStatusDelay_);
00078     bind("nakCount_", &nakCount_);
00079 }

MFTPSndAgent::~MFTPSndAgent  )  [virtual]
 

Definition at line 81 of file mftp_snd.cc.

References naks, and retx.

00082 {
00083     delete [] naks;  // NOTE: delete on NULL pointer has no effect
00084     delete [] retx;
00085 }


Member Function Documentation

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

Definition at line 326 of file agent.cc.

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

Referenced by Agent::command().

00327 {
00328         char wrk[256];
00329         int n;
00330         double curTime = (&Scheduler::instance() == NULL ? 0 : 
00331                           Scheduler::instance().clock());
00332         
00333         sprintf(wrk, "a -t "TIME_FORMAT" -s %d -d %d -n %s",
00334                 curTime, here_.addr_, dst_.addr_, name);
00335         n = strlen(wrk);
00336         wrk[n] = '\n';
00337         wrk[n+1] = 0;
00338         if (channel_)
00339                 (void)Tcl_Write(channel_, wrk, n+1);
00340         // keep agent trace name
00341         if (traceName_ != NULL)
00342                 delete[] traceName_;
00343         traceName_ = new char[strlen(name)+1];
00344         strcpy(traceName_, name);
00345 }

Here is the call graph for this function:

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

Definition at line 96 of file agent.h.

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

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

00096 { return here_.addr_; }

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

Definition at line 517 of file agent.cc.

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

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

Here is the call graph for this function:

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

Definition at line 506 of file agent.cc.

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

Referenced by TcpSink::ack(), QSTcpSink::ack(), Agent::allocpkt(), PingAgent::command(), MessageAgent::command(), mcastControlAgent::command(), LmsAgent::command(), 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(), 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(), send_status_request(), RapAgent::SendAck(), UdpAgent::sendmsg(), SimpleTcpAgent::sendmsg(), SRMAgent::sendmsg(), SA_Agent::sendmsg(), RTPAgent::sendmsg(), PushbackAgent::sendMsg(), LmsSender::sendmsg(), FullTcpAgent::sendpacket(), BayFullTcpAgent::sendpacket(), RapAgent::SendPacket(), TfrcAgent::sendpkt(), TfrcSinkAgent::sendpkt(), SA_Agent::sendpkt(), rtProtoDV::sendpkt(), RTPAgent::sendpkt(), RTCPAgent::sendpkt(), RLM_Sender::sendpkt(), IvsSource::sendpkt(), IcmpAgent::sendredirect(), SA_Agent::sendreq(), DSRAgent::sendRouteShortening(), SA_Agent::sendteardown(), LmsSender::solicit_naks(), and AbsDelAckSink::timeout().

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

Here is the call graph for this function:

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

Definition at line 372 of file agent.cc.

References Agent::app_.

Referenced by HttpMInvalCache::command(), Application::command(), TcpApp::TcpApp(), and TcpApp::~TcpApp().

00373 {
00374         app_ = app;
00375 }

void Agent::close  )  [virtual, inherited]
 

Reimplemented in FullTcpAgent.

Definition at line 377 of file agent.cc.

Referenced by Agent::command().

00378 {
00379 }

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

Reimplemented from Agent.

Definition at line 87 of file mftp_snd.cc.

References Agent::command(), MFTPAgent::init(), init_user_file(), readAheadBufsize_, send_data(), and send_status_request().

00088 {
00089     Tcl& tcl = Tcl::instance();
00090 
00091     if(strcmp(argv[1], "send") == 0) {
00092         if(strcmp(argv[2], "data") == 0) {
00093             return send_data();
00094         } else if(strcmp(argv[2], "statreq") == 0) {
00095             unsigned long pass_nb, block_lo, block_hi;
00096             double rsp_backoff_window=2343.2343;
00097             int nb_scanned = 0;
00098             if(argc == 7) {
00099                 nb_scanned += sscanf(argv[3], "%lu", &pass_nb);
00100                 nb_scanned += sscanf(argv[4], "%lu", &block_lo);
00101                 nb_scanned += sscanf(argv[5], "%lu", &block_hi);
00102                 nb_scanned += sscanf(argv[6], "%lf", &rsp_backoff_window);
00103             }
00104             if(nb_scanned != 4) {
00105                 tcl.resultf("%s: wrong number of parameters for \"send statreq\"", name_);
00106                 return TCL_ERROR;
00107             }
00108             send_status_request(pass_nb, block_lo, block_hi, rsp_backoff_window); 
00109             return TCL_OK;
00110         }
00111     }
00112     if(strcmp(argv[1], "start") == 0) {
00113         if(MFTPAgent::init() == TCL_ERROR) {
00114             return TCL_ERROR;
00115         };
00116         init_user_file((unsigned long) readAheadBufsize_);
00117         return TCL_OK;
00118     }
00119     return Agent::command(argc, argv);
00120 }

Here is the call graph for this function:

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

Definition at line 389 of file agent.cc.

Referenced by Agent::command().

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

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

Definition at line 98 of file agent.h.

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

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

00098 { return dst_.addr_; }

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

Definition at line 102 of file object.cc.

References NsObject::debug_.

00103 {
00104         if (!debug_)
00105                 return;
00106         va_list ap;
00107         va_start(ap, fmt);
00108         vprintf(fmt, ap);
00109 }

int 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 MFTPSndAgent::fill_read_ahead_buf  )  [protected]
 

Definition at line 266 of file mftp_snd.cc.

References bitcount(), CurrentGroup, CwPat, MFTPAgent::dtu_size, MFTPAgent::dtus_per_group, MFTPAgent::FileSize, fseek_offset, IS_BIT_CLEARED, len, min, minbit(), MinGroupNbInBuf, naks, MFTPAgent::nb_groups, NbGroupsInBuf, read_ahead_bufsize, and MFTPAgent::seekCount_.

Referenced by send_data().

00267 {
00268     unsigned int dtu_pos;        // loops over [0..dtus_per_group)
00269     unsigned long seek_offset;   // where to position the head for disk seeks
00270     unsigned long buf_pos = 0;   // position where data is written (into main memory) when
00271                                  // read from disk, relative to the start of read_ahead_buf
00272     CW_PATTERN_t cw_pat_tmp = CwPat;
00273     unsigned long i;
00274     unsigned long len;
00275 
00276     // switch to next group that must be read:
00277     MinGroupNbInBuf = CurrentGroup;
00278     NbGroupsInBuf = min(read_ahead_bufsize / (bitcount(CwPat) * dtu_size),
00279                         nb_groups - MinGroupNbInBuf);
00280     while(cw_pat_tmp != 0) {
00281         dtu_pos = minbit(cw_pat_tmp);
00282         assert(0 <= dtu_pos && dtu_pos < dtus_per_group);
00283         assert(MinGroupNbInBuf + NbGroupsInBuf <= nb_groups);
00284 
00285         cw_pat_tmp &= ~((CW_PATTERN_t) 1 << dtu_pos);  // clear bit at position "dtu_pos"
00286 
00287         for(i = MinGroupNbInBuf;
00288             i < MinGroupNbInBuf + NbGroupsInBuf; ++i) {
00289 
00290             // continue with for-loop if group i was not NACKed by anyone
00291             if(IS_BIT_CLEARED(naks, i)) {
00292                 buf_pos += dtu_size;
00293                 continue;
00294             }
00295 
00296             // Note: there is never data accessed "outside" the file as the while-loop
00297             // is left as soon as the last (possibly partial) DTU has been read.
00298             seek_offset = (dtu_pos * nb_groups + i) * dtu_size;
00299             if(seek_offset >= FileSize) {
00300                 // we can get there if the last group(s) have fewer than
00301                 // dtus_per_group packets. If we get here, we are ready.
00302                 return; // OK
00303             }
00304 
00305             if (fseek_offset != seek_offset) {
00306                 // do the fseek here (omitted)
00307                 seekCount_++;
00308                 fseek_offset = seek_offset;
00309             }
00310 
00311             // determine number of bytes to read
00312             len = min(dtu_size, FileSize - fseek_offset);
00313 
00314             // read len bytes from file here (omitted)
00315             fseek_offset += len;
00316 
00317             buf_pos += len;
00318             if(len < dtu_size) {
00319                 // we get here if the last dtu is smaller than dtu_size and if
00320                 // we have just read that last dtu
00321 
00322                 assert(fseek_offset == FileSize); // we must be at EOF
00323 
00324                 // clear rest of read-ahead-buffer here (omitted)
00325                 buf_pos = bitcount(CwPat) * NbGroupsInBuf * dtu_size;
00326                 return;                  // that's it, no more packets to process
00327              }
00328             assert(len == dtu_size);
00329             assert(buf_pos <= bitcount(CwPat) * NbGroupsInBuf * dtu_size);
00330         } // for
00331     } // while
00332     // we get here only if no group was read with less than dtus_per_group packets and
00333     // the if not the last packet was read (in case it is too short)
00334     assert(buf_pos == bitcount(CwPat) * NbGroupsInBuf * dtu_size);
00335 }

Here is the call graph for this function:

unsigned long MFTPAgent::get_dtus_per_group unsigned long  group_nb  )  const [inline, protected, inherited]
 

Definition at line 104 of file mftp.h.

References MFTPAgent::dtus_per_group, MFTPAgent::FileDGrams, and MFTPAgent::nb_groups.

Referenced by MFTPRcvAgent::is_group_full(), MFTPRcvAgent::process_packet(), and send_data().

00105 {
00106     assert(0 <= group_nb && group_nb < nb_groups);
00107     assert(nb_groups > 0);
00108 
00109     unsigned long res = FileDGrams / nb_groups;
00110 
00111     if(group_nb < FileDGrams % nb_groups) {
00112         res++;
00113     }
00114     assert(0 <= res && res <= dtus_per_group);
00115     assert(res == 0 || FileDGrams > 0);
00116     return res;
00117 }

packet_t Agent::get_pkttype  )  [inline, inherited]
 

Definition at line 101 of file agent.h.

References packet_t, and Agent::type_.

Referenced by CBR_Traffic::init().

00101 { return type_; }

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

Implements Handler.

Reimplemented in LinkDelay, LL, AckRecons, and Snoop.

Definition at line 91 of file object.cc.

References NsObject::recv().

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

Here is the call graph for this function:

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

Definition at line 363 of file agent.cc.

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

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

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

Here is the call graph for this function:

int MFTPAgent::init  )  [protected, inherited]
 

Reimplemented in MFTPRcvAgent.

Definition at line 41 of file mftp.cc.

References MFTPAgent::dtu_size, MFTPAgent::dtus_per_block, MFTPAgent::dtus_per_group, MFTPAgent::dtuSize_, MFTPAgent::dtusPerBlock_, MFTPAgent::dtusPerGroup_, MFTPAgent::FileDGrams, MFTPAgent::FileSize, MFTPAgent::fileSize_, MFTPAgent::nb_groups, and MFTPAgent::seekCount_.

Referenced by command(), and MFTPRcvAgent::init().

00042 {
00043     if(dtusPerBlock_ % 8 != 0) {
00044         Tcl& tcl = Tcl::instance();
00045         tcl.resultf("%s: dtusPerBlock_ must be a multiple of 8", name_);
00046         return TCL_ERROR;
00047     }
00048     dtu_size = dtuSize_;
00049     FileSize = fileSize_;
00050     dtus_per_block = dtusPerBlock_;
00051     dtus_per_group = dtusPerGroup_;
00052     seekCount_ = 0;
00053 
00054     FileDGrams = (FileSize + dtu_size - 1) / dtu_size;
00055     nb_groups = (FileDGrams + dtus_per_group - 1) / dtus_per_group;
00056 
00057     return TCL_OK;
00058 }

void MFTPSndAgent::init_user_file unsigned long  readAheadBufsize  )  [protected]
 

Definition at line 234 of file mftp_snd.cc.

References CurrentGroup, CurrentPass, CwPat, MFTPAgent::dtus_per_group, fseek_offset, Codeword::getNextCwPat(), iterator, MinGroupNbInBuf, naks, MFTPAgent::nb_groups, NbGroupsInBuf, read_ahead_bufsize, RESET_ALL_BITS(), retx, SET_ALL_BITS(), and Codeword::setSourceWordLen().

Referenced by command().

00235 {
00236     read_ahead_bufsize = readAheadBufsize;
00237     fseek_offset = 0;
00238 
00239     // initialize codeword pattern
00240     iterator.setSourceWordLen(dtus_per_group);
00241     CwPat = iterator.getNextCwPat();
00242     // free arrays from a possible previous transmission (no effect on NULL pointers)
00243     delete [] naks;
00244     delete [] retx;
00245 
00246     // allocate naks bitmap init'd to all nak'd:
00247     naks = new unsigned char[(nb_groups + 7) / 8];
00248     assert(naks != NULL);           // or else we ran out of memory
00249     SET_ALL_BITS(naks, nb_groups);
00250 
00251     // allocate retransmission bitmap init'd to none retransmitted:
00252     retx = new unsigned char[(nb_groups + 7) / 8];
00253     assert(retx != NULL);           // or else we ran out of memory
00254     RESET_ALL_BITS(retx, nb_groups);
00255 
00256     CurrentPass = CurrentGroup = MinGroupNbInBuf = NbGroupsInBuf = 0;
00257 }

Here is the call graph for this function:

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

Definition at line 446 of file agent.cc.

References hdr_nv::access(), hdr_flags::access(), hdr_ip::access(), hdr_cmn::access(), ns_addr_t::addr_, Scheduler::clock(), hdr_flags::cong_action_, hdr_ip::daddr(), Agent::defttl_, hdr_cmn::direction(), hdr_ip::dport(), Agent::dst_, hdr_flags::ecn_, hdr_flags::ecn_capable_, hdr_flags::ecn_to_echo_, hdr_flags::eln_, hdr_cmn::error(), Agent::fid_, hdr_ip::flowid(), hdr_flags::fs_, NixNode::GetNixVector(), NixNode::GetNodeObject(), hdr_nv::h_used, Agent::here_, hdr_cmn::iface(), Scheduler::instance(), hdr_flags::no_ts_, hdr_cmn::NONE, hdr_nv::nv(), hdr_ip::offset(), hdr_nv::offset(), ns_addr_t::port_, hdr_flags::pri_, hdr_ip::prio(), Agent::prio_, hdr_cmn::ptype(), NixVec::Reset(), hdr_ip::saddr(), hdr_cmn::size(), Agent::size_, hdr_ip::sport(), hdr_cmn::timestamp(), hdr_ip::ttl(), Agent::type_, hdr_cmn::uid(), and Agent::uidcnt_.

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

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

Here is the call graph for this function:

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

Definition at line 250 of file agent.cc.

References min, OldValue::next_, Agent::oldValueList_, TRACEVAR_MAXVALUELENGTH, OldValue::val_, and OldValue::var_.

Referenced by Agent::trace().

00251 {
00252         OldValue *p = new OldValue;
00253         assert(p != NULL);
00254         strncpy(p->val_, value, min(strlen(value)+1, TRACEVAR_MAXVALUELENGTH));
00255         p->var_ = v;
00256         p->next_ = NULL;
00257         if (oldValueList_ == NULL) 
00258                 oldValueList_ = p;
00259         else {
00260                 p->next_ = oldValueList_;
00261                 oldValueList_ = p;
00262         }
00263 }

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

Definition at line 61 of file object.h.

References NsObject::debug_.

00061 { return debug_; }

void Agent::listen  )  [virtual, inherited]
 

Reimplemented in BayFullTcpAgent, RapAgent, and FullTcpAgent.

Definition at line 381 of file agent.cc.

Referenced by Agent::command().

00382 {
00383 }

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

Definition at line 242 of file agent.cc.

References OldValue::next_, Agent::oldValueList_, and OldValue::var_.

Referenced by Agent::trace().

00243 {
00244         OldValue *p = oldValueList_;
00245         while ((p != NULL) && (p->var_ != v))
00246                 p = p->next_;
00247         return p;
00248 }

void Agent::monitorAgentTrace  )  [protected, inherited]
 

Definition at line 310 of file agent.cc.

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

Referenced by Agent::command().

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

Here is the call graph for this function:

unsigned long MFTPAgent::nb_blocks  )  const [inline, protected, inherited]
 

Definition at line 99 of file mftp.h.

References MFTPAgent::dtus_per_block, and MFTPAgent::nb_groups.

Referenced by send_data(), and MFTPRcvAgent::send_nak().

00100 {
00101     return (nb_groups+dtus_per_block-1)/dtus_per_block;
00102 }

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 MFTPSndAgent::process_nak hdr_mftp::Spec::Nak nak,
unsigned char *  nak_bitmap,
unsigned long  currentPass
[protected]
 

Definition at line 172 of file mftp_snd.cc.

References hdr_mftp::Spec::Nak::block_nb, MFTPAgent::dtus_per_block, min, hdr_mftp::Spec::Nak::nak_count, nakCount_, naks, MFTPAgent::nb_groups, hdr_mftp::Spec::Nak::pass_nb, and retx.

Referenced by recv().

00175 {
00176     assert(1 <= nak.nak_count && nak.nak_count <= nb_groups); // or else some receiver is fooling us.
00177     assert(nak.pass_nb <= currentPass);  // pass greater than requested? => a receiver is fooling us.
00178 
00179     Tcl& tcl = Tcl::instance();
00180     tcl.evalf("%s recv nak %lu %lu %lu", name_,
00181               (unsigned long) nak.pass_nb,
00182               (unsigned long) nak.block_nb,
00183               (unsigned long) nak.nak_count);
00184 
00185     assert(dtus_per_block % 8 == 0);         // This property is required for the following
00186 
00187     // start_group_nb corresponds to first bit of NAK-bitmap:
00188     const unsigned long start_group_nb = dtus_per_block * nak.block_nb;
00189 
00190     // end_group_nb corresponds to last group number of NAK-bitmap plus one
00191     const unsigned long end_group_nb = min(nb_groups, dtus_per_block * (nak.block_nb + 1));
00192 
00193     // get starting index into naks-array for this block
00194     const unsigned long nak_index = start_group_nb / 8;
00195 
00196     // number of status bytes in pdu
00197     const unsigned long nak_bytes = (end_group_nb - start_group_nb + 7) / 8;
00198 
00199     // pointer to location in array at which the received nak bitmap must be
00200     // or'd to the sender-bitmap (the bitmap in which the sender collects the naks)
00201     unsigned char* nak_array = naks + nak_index;
00202 
00203     // if this nak pdu is from a previous pass (i.e. a delayed nak), ignore the status
00204     // bits for dtu's that we've just retransmitted in the current pass:
00205     if(nak.pass_nb < currentPass) {
00206         unsigned char* retx_array = retx + nak_index;
00207         for(unsigned long i = 0; i < nak_bytes; i++) {
00208             if(*nak_bitmap) {
00209                 // "AND out" bits for already transmitted packets and
00210                 // "OR in" the result into newly constructed NAK bitmap
00211                 *nak_array |= (*nak_bitmap & (~*retx_array));
00212             }            
00213             nak_array++;
00214             retx_array++;
00215             nak_bitmap++;
00216         }
00217     }
00218     else {
00219         assert(nak.pass_nb == currentPass); // this nak belongs to the current pass
00220         for(unsigned long i = 0; i < nak_bytes; i++) {
00221             if(*nak_bitmap) {
00222                 // "OR in" NAK byte into newly constructed NAK bitmap
00223                 *nak_array |= *nak_bitmap;
00224             }
00225             nak_array++;
00226             nak_bitmap++;
00227         }
00228     }
00229     nakCount_++;    // increment total number of received nak-packets
00230 }

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

Reimplemented from Agent.

Definition at line 122 of file mftp_snd.cc.

References hdr_mftp::access(), hdr_ip::access(), Packet::accessdata(), CurrentPass, hdr_ip::daddr(), Packet::free(), hdr_mftp::Spec::nak, hdr_mftp::PDU_DATA_TRANSFER, hdr_mftp::PDU_NAK, hdr_mftp::PDU_STATUS_REQUEST, process_nak(), hdr_mftp::spec, and hdr_mftp::type.

00123 {
00124     hdr_ip* ih = hdr_ip::access(p);
00125     hdr_mftp* mh = hdr_mftp::access(p);
00126 
00127     if(ih->daddr() == 0) {
00128         assert(false);        // Packet from local agent.
00129     } else {
00130         switch(mh->type) {
00131         case hdr_mftp::PDU_DATA_TRANSFER:
00132         case hdr_mftp::PDU_STATUS_REQUEST:
00133             // as the sender is a member of the multicast group as well,
00134             // it receives all data it has sent. So just ignore it.
00135             break;
00136         case hdr_mftp::PDU_NAK:
00137             process_nak(mh->spec.nak, p->accessdata(), CurrentPass-1); // -1 because we have
00138             // incremented the pass-number already in send_data.
00139             break;
00140         default:
00141             assert(false);  // unknown packet type (also possible: just ignore packet rather than exit)
00142         }
00143         Packet::free(p);
00144     }
00145 }

Here is the call graph for this function:

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

Definition at line 354 of file agent.cc.

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

Referenced by DelAckSink::recv(), TcpSink::recv(), QSTcpSink::recv(), FullTcpAgent::recv(), and TcpAsymSink::recv().

00355 {
00356         if (app_)
00357                 app_->recv(nbytes);     
00358 }

Here is the call graph for this function:

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

Reimplemented from NsObject.

Definition at line 78 of file agent.h.

00078 {};

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

Reimplemented in BayFullTcpAgent, HashClassifier, IvsSource, dsREDQueue, DiffusionRate, SinkAgent, DiffusionAgent, FloodingAgent, OmniMcastAgent, LinkDelay, CBQueue, DropTail, ErrorModel, PIQueue, Queue< T >, RedPDQueue, REDQueue, REMQueue, RIOQueue, Snoop, FackTcpAgent, FullTcpAgent, SackFullTcpAgent, RFC793eduTcpAgent, Sack1TcpAgent, TcpSink, DelAckSink, TcpAgent, VegasTcpAgent, toraAgent, and Queue< T >.

Definition at line 70 of file object.cc.

Referenced by NsObject::command().

00071 {
00072 }

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

Reimplemented in SRMAgent.

Definition at line 89 of file agent.h.

References Agent::sendmsg().

00089 { sendmsg(nbytes); }

Here is the call graph for this function:

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

Reimplemented in HttpInvalAgent.

Definition at line 84 of file agent.h.

References Agent::sendmsg().

00084 { sendmsg(sz, data, 0); }

Here is the call graph for this function:

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

Reimplemented from Connector.

Definition at line 80 of file agent.h.

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

Referenced by TcpSink::ack(), QSTcpSink::ack(), SinkAgent::bcast_interest(), PingAgent::command(), MessageAgent::command(), mcastControlAgent::command(), LmsAgent::command(), 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(), RapAgent::SendAck(), SimpleTcpAgent::sendmsg(), PushbackAgent::sendMsg(), FullTcpAgent::sendpacket(), BayFullTcpAgent::sendpacket(), RapAgent::SendPacket(), TfrcAgent::sendpkt(), TfrcSinkAgent::sendpkt(), SinkAgent::sendpkt(), IcmpAgent::sendredirect(), and AbsDelAckSink::timeout().

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

Here is the call graph for this function:

int MFTPSndAgent::send_data  )  [protected]
 

Definition at line 342 of file mftp_snd.cc.

References hdr_cmn::access(), hdr_mftp::access(), Agent::allocpkt(), CurrentGroup, CurrentPass, hdr_mftp::Spec::Data::cw_pat, CwPat, hdr_mftp::Spec::data, MFTPAgent::dtu_size, MFTPAgent::dtus_per_group, fill_read_ahead_buf(), MFTPAgent::get_dtus_per_group(), Codeword::getNextCwPat(), hdr_mftp::Spec::Data::group_nb, IS_BIT_CLEARED, iterator, MinGroupNbInBuf, naks, MFTPAgent::nb_blocks(), MFTPAgent::nb_groups, NbGroupsInBuf, hdr_mftp::Spec::Data::pass_nb, hdr_mftp::PDU_DATA_TRANSFER, ExtraLongUInt::print(), NsObject::recv(), RESET_ALL_BITS(), RESET_BIT, retx, SET_ALL_BITS(), SET_BIT, hdr_cmn::size(), hdr_mftp::spec, Connector::target_, and hdr_mftp::type.

Referenced by command().

00343 {
00344     Packet* p = Agent::allocpkt();
00345     hdr_mftp* hdr = hdr_mftp::access(p);
00346     CW_PATTERN_t mask;
00347     Tcl& tcl = Tcl::instance();
00348 
00349     assert(0 <= CurrentGroup && CurrentGroup < nb_groups);
00350     assert(NbGroupsInBuf >= 0);
00351     assert(0 <= MinGroupNbInBuf && MinGroupNbInBuf + NbGroupsInBuf <= nb_groups);
00352 
00353     // now comes NACK processing: loop until end of file or until
00354     // a nak bit is detected:
00355     while(CurrentGroup < nb_groups && IS_BIT_CLEARED(naks, CurrentGroup)) {
00356         CurrentGroup++;         // proceed to next bit of the nak bitmap
00357     }
00358 
00359     // do not transmit packet if
00360     // (1) CurrentGroup has reached the total number of groups ("end of pass") or
00361     // (2) CwPat has only bits set that refer to some packets that are cut off in
00362     //     the current group (for example, if CurrentGroup has only 5 packets
00363     //     with nb_groups=8 and if CwPat=64+32)
00364     if(CurrentGroup != nb_groups &&
00365        ((mask = (~(CW_PATTERN_t) 0) >> (8 * sizeof(CW_PATTERN_t) - get_dtus_per_group(CurrentGroup)))
00366         & CwPat) != 0) {
00367         assert(CurrentGroup < nb_groups);
00368 
00369         // see if the read-ahead-buffer is exhausted so that we must load new data
00370         // from file. Only groups with a corresponding NAK-bit are read, that is,
00371         // those that were requested for retransmission
00372         assert(MinGroupNbInBuf <= CurrentGroup);
00373         if(CurrentGroup >= MinGroupNbInBuf + NbGroupsInBuf) { // exhausted?
00374             fill_read_ahead_buf();               // load new data from file
00375         }
00376         assert(MinGroupNbInBuf <= CurrentGroup &&
00377                CurrentGroup < MinGroupNbInBuf + NbGroupsInBuf);
00378 
00379         // produce an encoded packet here (omitted)
00380 
00381         // generate the header
00382         hdr->type = hdr_mftp::PDU_DATA_TRANSFER;
00383         hdr->spec.data.pass_nb  = CurrentPass;
00384         hdr->spec.data.group_nb = CurrentGroup;
00385         hdr->spec.data.cw_pat   = CwPat & mask;
00386 
00387         char buf[8 * sizeof(CW_PATTERN_t) + 1];
00388         (CwPat & mask).print(buf);
00389         tcl.evalf("%s send notify %lu %lu %s",
00390                   name_,
00391                   (unsigned long) CurrentPass,
00392                   (unsigned long) CurrentGroup,
00393                   (char*) buf);
00394 
00395         hdr_cmn* ch = hdr_cmn::access(p);
00396         ch->size() = sizeof(hdr_mftp) + dtu_size;
00397 
00398         // transmit packet
00399         target_->recv(p);
00400 
00401         RESET_BIT(naks, CurrentGroup); // reset the dtu status bit in the nak bitmap
00402         SET_BIT(retx, CurrentGroup);   // set the dtus status bit in the retransmission bitmap
00403 
00404         CurrentGroup++;
00405     } // if
00406 
00407     // if last group of the file:
00408     if(CurrentGroup == nb_groups || !(CwPat & mask)) { // end of pass?
00409         do {
00410             CwPat = iterator.getNextCwPat(); // get next codeword for new pass
00411         } while(!(CwPat & ((~(CW_PATTERN_t) 0) >> (8 * sizeof(CW_PATTERN_t) - get_dtus_per_group(0)))));
00412         //        } while(!(CwPat & ((((CW_PATTERN_t) 1) << get_dtus_per_group(0)) - 1)));
00413 
00414         // prepare a new pas:
00415         MinGroupNbInBuf = 0;
00416         NbGroupsInBuf = 0;
00417         CurrentGroup = 0;
00418 
00419         // reset retransmission bitmap for dealing with of latent naks
00420         RESET_ALL_BITS(retx, nb_groups);
00421 
00422         // the first dtus_per_group passes must be transmitted "in full"
00423         if(CurrentPass < dtus_per_group - 1) {
00424             SET_ALL_BITS(naks, nb_groups);
00425         }
00426         tcl.evalf("%s pass-finished %lu %lu", name_,
00427                   (unsigned long) CurrentPass,
00428                   (unsigned long) nb_blocks());
00429         CurrentPass++;
00430         tcl.result("-1");  // return end-of-pass to the caller
00431 
00432         return TCL_OK;
00433     }
00434     tcl.result("0");       // end-of-pass not yet reached
00435     return TCL_OK;
00436 }

Here is the call graph for this function:

void MFTPSndAgent::send_status_request unsigned long  pass_nb,
unsigned long  block_lo,
unsigned long  block_hi,
double  txStatusDelay
[protected]
 

Definition at line 147 of file mftp_snd.cc.

References hdr_cmn::access(), hdr_mftp::access(), Agent::allocpkt(), hdr_mftp::Spec::StatReq::block_hi, hdr_mftp::Spec::StatReq::block_lo, MFTPAgent::FileDGrams, hdr_mftp::Spec::StatReq::pass_nb, hdr_mftp::PDU_STATUS_REQUEST, NsObject::recv(), hdr_mftp::Spec::StatReq::RspBackoffWindow, hdr_cmn::size(), hdr_mftp::spec, hdr_mftp::Spec::statReq, Connector::target_, and hdr_mftp::type.

Referenced by command().

00151 {
00152     Packet* p = Agent::allocpkt();
00153     hdr_mftp* hdr = hdr_mftp::access(p);
00154 
00155     assert(FileDGrams > 0);                    // we need this requirement here
00156 
00157     // initialize the header of the status request packet:
00158     hdr->type = hdr_mftp::PDU_STATUS_REQUEST;
00159     hdr->spec.statReq.pass_nb  = pass_nb;
00160     hdr->spec.statReq.block_lo = block_lo;
00161     hdr->spec.statReq.block_hi = block_hi;
00162     hdr->spec.statReq.RspBackoffWindow = rsp_backoff_window;
00163 
00164     // transmit packet
00165     hdr_cmn* ch = hdr_cmn::access(p);
00166     ch->size() = sizeof(hdr_mftp);
00167     target_->recv(p);
00168 }

Here is the call graph for this function:

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

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

Definition at line 415 of file agent.cc.

00416 {
00417 }

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

Reimplemented in UdpAgent.

Definition at line 400 of file agent.cc.

References abort().

Referenced by Agent::command(), Application::send(), Agent::send(), TrafficTrace::timeout(), TelnetApp::timeout(), EXPOO_Traffic::timeout(), and CBR_PP_Traffic::timeout().

00401 {
00402         fprintf(stderr, 
00403         "Agent::sendmsg(int, AppData*, const char*) not implemented\n");
00404         abort();
00405 }

Here is the call graph for this function:

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

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

Definition at line 407 of file agent.cc.

References abort().

Referenced by Agent::command().

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

Here is the call graph for this function:

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

Definition at line 100 of file agent.h.

References Agent::type_.

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

00100 { type_ = pkttype; }

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

Reimplemented in FullTcpAgent.

Definition at line 95 of file agent.h.

References Agent::size_.

Referenced by rtProtoDV::command(), RLM_Sender::command(), imepAgent::getResponseListSize(), LandmarkAgent::makeUpdate(), Agent::recv(), SSMSRMAgent::send_glb_sess(), SSMSRMAgent::send_loc_sess(), SSMSRMAgent::send_rep_sess(), SRMAgent::send_sess(), and TelnetApp::timeout().

00095 { return size_; }

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

Definition at line 48 of file connector.h.

References Connector::target_.

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

00048 { return target_; }

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

Reimplemented in SA_Agent, RTPAgent, FtpClientAgent, BayFullTcpAgent, SinkAgent, RLM_Sender, MIPBSAgent, MIPMHAgent, RapAgent, RTCPAgent, TcpAsymSink, FackTcpAgent, FullTcpAgent, QSNewRenoTcpAgent, RBPVegasTcpAgent, RBPRenoTcpAgent, SackRHTcpAgent, Sack1TcpAgent, TcpSessionAgent, DelAckSink, TcpAgent, RenoTcpAgent, VegasTcpAgent, and SimpleTcpAgent.

Definition at line 347 of file agent.cc.

Referenced by SimpleTimer::expire().

00348 {
00349 }

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

Reimplemented in TcpAgent.

Definition at line 266 of file agent.cc.

References ns_addr_t::addr_, Agent::channel_, Agent::dst_, Agent::here_, Agent::insertOldValue(), Scheduler::instance(), Agent::lookupOldValue(), min, TIME_FORMAT, Agent::traceName_, TRACEVAR_MAXVALUELENGTH, and OldValue::val_.

Referenced by TcpAgent::trace().

00267 {
00268         if (channel_ == 0)
00269                 return;
00270         char wrk[256], value[128];
00271         int n;
00272 
00273         // XXX we need to keep track of old values. What's the best way?
00274         v->value(value, 128);
00275 
00276         // XXX hack: how do I know ns has not started yet?
00277         // if there's nothing in value, return
00278         static int started = 0;
00279         if (!started) {
00280                 Tcl::instance().evalc("[Simulator instance] is-started");
00281                 if (Tcl::instance().result()[0] == '0')
00282                         // Simulator not started, do nothing
00283                         return;
00284                 // remember for next time (so we don't always have to call to tcl)
00285                 started = 1;
00286         };
00287 
00288         OldValue *ov = lookupOldValue(v);
00289         if (ov != NULL) {
00290                 sprintf(wrk, 
00291                         "f -t "TIME_FORMAT" -s %d -d %d -n %s -a %s -v %s -o %s -T v",
00292                         Scheduler::instance().clock(), here_.addr_,
00293                         dst_.addr_, v->name(), traceName_, value, ov->val_);
00294                 strncpy(ov->val_, 
00295                         value,
00296                         min(strlen(value)+1, TRACEVAR_MAXVALUELENGTH));
00297         } else {
00298                 // if there is value, insert it into old value list
00299                 sprintf(wrk, "f -t "TIME_FORMAT" -s %d -d %d -n %s -a %s -v %s -T v",
00300                         Scheduler::instance().clock(), here_.addr_,
00301                         dst_.addr_, v->name(), traceName_, value);
00302                 insertOldValue(v, value);
00303         }
00304         n = strlen(wrk);
00305         wrk[n] = '\n';
00306         wrk[n+1] = 0;
00307         (void)Tcl_Write(channel_, wrk, n+1);
00308 }

Here is the call graph for this function:

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

Reimplemented in TcpAgent.

Definition at line 146 of file agent.h.

00146 {}


Member Data Documentation

Application* Agent::app_ [protected, inherited]
 

Reimplemented in BayFullTcpAgent.

Definition at line 134 of file agent.h.

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

Tcl_Channel Agent::channel_ [protected, inherited]
 

Definition at line 130 of file agent.h.

Referenced by Agent::addAgentTrace(), Agent::command(), Agent::flushAVar(), Agent::monitorAgentTrace(), TcpAsymSink::recv(), Agent::trace(), TcpAgent::traceAll(), TcpAsymAgent::traceAll(), TcpAgent::traceVar(), TcpSessionAgent::traceVar(), and TcpAsymAgent::traceVar().

unsigned long MFTPSndAgent::CurrentGroup [protected]
 

Definition at line 68 of file mftp_snd.h.

Referenced by fill_read_ahead_buf(), init_user_file(), and send_data().

unsigned long MFTPSndAgent::CurrentPass [protected]
 

Definition at line 67 of file mftp_snd.h.

Referenced by init_user_file(), recv(), and send_data().

CW_PATTERN_t MFTPSndAgent::CwPat [protected]
 

Definition at line 69 of file mftp_snd.h.

Referenced by fill_read_ahead_buf(), init_user_file(), and send_data().

int NsObject::debug_ [protected, inherited]
 

Reimplemented in FECModel, FloodAgent, and LandmarkAgent.

Definition at line 66 of file object.h.

Referenced by REDQueue::command(), RedPDQueue::command(), PushbackQueue::command(), NsObject::debug(), NsObject::delay_bind_dispatch(), RedPDQueue::enque(), PushbackQueue::enque(), NsObject::isdebug(), NsObject::NsObject(), TfrcAgent::recv(), PushbackQueue::reportDrop(), and REDQueue::reset().

int Agent::defttl_ [protected, inherited]
 

Definition at line 121 of file agent.h.

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

NsObject* Connector::drop_ [protected, inherited]
 

Definition at line 57 of file connector.h.

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

ns_addr_t Agent::dst_ [protected, inherited]
 

Reimplemented in AckRecons.

Definition at line 115 of file agent.h.

Referenced by Agent::addAgentTrace(), Agent::daddr(), Agent::delay_bind_dispatch(), Agent::deleteAgentTrace(), Agent::dport(), DSRProto::DSRProto(), Agent::flushAVar(), Agent::initpkt(), SRMAgent::recv(), SSMSRMAgent::recv(), NatAgent::recv(), SRMAgent::sendmsg(), PushbackAgent::sendMsg(), and Agent::trace().

unsigned long MFTPAgent::dtu_size [protected, inherited]
 

Definition at line 90 of file mftp.h.

Referenced by fill_read_ahead_buf(), MFTPRcvAgent::findStoreLocation(), MFTPAgent::init(), MFTPRcvAgent::recv_data(), and send_data().

unsigned long MFTPAgent::dtus_per_block [protected, inherited]
 

Definition at line 91 of file mftp.h.

Referenced by MFTPAgent::init(), MFTPAgent::nb_blocks(), process_nak(), and MFTPRcvAgent::send_nak().

unsigned long MFTPAgent::dtus_per_group [protected, inherited]
 

Definition at line 92 of file mftp.h.

Referenced by fill_read_ahead_buf(), MFTPAgent::get_dtus_per_group(), MFTPAgent::init(), init_user_file(), and send_data().

int MFTPAgent::dtuSize_ [protected, inherited]
 

Definition at line 81 of file mftp.h.

Referenced by MFTPAgent::init(), and MFTPAgent::MFTPAgent().

int MFTPAgent::dtusPerBlock_ [protected, inherited]
 

Definition at line 83 of file mftp.h.

Referenced by MFTPRcvAgent::command(), MFTPAgent::init(), and MFTPAgent::MFTPAgent().

int MFTPAgent::dtusPerGroup_ [protected, inherited]
 

Definition at line 84 of file mftp.h.

Referenced by MFTPAgent::init(), and MFTPAgent::MFTPAgent().

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

unsigned long MFTPAgent::FileDGrams [protected, inherited]
 

Definition at line 89 of file mftp.h.

Referenced by MFTPRcvAgent::cw_matrixlines_reset(), MFTPRcvAgent::findStoreLocation(), MFTPAgent::get_dtus_per_group(), MFTPRcvAgent::init(), MFTPAgent::init(), MFTPRcvAgent::recv_data(), MFTPRcvAgent::send_nak(), and send_status_request().

unsigned long MFTPAgent::FileSize [protected, inherited]
 

Definition at line 88 of file mftp.h.

Referenced by fill_read_ahead_buf(), MFTPRcvAgent::findStoreLocation(), and MFTPAgent::init().

int MFTPAgent::fileSize_ [protected, inherited]
 

Definition at line 82 of file mftp.h.

Referenced by MFTPAgent::init(), and MFTPAgent::MFTPAgent().

int Agent::flags_ [protected, inherited]
 

Reimplemented in BayFullTcpAgent, RapAgent, and FullTcpAgent.

Definition at line 120 of file agent.h.

Referenced by Agent::delay_bind_dispatch().

unsigned long MFTPSndAgent::fseek_offset [protected]
 

Definition at line 64 of file mftp_snd.h.

Referenced by fill_read_ahead_buf(), and init_user_file().

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

Codeword MFTPSndAgent::iterator [protected]
 

Definition at line 74 of file mftp_snd.h.

Referenced by init_user_file(), and send_data().

unsigned long MFTPSndAgent::MinGroupNbInBuf [protected]
 

Definition at line 70 of file mftp_snd.h.

Referenced by fill_read_ahead_buf(), init_user_file(), and send_data().

int MFTPSndAgent::nakCount_ [protected]
 

Definition at line 59 of file mftp_snd.h.

Referenced by MFTPSndAgent(), and process_nak().

unsigned char* MFTPSndAgent::naks [protected]
 

Definition at line 62 of file mftp_snd.h.

Referenced by fill_read_ahead_buf(), init_user_file(), process_nak(), send_data(), and ~MFTPSndAgent().

unsigned long MFTPAgent::nb_groups [protected, inherited]
 

Definition at line 93 of file mftp.h.

Referenced by fill_read_ahead_buf(), MFTPRcvAgent::findStoreLocation(), MFTPAgent::get_dtus_per_group(), MFTPAgent::init(), init_user_file(), MFTPRcvAgent::is_group_full(), MFTPAgent::nb_blocks(), process_nak(), MFTPRcvAgent::process_packet(), MFTPRcvAgent::recv_data(), send_data(), and MFTPRcvAgent::send_nak().

unsigned long MFTPSndAgent::NbGroupsInBuf [protected]
 

Definition at line 72 of file mftp_snd.h.

Referenced by fill_read_ahead_buf(), init_user_file(), and send_data().

OldValue* Agent::oldValueList_ [protected, inherited]
 

Definition at line 132 of file agent.h.

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

int Agent::prio_ [protected, inherited]
 

Definition at line 119 of file agent.h.

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

unsigned long MFTPSndAgent::read_ahead_bufsize [protected]
 

Definition at line 65 of file mftp_snd.h.

Referenced by fill_read_ahead_buf(), and init_user_file().

int MFTPSndAgent::readAheadBufsize_ [protected]
 

Definition at line 57 of file mftp_snd.h.

Referenced by command(), and MFTPSndAgent().

unsigned char* MFTPSndAgent::retx [protected]
 

Definition at line 63 of file mftp_snd.h.

Referenced by init_user_file(), process_nak(), send_data(), and ~MFTPSndAgent().

int MFTPAgent::seekCount_ [protected, inherited]
 

Definition at line 85 of file mftp.h.

Referenced by fill_read_ahead_buf(), MFTPAgent::init(), MFTPAgent::MFTPAgent(), and MFTPRcvAgent::recv_data().

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(), RapAgent::IpgTimeout(), IvsReceiver::IvsReceiver(), LmsAgent::LmsAgent(), LmsReceiver::LmsReceiver(), mcastControlAgent::mcastControlAgent(), MessageAgent::MessageAgent(), MIPBSAgent::MIPBSAgent(), MIPMHAgent::MIPMHAgent(), TfrcAgent::nextpkt(), IntTcpAgent::opencwnd(), PingAgent::PingAgent(), RapAgent::RapAgent(), TfrcAgent::recv(), TcpSessionAgent::recv(), NewRenoTcpAgent::recv(), TfrcAgent::reduce_rate_on_no_feedback(), RLM_Sender::RLM_Sender(), RTCPAgent::RTCPAgent(), RTPAgent::RTPAgent(), IntTcpAgent::rxmit_last(), LmsSender::send_lms_pkt(), TcpSessionAgent::send_much(), LmsReceiver::send_nak(), IntTcpAgent::send_one(), LmsReceiver::send_refresh(), UdpAgent::sendmsg(), TfrcAgent::sendmsg(), TcpAgent::sendmsg(), SRMAgent::sendmsg(), RTPAgent::sendmsg(), RapAgent::SendPacket(), TfrcAgent::sendpkt(), rtProtoDV::sendpkt(), SinkAgent::sendpkt(), SinkAgent::SinkAgent(), Agent::size(), TfrcAgent::slowstart(), TfrcAgent::start(), TfrcAgent::TfrcAgent(), TfrcSinkAgent::TfrcSinkAgent(), RTPAgent::timeout(), RTCPAgent::timeout(), and UdpAgent::UdpAgent().

NsObject* Connector::target_ [protected, inherited]
 

Definition at line 56 of file connector.h.

Referenced by SRAgent::command(), SA_Agent::command(), IvsReceiver::command(), MultiFieldFilter::command(), Filter::command(), Connector::command(), DiffusionAgent::DiffusionAgent(), DSRAgent::DSRAgent(), PromotionTimer::expire(), FloodingAgent::FloodingAgent(), toraAgent::forward(), AODV::forward(), LandmarkAgent::ForwardPacket(), DSDV_Agent::forwardPacket(), SensorQueryAgent::generate_query(), DSDVTriggerHandler::handle(), AckRecons::handle(), DSRAgent::handlePacketReceipt(), DSDV_Agent::helper_callback(), AODV::initialized(), DSDV_Agent::lost_link(), OmniMcastAgent::OmniMcastAgent(), LandmarkAgent::periodic_callback(), LandmarkAgent::ProcessHierUpdate(), TCPTapAgent::processpkt(), IPTapAgent::processpkt(), CMUPriQueue::prq_enqueue(), CMUPriQueue::prq_resume(), DequeTrace::recv(), Trace::recv(), TraceIpMac::recv(), TraceIp::recv(), TBF::recv(), SRMAgent::recv(), SSMSRMAgent::recv(), SatDequeTrace::recv(), SAack_Agent::recv(), Queue< T >::recv(), PingResponder::recv(), MIPEncapsulator::recv(), LmsAgent::recv(), HackLossyLink::recv(), GAFPartner::recv(), FQ::recv(), FloodAgent::recv(), ErrorModel::recv(), DynamicLink::recv(), DumbAgent::recv(), DSRAgent::recv(), DelayModel::recv(), LinkDelay::recv(), CtrMcastDecap::recv(), CtrMcastEncap::recv(), CMUTrace::recv(), PriQueue::recvHighPriority(), Trace::recvOnly(), TapAgent::recvpkt(), Queue< T >::resume(), LinkDelay::send(), Connector::send(), Agent::send(), MIPBSAgent::send_ads(), SRMAgent::send_ctrl(), SSMSRMAgent::send_ctrl(), 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(), 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().

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

double MFTPSndAgent::txStatusDelay_ [protected]
 

Definition at line 58 of file mftp_snd.h.

Referenced by MFTPSndAgent().

packet_t Agent::type_ [protected, inherited]
 

Definition at line 117 of file agent.h.

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

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

Definition at line 68 of file agent.cc.

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


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