#include <aodv_rqueue.h>
Inheritance diagram for aodv_rqueue:


Public Member Functions | |
| aodv_rqueue () | |
| void | recv (Packet *, Handler *) |
| void | enque (Packet *p) |
| int | command (int argc, const char *const *argv) |
| Packet * | deque (void) |
| Packet * | deque (nsaddr_t dst) |
| char | find (nsaddr_t dst) |
| NsObject * | target () |
| virtual void | drop (Packet *p) |
| virtual void | recv (Packet *p, const char *s) |
| virtual void | recvOnly (Packet *) |
| virtual void | delay_bind_init_all () |
| virtual int | delay_bind_dispatch (const char *varName, const char *localName, TclObject *tracer) |
| int | isdebug () const |
| virtual void | debug (const char *fmt,...) |
Protected Member Functions | |
| virtual void | drop (Packet *p, const char *s) |
| void | send (Packet *p, Handler *h) |
| virtual void | reset () |
| void | handle (Event *) |
Protected Attributes | |
| NsObject * | target_ |
| NsObject * | drop_ |
| int | debug_ |
Private Member Functions | |
| Packet * | remove_head () |
| void | purge (void) |
| void | findPacketWithDst (nsaddr_t dst, Packet *&p, Packet *&prev) |
| bool | findAgedPacket (Packet *&p, Packet *&prev) |
| void | verifyQueue (void) |
Private Attributes | |
| Packet * | head_ |
| Packet * | tail_ |
| int | len_ |
| int | limit_ |
| double | timeout_ |
|
|
Definition at line 45 of file aodv_rqueue.cc. References AODV_RTQ_MAX_LEN, AODV_RTQ_TIMEOUT, head_, len_, limit_, tail_, and timeout_.
00045 {
00046 head_ = tail_ = 0;
00047 len_ = 0;
00048 limit_ = AODV_RTQ_MAX_LEN;
00049 timeout_ = AODV_RTQ_TIMEOUT;
00050 }
|
|
||||||||||||
|
Reimplemented from Connector. Definition at line 60 of file aodv_rqueue.h. References Connector::command(). Referenced by AODV::command().
00061 { return Connector::command(argc, argv); }
|
Here is the call graph for this function:

|
||||||||||||
|
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 }
|
|
||||||||||||||||
|
Reimplemented in BayFullTcpAgent, Agent, MPLSAddressClassifier, LDPAgent, FullTcpAgent, SackFullTcpAgent, RFC793eduTcpAgent, TcpSink, TcpAgent, and VegasTcpAgent. Definition at line 63 of file object.cc. References NsObject::debug_. Referenced by MPLSAddressClassifier::delay_bind_dispatch(), and Agent::delay_bind_dispatch().
00064 {
00065 if (delay_bind_bool(varName, localName, "debug_", &debug_, tracer))
00066 return TCL_OK;
00067 return TclObject::delay_bind_dispatch(varName, localName, tracer);
00068 }
|
|
|
Reimplemented in BayFullTcpAgent, Agent, MPLSAddressClassifier, LDPAgent, FullTcpAgent, SackFullTcpAgent, RFC793eduTcpAgent, TcpSink, TcpAgent, and VegasTcpAgent. Definition at line 57 of file object.cc. Referenced by MPLSAddressClassifier::delay_bind_init_all(), and Agent::delay_bind_init_all().
00058 {
00059 delay_bind_init_one("debug_");
00060 }
|
|
|
Definition at line 109 of file aodv_rqueue.cc. References findPacketWithDst(), head_, len_, Packet::next_, purge(), remove_head(), tail_, and verifyQueue().
00109 {
00110 Packet *p, *prev;
00111
00112 /*
00113 * Purge any packets that have timed out.
00114 */
00115 purge();
00116
00117 findPacketWithDst(dst, p, prev);
00118 assert(p == 0 || (p == head_ && prev == 0) || (prev->next_ == p));
00119
00120 if(p == 0) return 0;
00121
00122 if (p == head_) {
00123 p = remove_head();
00124 }
00125 else if (p == tail_) {
00126 prev->next_ = 0;
00127 tail_ = prev;
00128 len_--;
00129 }
00130 else {
00131 prev->next_ = p->next_;
00132 len_--;
00133 }
00134
00135 #ifdef QDEBUG
00136 verifyQueue();
00137 #endif // QDEBUG
00138 return p;
00139
00140 }
|
Here is the call graph for this function:

|
|
Definition at line 91 of file aodv_rqueue.cc. References purge(), remove_head(), and verifyQueue(). Referenced by AODV::recvReply(), AODV::recvRequest(), AODV::rt_purge(), and AODV::sendRequest().
00091 {
00092 Packet *p;
00093
00094 /*
00095 * Purge any packets that have timed out.
00096 */
00097 purge();
00098
00099 p = remove_head();
00100 #ifdef QDEBUG
00101 verifyQueue();
00102 #endif // QDEBUG
00103 return p;
00104
00105 }
|
Here is the call graph for this function:

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

|
Here is the call graph for this function:

|
|
Definition at line 53 of file aodv_rqueue.cc. References CURRENT_TIME, Connector::drop(), DROP_RTR_QFULL, DROP_RTR_QTIMEOUT, HDR_CMN, head_, len_, limit_, Packet::next_, purge(), remove_head(), tail_, timeout_, and verifyQueue(). Referenced by AODV::local_rt_repair(), and AODV::rt_resolve().
00053 {
00054 struct hdr_cmn *ch = HDR_CMN(p);
00055
00056 /*
00057 * Purge any packets that have timed out.
00058 */
00059 purge();
00060
00061 p->next_ = 0;
00062 ch->ts_ = CURRENT_TIME + timeout_;
00063
00064 if (len_ == limit_) {
00065 Packet *p0 = remove_head(); // decrements len_
00066
00067 assert(p0);
00068 if(HDR_CMN(p0)->ts_ > CURRENT_TIME) {
00069 drop(p0, DROP_RTR_QFULL);
00070 }
00071 else {
00072 drop(p0, DROP_RTR_QTIMEOUT);
00073 }
00074 }
00075
00076 if(head_ == 0) {
00077 head_ = tail_ = p;
00078 }
00079 else {
00080 tail_->next_ = p;
00081 tail_ = p;
00082 }
00083 len_++;
00084 #ifdef QDEBUG
00085 verifyQueue();
00086 #endif // QDEBUG
00087 }
|
Here is the call graph for this function:

|
|
Definition at line 143 of file aodv_rqueue.cc. References findPacketWithDst(). Referenced by AODV::rt_purge().
00143 {
00144 Packet *p, *prev;
00145
00146 findPacketWithDst(dst, p, prev);
00147 if (0 == p)
00148 return 0;
00149 else
00150 return 1;
00151
00152 }
|
Here is the call graph for this function:

|
||||||||||||
|
Definition at line 222 of file aodv_rqueue.cc. References CURRENT_TIME, HDR_CMN, head_, and Packet::next_. Referenced by purge().
00222 {
00223
00224 p = prev = 0;
00225 for(p = head_; p; p = p->next_) {
00226 if(HDR_CMN(p)->ts_ < CURRENT_TIME) {
00227 return true;
00228 }
00229 prev = p;
00230 }
00231 return false;
00232 }
|
|
||||||||||||||||
|
Definition at line 179 of file aodv_rqueue.cc. References HDR_IP, head_, and Packet::next_. Referenced by deque(), and find().
|
|
|
Implements Handler. Reimplemented in LinkDelay, LL, AckRecons, and Snoop. Definition at line 91 of file object.cc. References NsObject::recv().
|
Here is the call graph for this function:

|
|
Definition at line 61 of file object.h. References NsObject::debug_.
00061 { return debug_; }
|
|
|
Definition at line 235 of file aodv_rqueue.cc. References findAgedPacket(), head_, len_, Packet::next_, remove_head(), tail_, and verifyQueue(). Referenced by deque(), and enque().
00235 {
00236 Packet *p, *prev;
00237
00238 while ( findAgedPacket(p, prev) ) {
00239 assert(p == 0 || (p == head_ && prev == 0) || (prev->next_ == p));
00240
00241 if(p == 0) return;
00242
00243 if (p == head_) {
00244 p = remove_head();
00245 }
00246 else if (p == tail_) {
00247 prev->next_ = 0;
00248 tail_ = prev;
00249 len_--;
00250 }
00251 else {
00252 prev->next_ = p->next_;
00253 len_--;
00254 }
00255 #ifdef QDEBUG
00256 verifyQueue();
00257 #endif // QDEBUG
00258
00259 p = prev = 0;
00260 }
00261
00262 }
|
Here is the call graph for this function:

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

|
||||||||||||
|
Reimplemented from Connector. Definition at line 56 of file aodv_rqueue.h. References abort().
00056 { abort(); }
|
Here is the call graph for this function:

|
|
Reimplemented in Agent, and Trace. Definition at line 56 of file object.h. Referenced by Trace::recvOnly().
00056 {};
|
|
|
Definition at line 162 of file aodv_rqueue.cc. References head_, len_, Packet::next_, and tail_. Referenced by deque(), enque(), and purge().
|
|
|
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 }
|
|
||||||||||||
|
Reimplemented in Agent, and LinkDelay. Definition at line 54 of file connector.h. References NsObject::recv(), and Connector::target_. Referenced by SessionTTLChecker::recv(), TTLChecker::recv(), DequeTrace::recv(), Trace::recv(), TraceIpMac::recv(), TraceIp::recv(), SatDequeTrace::recv(), SALink::recv(), SnoopQueueEDrop::recv(), SnoopQueueTagger::recv(), SnoopQueueDrop::recv(), SnoopQueueOut::recv(), SnoopQueueIn::recv(), PktCounter::recv(), NetworkInterface::recv(), MeasureMod::recv(), Filter::recv(), Connector::recv(), CMUTrace::recv(), CBQClass::recv(), and AddSR::recv().
|
Here is the call graph for this function:

|
|
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_; }
|
|
|
Definition at line 193 of file aodv_rqueue.cc. References head_, len_, Packet::next_, and tail_. Referenced by deque(), enque(), and purge().
|
|
|
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(). |
|
|
Definition at line 57 of file connector.h. Referenced by Connector::command(), Connector::drop(), and ErrorModel::recv(). |
|
|
Definition at line 84 of file aodv_rqueue.h. Referenced by aodv_rqueue(), deque(), enque(), findAgedPacket(), findPacketWithDst(), purge(), remove_head(), and verifyQueue(). |
|
|
Definition at line 87 of file aodv_rqueue.h. Referenced by aodv_rqueue(), deque(), enque(), purge(), remove_head(), and verifyQueue(). |
|
|
Definition at line 89 of file aodv_rqueue.h. Referenced by aodv_rqueue(), and enque(). |
|
|
Definition at line 85 of file aodv_rqueue.h. Referenced by aodv_rqueue(), deque(), enque(), purge(), remove_head(), and verifyQueue(). |
|
|
|
Definition at line 90 of file aodv_rqueue.h. Referenced by aodv_rqueue(), and enque(). |
1.3.3