Thank you Marco. It worked out great. Thanks alot. Ashish
On 10/15/07, Marco Wenzel <[EMAIL PROTECTED]> wrote: > > Hi Ashish, > > I made a patch for Click 1.5, it also works for 1.6 on my machine. I > attached it on this email. > > Regards, > Marco. > > Ashish Sharma schrieb: > > P.S. : Sorry for the repost, the subject matter is more relvant in this > > mail. > > > > Hi Bart, > >> I tried compiling the AODV code at http://www.pats.ua.ac.be/software/aodv< > http://www.pats.ua.ac.be/software/aodv>by putting it > in elements/local/aodv directory and received some errors > >> like : > >> > >> ../elements/local/aodv/aodv_destinationclassifier.cc: In constructor > >> 'AODVDestinationClassifier::AODVDestinationClassifier()': > >> ../elements/local/aodv/aodv_destinationclassifier.cc:17: warning: > >> '__base_ctor ' is deprecated (declared at > ../include/click/element.hh:201) > >> ../elements/local/aodv/aodv_destinationclassifier.cc:20: error: > >> 'MOD_INC_USE_COUNT' was not declared in this scope > >> ../elements/local/aodv/aodv_destinationclassifier.cc: In destructor > >> 'virtual AODVDestinationClassifier::~AODVDestinationClassifier()': > >> ../elements/local/aodv/aodv_destinationclassifier.cc:26: error: > >> 'MOD_DEC_USE_COUNT' was not declared in this scope > >> > >> ../elements/local/aodv/aodv_generatererr.cc: In constructor > >> 'AODVGenerateRERR::AODVGenerateRERR()': > >> ../elements/local/aodv/aodv_generatererr.cc:20: warning: '__base_ctor ' > is > >> deprecated (declared at ../include/click/element.hh:201) > >> ../elements/local/aodv/aodv_generatererr.cc: In member function 'void > >> AODVGenerateRERR::generateRERR(bool, Vector<IPAddress>, Vector<unsigned > >> int>)': > >> ../elements/local/aodv/aodv_generatererr.cc:105: warning: 'id' is > >> deprecated (declared at ../include/click/element.hh:203) > >> ../elements/local/aodv/aodv_generatererr.cc:105: error: 'class String' > has > >> no member named 'cc' > >> ..... > >> > >> I looked at the changelog and saw Eddie's comments from way back in > 2005 > >> that MOD_DEC_USE_COUNT was deprecated and later removed because of > changes > >> in 2.6 > >> > >> Is there a newer version available with you. If not, I would gladly try > to > >> fix it, if you can direct me in the right direction. I am newbie in the > >> Click world :) > >> > >> Ashish > >> > >> On 10/11/07, Bart Braem <[EMAIL PROTECTED]> wrote: > >>> On Wednesday 10 October 2007 19:31:33 Eddie Kohler wrote: > >>>> Is there a link to that on the wiki? > >>> Not yet, you are right. Where should I add it? It's a bit like a > >>> package, but > >>> it's larger and it contains ns scripts... > > > -- > Marco Wenzel > ICQ 135863371 > www.der-wenz.de > > 'disce quasi semper victurus, vive quasi cras moriturus' (otep shamaya) > > diff -Naur old/aodv_destinationclassifier.cc > new/aodv_destinationclassifier.cc > --- old/aodv_destinationclassifier.cc 2005-03-02 16:03:12.000000000+0100 > +++ new/aodv_destinationclassifier.cc 2007-10-09 16:06:56.000000000+0200 > @@ -13,17 +13,19 @@ > #include "aodv_destinationclassifier.hh" > > CLICK_DECLS > -AODVDestinationClassifier::AODVDestinationClassifier(): > - Element(1,3) > +AODVDestinationClassifier::AODVDestinationClassifier() > { > - // CONSTRUCTOR MUST MOD_INC_USE_COUNT > + #ifdef MOD_INC_USE_COUNT > MOD_INC_USE_COUNT; > + #endif > } > > AODVDestinationClassifier::~AODVDestinationClassifier() > { > // DESTRUCTOR MUST MOD_DEC_USE_COUNT > + #ifdef MOD_DEC_USE_COUNT > MOD_DEC_USE_COUNT; > + #endif > } > > int > @@ -32,7 +34,7 @@ > Element* neighbour_table_element; > int res = cp_va_parse(conf, this, errh, cpElement, "AODVNeighbour > table", &neighbour_table_element, 0); > if(res < 0) return res; > - if (neighbour_table_element->class_name() != "AODVNeighbours"){ > + if (strcmp(neighbour_table_element->class_name(), > "AODVNeighbours") != 0){ > errh->error("Supplied element is not an AODVNeighbours > element but a %s",neighbour_table_element->class_name()); > return -1; > } > diff -Naur old/aodv_destinationclassifier.hh > new/aodv_destinationclassifier.hh > --- old/aodv_destinationclassifier.hh 2005-03-02 16:03:12.000000000+0100 > +++ new/aodv_destinationclassifier.hh 2007-10-09 16:06:56.000000000+0200 > @@ -22,6 +22,7 @@ > ~AODVDestinationClassifier(); > > const char *class_name() const { return > "AODVDestinationClassifier"; } > + const char *port_count() const {return "1/3"; } > const char *processing() const { return PUSH; } > AODVDestinationClassifier *clone() const { return > new AODVDestinationClassifier; } > > diff -Naur old/aodv_generatererr.cc new/aodv_generatererr.cc > --- old/aodv_generatererr.cc 2005-02-17 10:18:15.000000000 +0100 > +++ new/aodv_generatererr.cc 2007-10-09 16:06:56.000000000 +0200 > @@ -16,17 +16,18 @@ > #include "click_aodv.hh" > > CLICK_DECLS > -AODVGenerateRERR::AODVGenerateRERR(): > - Element(2,1) > +AODVGenerateRERR::AODVGenerateRERR() > { > - // CONSTRUCTOR MUST MOD_INC_USE_COUNT > + #ifdef MOD_INC_USE_COUNT > MOD_INC_USE_COUNT; > + #endif > } > > AODVGenerateRERR::~AODVGenerateRERR() > { > - // DESTRUCTOR MUST MOD_DEC_USE_COUNT > + #ifdef MOD_DEC_USE_COUNT > MOD_DEC_USE_COUNT; > + #endif > } > > int > @@ -35,7 +36,7 @@ > Element* neighbour_table_element; > int res = cp_va_parse(conf, this, errh, cpElement, "AODVNeighbour > table", &neighbour_table_element, 0); > if(res < 0) return res; > - if (neighbour_table_element->class_name() != "AODVNeighbours"){ > + if (strcmp(neighbour_table_element->class_name(), > "AODVNeighbours") != 0){ > errh->error("Supplied element is not an AODVNeighbours > element but a %s",neighbour_table_element->class_name()); > return -1; > } > @@ -102,7 +103,7 @@ > int packet_size = sizeof(aodv_rerr_header) + nrOfDestinations * 2 > * sizeof(uint32_t); > WritablePacket *packet = > Packet::make(aodv_headeroffset,0,packet_size, 0); // reserve no tailroom > if ( packet == 0 ){ > - click_chatter( "in %s: cannot make packet!", id().cc()); > + click_chatter( "in %s: cannot make packet!", > name().c_str()); > return; > } > memset(packet->data(), 0, packet->length()); > diff -Naur old/aodv_generatererr.hh new/aodv_generatererr.hh > --- old/aodv_generatererr.hh 2004-12-01 11:37:55.000000000 +0100 > +++ new/aodv_generatererr.hh 2007-10-09 16:06:56.000000000 +0200 > @@ -22,6 +22,7 @@ > ~AODVGenerateRERR(); > > const char *class_name() const { return > "AODVGenerateRERR"; } > + const char *port_count() const {return "2/1"; } > const char *processing() const { return PUSH; } > AODVGenerateRERR *clone() const { return new > AODVGenerateRERR; } > > diff -Naur old/aodv_generaterrep.cc new/aodv_generaterrep.cc > --- old/aodv_generaterrep.cc 2005-04-02 11:59:30.000000000 +0200 > +++ new/aodv_generaterrep.cc 2007-10-09 16:06:56.000000000 +0200 > @@ -17,17 +17,18 @@ > > CLICK_DECLS > AODVGenerateRREP::AODVGenerateRREP(): > - Element(1,1), > neighbour_table(0) > { > - // CONSTRUCTOR MUST MOD_INC_USE_COUNT > + #ifdef MOD_INC_USE_COUNT > MOD_INC_USE_COUNT; > + #endif > } > > AODVGenerateRREP::~AODVGenerateRREP() > { > - // DESTRUCTOR MUST MOD_DEC_USE_COUNT > + #ifdef MOD_DEC_USE_COUNT > MOD_DEC_USE_COUNT; > + #endif > } > > int > @@ -40,7 +41,7 @@ > cpElement, "AODVSetRREPHeaders", &setrrepheaders_element, > 0); > if(res < 0) return res; > - if (neighbour_table_element->class_name() != "AODVNeighbours"){ > + if (strcmp(neighbour_table_element->class_name(), > "AODVNeighbours") != 0){ > errh->error("Supplied element is not an AODVNeighbours > element but a %s",neighbour_table_element->class_name()); > return -1; > } > @@ -48,7 +49,7 @@ > errh->error("Supplied element is not a valid > AODVNeighbours element (cast failed)"); > return -1; > } > - if (setrrepheaders_element->class_name() != "AODVSetRREPHeaders"){ > + if (strcmp(setrrepheaders_element->class_name(), > "AODVSetRREPHeaders") != 0){ > errh->error("Supplied element is not an AODVSetRREPHeaders > element but a %s",setrrepheaders_element->class_name()); > return -1; > } > @@ -75,7 +76,7 @@ > WritablePacket *packet = > Packet::make(aodv_headeroffset,0,packet_size, tailroom); > > if ( packet == 0 ){ > - click_chatter( "in %s: cannot make packet!", id().cc()); > + click_chatter( "in %s: cannot make packet!", > name().c_str()); > return; > } > memset(packet->data(), 0, packet->length()); > diff -Naur old/aodv_generaterrep.hh new/aodv_generaterrep.hh > --- old/aodv_generaterrep.hh 2005-02-14 18:06:52.000000000 +0100 > +++ new/aodv_generaterrep.hh 2007-10-09 16:06:56.000000000 +0200 > @@ -22,6 +22,7 @@ > ~AODVGenerateRREP(); > > const char *class_name() const { return > "AODVGenerateRREP"; } > + const char *port_count() const { return "1/1"; } > const char *processing() const { return AGNOSTIC; } > AODVGenerateRREP *clone() const { return new > AODVGenerateRREP; } > > diff -Naur old/aodv_generaterreq.cc new/aodv_generaterreq.cc > --- old/aodv_generaterreq.cc 2005-03-08 09:50:02.000000000 +0100 > +++ new/aodv_generaterreq.cc 2007-10-09 16:06:56.000000000 +0200 > @@ -18,18 +18,19 @@ > > CLICK_DECLS > AODVGenerateRREQ::AODVGenerateRREQ(): > - Element(0,1), > neighbour_table(0), > rreqid(0) > { > - // CONSTRUCTOR MUST MOD_INC_USE_COUNT > + #ifdef MOD_INC_USE_COUNT > MOD_INC_USE_COUNT; > + #endif > } > > AODVGenerateRREQ::~AODVGenerateRREQ() > { > - // DESTRUCTOR MUST MOD_DEC_USE_COUNT > + #ifdef MOD_DEC_USE_COUNT > MOD_DEC_USE_COUNT; > + #endif > } > > int > @@ -41,7 +42,7 @@ > cpElement, "AODVNeighbour table", > &neighbour_table_element, > cpElement, "AODVKnownClassifier", > &known_classifier_element,0); > if(res < 0) return res; > - if (neighbour_table_element->class_name() != "AODVNeighbours"){ > + if (strcmp(neighbour_table_element->class_name(), > "AODVNeighbours") != 0){ > errh->error("Supplied element is not an AODVNeighbours > element but a %s",neighbour_table_element->class_name()); > return -1; > } > @@ -49,7 +50,7 @@ > errh->error("Supplied element is not a valid > AODVNeighbours element (cast failed)"); > return -1; > } > - if (known_classifier_element->class_name() != > "AODVKnownClassifier"){ > + if (strcmp(known_classifier_element->class_name(), > "AODVKnownClassifier") != 0){ > errh->error("Supplied element is not an > AODVKnownClassifier element but a > %s",neighbour_table_element->class_name()); > return -1; > } > @@ -71,7 +72,7 @@ > WritablePacket *packet = > Packet::make(aodv_headeroffset,0,packet_size, tailroom); > > if ( packet == 0 ){ > - click_chatter( "in %s: cannot make packet!", id().cc()); > + click_chatter( "in %s: cannot make packet!", > name().c_str()); > return; > } > memset(packet->data(), 0, packet->length()); > diff -Naur old/aodv_generaterreq.hh new/aodv_generaterreq.hh > --- old/aodv_generaterreq.hh 2005-03-08 09:50:02.000000000 +0100 > +++ new/aodv_generaterreq.hh 2007-10-09 16:06:56.000000000 +0200 > @@ -22,6 +22,7 @@ > ~AODVGenerateRREQ(); > > const char *class_name() const { return > "AODVGenerateRREQ"; } > + const char *port_count() const { return "0/1"; } > const char *processing() const { return PUSH; } > AODVGenerateRREQ *clone() const { return new > AODVGenerateRREQ; } > > diff -Naur old/aodv_hellogenerator.cc new/aodv_hellogenerator.cc > --- old/aodv_hellogenerator.cc 2005-03-16 08:48:49.000000000 +0100 > +++ new/aodv_hellogenerator.cc 2007-10-09 16:06:56.000000000 +0200 > @@ -11,6 +11,7 @@ > #include <clicknet/ip.h> > #include <clicknet/ether.h> > #include <clicknet/udp.h> > +#include <stdio.h> > > #include "aodv_hellogenerator.hh" > #include "aodv_broadcastheader.hh" > @@ -18,24 +19,25 @@ > > CLICK_DECLS > AODVHelloGenerator::AODVHelloGenerator(): > - Element(1,2), > timer(this) > { > - // CONSTRUCTOR MUST MOD_INC_USE_COUNT > + #ifdef MOD_INC_USE_COUNT > MOD_INC_USE_COUNT; > + #endif > } > > AODVHelloGenerator::~AODVHelloGenerator() > { > - // DESTRUCTOR MUST MOD_DEC_USE_COUNT > + #ifdef MOD_DEC_USE_COUNT > MOD_DEC_USE_COUNT; > + #endif > } > > int > AODVHelloGenerator::initialize(ErrorHandler *) > { > timer.initialize(this); > - timer.schedule_after_ms(AODV_HELLO_INTERVAL); > + timer.schedule_after_msec(AODV_HELLO_INTERVAL); > return 0; > } > > @@ -45,7 +47,7 @@ > Element * neighbour_table_element; > int res = cp_va_parse(conf, this, errh, cpElement, "AODVNeighbour > table", &neighbour_table_element, 0); > if(res < 0) return res; > - if (neighbour_table_element->class_name() != "AODVNeighbours"){ > + if (strcmp(neighbour_table_element->class_name(), > "AODVNeighbours") != 0) { > errh->error("Supplied element is not an AODVNeighbours > element but a %s",neighbour_table_element->class_name()); > return -1; > } > @@ -59,14 +61,14 @@ > return 0; > } > > -void AODVHelloGenerator::run_timer(){ > +void AODVHelloGenerator::run_timer(Timer *){ > // no tailroom needed, fixed size > int tailroom = 0; > int packet_size = sizeof(aodv_rrep_header); > WritablePacket *packet = > Packet::make(aodv_headeroffset,0,packet_size, tailroom); > > if ( packet == 0 ){ > - click_chatter( "in %s: cannot make packet!", id().cc()); > + click_chatter( "in %s: cannot make packet!", > name().c_str()); > return; > } > memset(packet->data(), 0, packet->length()); > @@ -81,14 +83,14 @@ > header->lifetime = htonl(AODV_ALLOWED_HELLO_LOSS * > AODV_HELLO_INTERVAL); > > > > output(0).push(AODVBroadcastHeader::setBroadcastHeader(packet,*myIP,1)); > - timer.schedule_after_ms(AODV_HELLO_INTERVAL); > + timer.schedule_after_msec(AODV_HELLO_INTERVAL); > } > > // RFC 6.9: "Every ... ms, the node checks whether is has sent a broadcast > (...) within the last ..." > // RREQs are pushed trough here, so every time a packet arrives reset > timer > void AODVHelloGenerator::push (int port, Packet * packet){ > assert(port == 0); > - timer.schedule_after_ms(AODV_HELLO_INTERVAL); > + timer.schedule_after_msec(AODV_HELLO_INTERVAL); > output(1).push(packet); > } > > diff -Naur old/aodv_hellogenerator.hh new/aodv_hellogenerator.hh > --- old/aodv_hellogenerator.hh 2005-02-14 18:06:52.000000000 +0100 > +++ new/aodv_hellogenerator.hh 2007-10-09 16:06:56.000000000 +0200 > @@ -22,6 +22,7 @@ > ~AODVHelloGenerator(); > > const char *class_name() const { return > "AODVHelloGenerator"; } > + const char *port_count() const { return "1/2"; } > const char *processing() const { return PUSH; } > AODVHelloGenerator *clone() const { return new > AODVHelloGenerator; } > > @@ -30,7 +31,7 @@ > > virtual void push (int, Packet *); > > - void run_timer(); > + void run_timer(Timer *); > > private: > Timer timer; > diff -Naur old/aodv_knownclassifier.cc new/aodv_knownclassifier.cc > --- old/aodv_knownclassifier.cc 2005-03-16 08:48:50.000000000 +0100 > +++ new/aodv_knownclassifier.cc 2007-10-09 16:06:56.000000000 +0200 > @@ -14,17 +14,18 @@ > #include "aodv_knownclassifier.hh" > > CLICK_DECLS > -AODVKnownClassifier::AODVKnownClassifier(): > - Element(1,2) > +AODVKnownClassifier::AODVKnownClassifier() > { > - // CONSTRUCTOR MUST MOD_INC_USE_COUNT > + #ifdef MOD_INC_USE_COUNT > MOD_INC_USE_COUNT; > + #endif > } > > AODVKnownClassifier::~AODVKnownClassifier() > { > - // DESTRUCTOR MUST MOD_DEC_USE_COUNT > + #ifdef MOD_DEC_USE_COUNT > MOD_DEC_USE_COUNT; > + #endif > } > > int > @@ -34,7 +35,7 @@ > int res = cp_va_parse(conf, this, errh, > cpElement, "AODVNeighbour table", > &neighbour_table_element, 0); > if(res < 0) return res; > - if (neighbour_table_element->class_name() != "AODVNeighbours"){ > + if (strcmp(neighbour_table_element->class_name(), > "AODVNeighbours") != 0){ > errh->error("Supplied element is not an AODVNeighbours > element but a %s",neighbour_table_element->class_name()); > return -1; > } > @@ -64,7 +65,7 @@ > // check RREQ buffer according to RFC 6.3 > if (RREQBuffer.find_pair(key)){ > packet->kill(); > - // click_chatter("discarded"); > + //click_chatter("discarded"); > return; > } > addKnownRREQ(key); // buffer for next time > @@ -131,7 +132,7 @@ > > Timer * timer = new > Timer(&AODVKnownClassifier::handleExpiry,timerdata); > timer->initialize(this); > - timer->schedule_after_ms(AODV_PATH_DISCOVERY_TIME); > + timer->schedule_after_msec(AODV_PATH_DISCOVERY_TIME); > > RREQBuffer.insert(key,timer); > } > diff -Naur old/aodv_knownclassifier.hh new/aodv_knownclassifier.hh > --- old/aodv_knownclassifier.hh 2005-02-14 18:06:52.000000000 +0100 > +++ new/aodv_knownclassifier.hh 2007-10-09 16:06:56.000000000 +0200 > @@ -26,6 +26,7 @@ > ~AODVKnownClassifier(); > > const char *class_name() const { return > "AODVKnownClassifier"; } > + const char *port_count() const { return "1/2"; } > const char *processing() const { return PUSH; } > AODVKnownClassifier *clone() const { return new > AODVKnownClassifier; } > > diff -Naur old/aodv_linkneighboursdiscovery.cc > new/aodv_linkneighboursdiscovery.cc > --- old/aodv_linkneighboursdiscovery.cc 2005-03-16 08:48:50.000000000+0100 > +++ new/aodv_linkneighboursdiscovery.cc 2007-10-09 16:06:56.000000000+0200 > @@ -12,18 +12,19 @@ > > CLICK_DECLS > AODVLinkNeighboursDiscovery::AODVLinkNeighboursDiscovery(): > - Element(0,0), > neighbours(0), > discovery(0) > { > - // CONSTRUCTOR MUST MOD_INC_USE_COUNT > + #ifdef MOD_INC_USE_COUNT > MOD_INC_USE_COUNT; > + #endif > } > > AODVLinkNeighboursDiscovery::~AODVLinkNeighboursDiscovery() > { > - // DESTRUCTOR MUST MOD_DEC_USE_COUNT > + #ifdef MOD_DEC_USE_COUNT > MOD_DEC_USE_COUNT; > + #endif > } > > int > @@ -34,7 +35,7 @@ > int res = cp_va_parse(conf, this, errh, cpElement, "AODVNeighbour > table", &neighbour_element, > cpElement, "AODVWaitingForDiscovery", &discovery_element, 0); > if(res < 0) return res; > - if (neighbour_element->class_name() != "AODVNeighbours"){ > + if (strcmp(neighbour_element->class_name(), "AODVNeighbours") != > 0){ > errh->error("Supplied element is not an AODVNeighbours > element but a %s",neighbour_element->class_name()); > return -1; > } > @@ -42,7 +43,7 @@ > errh->error("Supplied element is not a valid > AODVNeighbours element (cast failed)"); > return -1; > } > - if (discovery_element->class_name() != "AODVWaitingForDiscovery"){ > + if (strcmp(discovery_element->class_name(), > "AODVWaitingForDiscovery") != 0){ > errh->error("Supplied element is not an > AODVWaitingForDiscovery element but a %s",discovery_element->class_name()); > return -1; > } > diff -Naur old/aodv_linkneighboursdiscovery.hh > new/aodv_linkneighboursdiscovery.hh > --- old/aodv_linkneighboursdiscovery.hh 2004-12-02 10:55:00.000000000+0100 > +++ new/aodv_linkneighboursdiscovery.hh 2007-10-09 16:06:56.000000000+0200 > @@ -22,6 +22,7 @@ > ~AODVLinkNeighboursDiscovery(); > > const char *class_name() const { return > "AODVLinkNeighboursDiscovery"; } > + const char *port_count() const { return "0/0"; } > const char *processing() const { return AGNOSTIC; } > AODVLinkNeighboursDiscovery *clone() const { return > new AODVLinkNeighboursDiscovery; } > > diff -Naur old/aodv_lookuproute.cc new/aodv_lookuproute.cc > --- old/aodv_lookuproute.cc 2005-03-31 14:17:23.000000000 +0200 > +++ new/aodv_lookuproute.cc 2007-10-09 16:06:56.000000000 +0200 > @@ -15,17 +15,18 @@ > > CLICK_DECLS > AODVLookUpRoute::AODVLookUpRoute(): > - Element(1,3), > neighbour_table(0) > { > - // CONSTRUCTOR MUST MOD_INC_USE_COUNT > + #ifdef MOD_INC_USE_COUNT > MOD_INC_USE_COUNT; > + #endif > } > > AODVLookUpRoute::~AODVLookUpRoute() > { > - // DESTRUCTOR MUST MOD_DEC_USE_COUNT > + #ifdef MOD_DEC_USE_COUNT > MOD_DEC_USE_COUNT; > + #endif > } > > int > @@ -34,7 +35,8 @@ > Element* neighbour_table_element; > int res = cp_va_parse(conf, this, errh, cpElement, "AODVNeighbour > table", &neighbour_table_element, 0); > if(res < 0) return res; > - if (neighbour_table_element->class_name() != "AODVNeighbours"){ > + //schauen, ob parameter=AODVNeighbours > + if (strcmp(neighbour_table_element->class_name(), "AODVNeighbours") > != 0){ > errh->error("Supplied element is not an AODVNeighbours > element but a %s",neighbour_table_element->class_name()); > return -1; > } > @@ -49,11 +51,15 @@ > } > > void AODVLookUpRoute::push (int port, Packet * packet){ > + //click_chatter("port: %s", packet); > assert(port == 0); > assert(packet); > assert(PAINT_ANNO(packet) == 1 || PAINT_ANNO(packet) == 3); > IPAddress destination = packet->dst_ip_anno(); > + //click_chatter("Destination %s",destination.s().c_str()); > + //click_chatter("unknown destination %s in %s: RERR",destination.s > ().c_str(),myIP->s().c_str()); > IPAddress* nexthop = neighbour_table->nexthop(destination); > + //click_chatter("destination: %s source: %s",destination.s > ().c_str(),myIP->s().c_str()); > if (nexthop){ /* destination known so fill in and push for network > */ > assert(*nexthop != *myIP); > packet->set_dst_ip_anno(*nexthop); > @@ -63,14 +69,17 @@ > assert(packet->ip_header()->ip_src != destination); > > > neighbour_table->updateRouteLifetime(ipheader->ip_src,destination); > > - delete nexthop; > + //click_chatter("destination %s with anno %d known, push > to network",destination.s().c_str(), PAINT_ANNO(packet)); > > + delete nexthop; > + > output(0).push(packet); > } else { /* destination unknown so push for route discovery if > packet comes from localhost*/ > if (PAINT_ANNO(packet) == 1){ > - //click_chatter("unknown destination %s in %s: > RERR",destination.s().c_str(),myIP->s().c_str()); > + //click_chatter("destination %s unknown, generate > RERR",destination.s().c_str()); > output(2).push(packet); > } else { // local data to be forwarded (anno 3) -> route > discovery > + //click_chatter("destination %s with anno %d > unknown, local data found, discover route",destination.s().c_str(), > PAINT_ANNO(packet)); > output(1).push(packet); > } > } > diff -Naur old/aodv_lookuproute.hh new/aodv_lookuproute.hh > --- old/aodv_lookuproute.hh 2005-02-14 18:06:52.000000000 +0100 > +++ new/aodv_lookuproute.hh 2007-10-09 16:06:56.000000000 +0200 > @@ -21,6 +21,7 @@ > ~AODVLookUpRoute(); > > const char *class_name() const { return > "AODVLookUpRoute"; } > + const char *port_count() const { return "1/3"; } > const char *processing() const { return PUSH; } > AODVLookUpRoute *clone() const { return new > AODVLookUpRoute; } > > diff -Naur old/aodv_neighbours.cc new/aodv_neighbours.cc > --- old/aodv_neighbours.cc 2005-04-02 11:59:51.000000000 +0200 > +++ new/aodv_neighbours.cc 2007-10-09 16:06:56.000000000 +0200 > @@ -14,17 +14,18 @@ > > CLICK_DECLS > AODVNeighbours::AODVNeighbours(): > - Element(0,0), > mySequenceNumber(0) > { > - // CONSTRUCTOR MUST MOD_INC_USE_COUNT > + #ifdef MOD_INC_USE_COUNT > MOD_INC_USE_COUNT; > + #endif > } > > AODVNeighbours::~AODVNeighbours() > { > - // DESTRUCTOR MUST MOD_DEC_USE_COUNT > + #ifdef MOD_DEC_USE_COUNT > MOD_DEC_USE_COUNT; > + #endif > } > > int > @@ -46,11 +47,12 @@ > > void AODVNeighbours::expire(const IPAddress & ip, TimerData * timerdata){ > // pass timerdata too to clean up memory after timer expires > completely > + > NeighbourMap::Pair* pair = neighbours.find_pair(ip); > assert(pair); > if(pair->value.valid){ > pair->value.valid = false; > - pair->value.expiry->schedule_after_ms(AODV_DELETE_PERIOD); > + pair->value.expiry- > >schedule_after_msec(AODV_DELETE_PERIOD); > } else { > delete(pair->value.expiry); > neighbours.remove(ip); > @@ -73,12 +75,13 @@ > pair->value.valid = true; > pair->value.hopcount = hopcount; > pair->value.nexthop = nexthop; > - pair->value.expiry- > >schedule_after_ms(calculateLifetime(lifetime)); > + pair->value.expiry- > >schedule_after_msec(calculateLifetime(lifetime)); > assert(watcher); > watcher->newKnownDestination(pair->key,nexthop); > } > > void AODVNeighbours::insertRoutetableEntry(bool > validDestinationSequenceNumber, uint32_t destinationSequenceNumber, uint32_t > hopcount, const IPAddress & nexthop, int lifetime, const IPAddress & ip){ > + > assert(lifetime >= -1); > assert(nexthop != myIP); > struct routing_table_entry data; > @@ -93,12 +96,12 @@ > timerdata->neighbours = this; > data.expiry = new Timer(&AODVNeighbours::handleExpiry,timerdata); > data.expiry->initialize(this); > - data.expiry->schedule_after_ms(calculateLifetime(lifetime)); > + data.expiry->schedule_after_msec(calculateLifetime(lifetime)); > data.nexthop = nexthop; > assert(!neighbours.find_pair(ip)); > neighbours.insert(ip,data); > assert(watcher); > - watcher->newKnownDestination(ip,nexthop); > + watcher->newKnownDestination(ip,nexthop); > } > > // use overloading to smoothly process entries without known > sequencenumber and lifetime > @@ -108,7 +111,7 @@ > if (NeighbourMap::Pair* pair = neighbours.find_pair(ip)){ > editRoutetableEntry(pair,false,0,hopcount,nexthop,-1); > } else { > - insertRoutetableEntry(false,0,hopcount,nexthop,-1,ip); > + insertRoutetableEntry(false,0,hopcount,nexthop,-1,ip); > } > } > > @@ -122,9 +125,14 @@ > if (NeighbourMap::Pair* pair = neighbours.find_pair(ip)){ > if (!pair->value.valid || largerSequenceNumber(pair-> > value.destinationSequenceNumber,sequenceNumber) || (pair-> > value.destinationSequenceNumber == sequenceNumber && hopcount < pair-> > value.hopcount)) { > > > editRoutetableEntry(pair,true,sequenceNumber,hopcount,nexthop,lifetime); > + //click_chatter("edit %d > %d",sequenceNumber,lifetime); > + Timestamp now = Timestamp::now(); > + //click_chatter("%d EDIT SeqNr:%d, Hopcnt:%d, > NextHop:%s, Lifetime:%d",now.sec(),sequenceNumber,hopcount,nexthop.s > ().c_str(),lifetime); > } > } else { > > > insertRoutetableEntry(true,sequenceNumber,hopcount,nexthop,lifetime,ip); > + Timestamp now = Timestamp::now(); > + //click_chatter("%d INSERT SeqNr:%d, HopCnt:%d, NexHop:%s, > IPAdr:%s, Lifetime:%d",now.sec(),sequenceNumber,hopcount,nexthop.s > ().c_str(),ip.s().c_str(),lifetime); > } > } > > @@ -143,14 +151,16 @@ > assert(ms > 0); > NeighbourMap::Pair* pair = neighbours.find_pair(destination); > if (!pair) return; // route didn't exist / already expunged > - const struct timeval & newer = calculateTimeval(ms); > - const struct timeval & old = pair->value.expiry->expiry(); > + const Timestamp & newer = calculateTimeval(ms); > + const Timestamp & old = pair->value.expiry->expiry(); > if (old < newer) pair->value.expiry->schedule_at(newer); > + //click_chatter("addLifeTime"); > } > > void AODVNeighbours::updateLifetime(NeighbourMap::Pair* pair){ > - const struct timeval & newer = > calculateTimeval(calculateLifetime(-1)); // use existing code > - const struct timeval & old = pair->value.expiry->expiry(); > + //click_chatter("updateLifeTime"); > + const Timestamp & newer = calculateTimeval(calculateLifetime(-1)); > // use existing code > + const Timestamp & old = pair->value.expiry->expiry(); > pair->value.valid = true; > if (old < newer) pair->value.expiry->schedule_at(newer); > } > @@ -168,13 +178,17 @@ > > // it is possible that we don't have information about the > previous hop (highly likely) > // it is also possible that we don't have information about the > next hop (eg. node sends data before transmitting HELLO or RREQ so we don't > have its sequence number, filling in a new entry is not feasible) > - > + //click_chatter("updateRouteLifeTime"); > assert(to != myIP); > if (from != myIP){ > // update lifetime when using local paths but don't update > previous hop then > + //click_chatter("from %s, to %s", from.s().c_str(), to.s > ().c_str()); > NeighbourMap::Pair* frompair = neighbours.find_pair(from); > - assert(frompair); // we must have received a rreq to have > packets pass this way so we have a route table entry for it > - updateLifetime(frompair); // "of the source" > + //assert(frompair); // we must have received a rreq to > have packets pass this way so we have a route table entry for it > + //updateLifetime(frompair); // "of the source" > + if (frompair) { > + updateLifetime(frompair); > + } > > NeighbourMap::Pair* frompairNexthop = neighbours.find_pair > (from); > if(frompairNexthop) updateLifetime(frompairNexthop); // > the Active Route Lifetime for the previous hop > @@ -229,10 +243,9 @@ > uint32_t AODVNeighbours::getLifetime(const IPAddress & ip) const{ > NeighbourMap::Pair* pair = neighbours.find_pair(ip); > assert(pair); > - struct timeval expiry = pair->value.expiry->expiry(); > - struct timeval now; > - click_gettimeofday(&now); > - uint32_t result = (expiry.tv_sec - now.tv_sec) * 1000 + ( > expiry.tv_usec - now.tv_usec) / 1000; > + Timestamp expiry = pair->value.expiry->expiry(); > + Timestamp now = Timestamp::now(); > + uint32_t result = (expiry.sec() - now.sec()) * 1000 + (expiry.usec() > - now.usec()) / 1000; > return (result == 0)?1:result; // avoid returning 0 to avoid > confusion: this entry is still valid! > } > > @@ -245,7 +258,7 @@ > // 2. > pair->value.valid = false; > // 3. > - pair->value.expiry->schedule_after_ms(AODV_DELETE_PERIOD); > + pair->value.expiry->schedule_after_msec(AODV_DELETE_PERIOD); > } > > Vector<IPAddress>* AODVNeighbours::getPrecursors(const IPAddress & ip) > const{ > diff -Naur old/aodv_neighbours.hh new/aodv_neighbours.hh > --- old/aodv_neighbours.hh 2005-03-09 12:04:58.000000000 +0100 > +++ new/aodv_neighbours.hh 2007-10-09 16:06:56.000000000 +0200 > @@ -38,9 +38,9 @@ > ~AODVNeighbours(); > > const char *class_name() const { return "AODVNeighbours"; > } > + const char *port_count() const { return "0/0"; } > const char *processing() const { return AGNOSTIC; } > - AODVNeighbours *clone() const { return new > AODVNeighbours; } > - > + > int configure(Vector<String> &, ErrorHandler *); > > void updateRoutetableEntry(const IPAddress &,uint32_t, > uint32_t, const IPAddress &, uint32_t); > diff -Naur old/aodv_setrrepheaders.cc new/aodv_setrrepheaders.cc > --- old/aodv_setrrepheaders.cc 2005-02-14 18:06:52.000000000 +0100 > +++ new/aodv_setrrepheaders.cc 2007-10-09 16:06:56.000000000 +0200 > @@ -13,18 +13,21 @@ > #include "aodv_setrrepheaders.hh" > CLICK_DECLS > > -AODVSetRREPHeaders::AODVSetRREPHeaders(): > - Element(1,1) > +AODVSetRREPHeaders::AODVSetRREPHeaders() > { > // CONSTRUCTOR MUST MOD_INC_USE_COUNT > + #ifdef MOD_INC_USE_COUNT > MOD_INC_USE_COUNT; > + #endif > destinations = new DestinationMap(); > } > > AODVSetRREPHeaders::~AODVSetRREPHeaders() > { > // DESTRUCTOR MUST MOD_DEC_USE_COUNT > + #ifdef MOD_DEC_USE_COUNT > MOD_DEC_USE_COUNT; > + #endif > } > > void AODVSetRREPHeaders::push (int port, Packet * p){ > @@ -65,4 +68,3 @@ > CLICK_ENDDECLS > > EXPORT_ELEMENT(AODVSetRREPHeaders) > - > diff -Naur old/aodv_setrrepheaders.hh new/aodv_setrrepheaders.hh > --- old/aodv_setrrepheaders.hh 2005-02-14 18:06:52.000000000 +0100 > +++ new/aodv_setrrepheaders.hh 2007-10-09 16:06:56.000000000 +0200 > @@ -23,6 +23,7 @@ > ~AODVSetRREPHeaders(); > > const char *class_name() const { return > "AODVSetRREPHeaders"; } > + const char *port_count() const { return "1/1"; } > const char *processing() const { return PUSH; } > AODVSetRREPHeaders *clone() const { return new > AODVSetRREPHeaders; } > > diff -Naur old/aodv_trackneighbours.cc new/aodv_trackneighbours.cc > --- old/aodv_trackneighbours.cc 2005-04-18 09:21:18.000000000 +0200 > +++ new/aodv_trackneighbours.cc 2007-10-09 16:06:56.000000000 +0200 > @@ -14,17 +14,20 @@ > #include "aodv_trackneighbours.hh" > > CLICK_DECLS > -AODVTrackNeighbours::AODVTrackNeighbours(): > - Element(1,1) > +AODVTrackNeighbours::AODVTrackNeighbours() > { > // CONSTRUCTOR MUST MOD_INC_USE_COUNT > + #ifdef MOD_INC_USE_COUNT > MOD_INC_USE_COUNT; > + #endif > } > > AODVTrackNeighbours::~AODVTrackNeighbours() > { > // DESTRUCTOR MUST MOD_DEC_USE_COUNT > + #ifdef MOD_DEC_USE_COUNT > MOD_DEC_USE_COUNT; > + #endif > } > > int > @@ -36,7 +39,7 @@ > cpElement, "AODVGenerateRERR", &generateRerrElement, > cpElement, "AODVNeighbours", &neighbour_table_element, 0); > if(res < 0) return res; > - if (generateRerrElement->class_name() != "AODVGenerateRERR"){ > + if (strcmp(generateRerrElement->class_name(), "AODVGenerateRERR") > != 0){ > errh->error("Supplied element is not an AODVGenerateRERR > element but a %s",generateRerrElement->class_name()); > return -1; > } > @@ -44,7 +47,7 @@ > errh->error("Supplied element is not a valid > AODVGenerateRERR element (cast failed)"); > return -1; > } > - if (neighbour_table_element->class_name() != "AODVNeighbours"){ > + if (strcmp(neighbour_table_element->class_name(), > "AODVNeighbours") != 0){ > errh->error("Supplied element is not an AODVNeighbours > element but a %s",neighbour_table_element->class_name()); > return -1; > } > @@ -118,12 +121,12 @@ > timerdata->me = this; > Timer * timer = new > Timer(&AODVTrackNeighbours::handleExpiry,timerdata); > timer->initialize(this); > - > timer->schedule_after_ms(AODV_ALLOWED_HELLO_LOSS * AODV_HELLO_INTERVAL); > + > timer->schedule_after_msec(AODV_ALLOWED_HELLO_LOSS * AODV_HELLO_INTERVAL); > > > neighbour_timers.insert(rrep->originator,timer); > } > } > TimerMap::Pair* pair = > neighbour_timers.find_pair(ipheader->ip_src); > - if (pair) > pair->value->schedule_after_ms(AODV_ALLOWED_HELLO_LOSS * > AODV_HELLO_INTERVAL); > + if (pair) > pair->value->schedule_after_msec(AODV_ALLOWED_HELLO_LOSS * > AODV_HELLO_INTERVAL); > } > output(0).push(packet); > } > diff -Naur old/aodv_trackneighbours.hh new/aodv_trackneighbours.hh > --- old/aodv_trackneighbours.hh 2005-04-18 09:21:18.000000000 +0200 > +++ new/aodv_trackneighbours.hh 2007-10-09 16:06:56.000000000 +0200 > @@ -25,6 +25,7 @@ > ~AODVTrackNeighbours(); > > const char *class_name() const { return > "AODVTrackNeighbours"; } > + const char *port_count() const { return "1/1"; } > const char *processing() const { return PUSH; } > AODVTrackNeighbours *clone() const { return new > AODVTrackNeighbours; } > > diff -Naur old/aodv_updateneighbours.cc new/aodv_updateneighbours.cc > --- old/aodv_updateneighbours.cc 2005-04-02 12:00:09.000000000+0200 > +++ new/aodv_updateneighbours.cc 2007-10-09 16:06:56.000000000+0200 > @@ -16,17 +16,20 @@ > > CLICK_DECLS > AODVUpdateNeighbours::AODVUpdateNeighbours(): > - Element(1,1), > neighbour_table(0) > { > // CONSTRUCTOR MUST MOD_INC_USE_COUNT > + #ifdef MOD_INC_USE_COUNT > MOD_INC_USE_COUNT; > + #endif > } > > AODVUpdateNeighbours::~AODVUpdateNeighbours() > { > // DESTRUCTOR MUST MOD_DEC_USE_COUNT > + #ifdef MOD_DEC_USE_COUNT > MOD_DEC_USE_COUNT; > + #endif > } > > int > @@ -35,7 +38,7 @@ > Element* neighbour_table_element; > int res = cp_va_parse(conf, this, errh, cpElement, "AODVNeighbour > table", &neighbour_table_element, 0); > if(res < 0) return res; > - if (neighbour_table_element->class_name() != "AODVNeighbours"){ > + if (strcmp(neighbour_table_element->class_name(), > "AODVNeighbours") != 0){ > errh->error("Supplied element is not an AODVNeighbours > element but a %s",neighbour_table_element->class_name()); > return -1; > } > @@ -71,7 +74,7 @@ > > neighbour_table->updateRoutetableEntry(IPAddress(rrep->destination),ntohl(rrep->destinationseqnr),rrep->hopcount, > IPAddress(ipheader->ip_src),AODV_ALLOWED_HELLO_LOSS * AODV_HELLO_INTERVAL); > } else { // RREP > // the information is only useful if I am > not the destination (I might hear this packets due to routing changes) > - if (rrep->destination != > neighbour_table->getMyIP()){ > + if (rrep->destination != neighbour_table->getMyIP()){ > > neighbour_table->updateRoutetableEntry(IPAddress(rrep->destination), > ntohl(rrep->destinationseqnr), rrep->hopcount, IPAddress(ipheader->ip_src), > ntohl(rrep->lifetime)); > } > } > @@ -79,6 +82,7 @@ > break; > } > case AODV_RREQ_MESSAGE: //RREQ > + { > //aodv_rreq_header * header = (aodv_rreq_header*) > (packet->data() + aodv_headeroffset); > //click_chatter("AODV rreq packet received from %s > with rreqid %u", IPAddress(header->originator).s().c_str(), > ntohl(header->rreqid)); > > @@ -87,13 +91,14 @@ > > output(0).push(packet); > break; > + } > case AODV_RREP_ACK_MESSAGE: > //click_chatter("AODV rrep-ack packet received"); > //no processing possible > output(0).push(packet); > break; > - default: > - assert(false); // not a rrep, hello or rreq: > problems > +// default: > +// assert(false); // not a rrep, hello or rreq: > problems > } > } > > diff -Naur old/aodv_updateneighbours.hh new/aodv_updateneighbours.hh > --- old/aodv_updateneighbours.hh 2004-12-02 10:11:48.000000000+0100 > +++ new/aodv_updateneighbours.hh 2007-10-09 16:06:56.000000000+0200 > @@ -21,6 +21,7 @@ > ~AODVUpdateNeighbours(); > > const char *class_name() const { return > "AODVUpdateNeighbours"; } > + const char *port_count() const { return "1/1"; } > const char *processing() const { return PUSH; } > AODVUpdateNeighbours *clone() const { return new > AODVUpdateNeighbours; } > > diff -Naur old/aodv_waitingfordiscovery.cc new/aodv_waitingfordiscovery.cc > --- old/aodv_waitingfordiscovery.cc 2005-05-06 14:29:31.000000000+0200 > +++ new/aodv_waitingfordiscovery.cc 2007-10-09 16:06:56.000000000+0200 > @@ -16,17 +16,20 @@ > > CLICK_DECLS > > -AODVWaitingForDiscovery::AODVWaitingForDiscovery(): > - Element(2,2) > +AODVWaitingForDiscovery::AODVWaitingForDiscovery() > { > // CONSTRUCTOR MUST MOD_INC_USE_COUNT > + #ifdef MOD_INC_USE_COUNT > MOD_INC_USE_COUNT; > + #endif > } > > AODVWaitingForDiscovery::~AODVWaitingForDiscovery() > { > // DESTRUCTOR MUST MOD_DEC_USE_COUNT > + #ifdef MOD_DEC_USE_COUNT > MOD_DEC_USE_COUNT; > + #endif > } > > int > @@ -37,7 +40,7 @@ > int res = cp_va_parse(conf, this, errh, cpElement, > "AODVGenerateRREQ", &generate_rreq_element, > cpElement, "AODVNeighbour table", > &neighbour_table_element, 0); > if(res < 0) return res; > - if (generate_rreq_element->class_name() != "AODVGenerateRREQ"){ > + if (strcmp(generate_rreq_element->class_name(), > "AODVGenerateRREQ") != 0){ > errh->error("Supplied element is not an AODVGenerateRREQ > element but a %s",generate_rreq_element->class_name()); > return -1; > } > @@ -45,7 +48,7 @@ > errh->error("Supplied element is not a valid > AODVGenerateRREQ element (cast failed)"); > return -1; > } > - if (neighbour_table_element->class_name() != "AODVNeighbours"){ > + if (strcmp(neighbour_table_element->class_name(), > "AODVNeighbours") != 0){ > errh->error("Supplied element is not an AODVNeighbours > element but a %s",neighbour_table_element->class_name()); > return -1; > } > @@ -68,7 +71,8 @@ > // it's over, clean up everything > Vector<Packet*>::iterator iter = pair->value-> > packets.begin(); > // at least one packet is still waiting, use it to > generate ICMP error > - output(1).push(*iter); > + //click_chatter("nothing found, generating icmp error"); > + output(1).push(*iter); > iter = pair->value->packets.erase(iter); > > // drop all other packets from buffer > @@ -88,14 +92,14 @@ > if (pair->value->ttl < AODV_TTL_TRESHOLD) { > pair->value->ttl = pair->value->ttl + > AODV_TTL_INCREMENT; > > > rreq->generateRREQ(destination,false,pair->value->ttl); > - > pair->value->timer->schedule_after_ms(AODV_RING_TRAVERSAL_TIME_FACTOR * > (pair->value->ttl + AODV_TIMEOUT_BUFFER)); > + > pair->value->timer->schedule_after_msec(AODV_RING_TRAVERSAL_TIME_FACTOR * > (pair->value->ttl + AODV_TIMEOUT_BUFFER)); > > } else { > pair->value->ttl = AODV_NET_DIAMETER; > pair->value->maxTTL = true; > ++pair->value->nrOfRetries; > > > rreq->generateRREQ(destination,false,pair->value->ttl); > - > pair->value->timer->schedule_after_ms(AODV_RING_TRAVERSAL_TIME_FACTOR * > (pair->value->ttl + AODV_TIMEOUT_BUFFER)); > + > pair->value->timer->schedule_after_msec(AODV_RING_TRAVERSAL_TIME_FACTOR * > (pair->value->ttl + AODV_TIMEOUT_BUFFER)); > } > } > } > @@ -135,8 +139,9 @@ > if(PAINT_ANNO(*iter) == 1 || PAINT_ANNO(*iter) == > 3){ // forwarded packet > const click_ip * ipheader = > (*iter)->ip_header(); > assert(ipheader); > - > neighbour_table->updateRouteLifetime(ipheader->ip_src,ipheader->ip_dst); > - output(0).push(*iter); > > + > neighbour_table->updateRouteLifetime(ipheader->ip_src,ipheader->ip_dst); > + //click_chatter("forwarding packet"); > + output(0).push(*iter); > } else if (PAINT_ANNO(*iter) == 2){ // RREP needs > changed destination > WritablePacket* writable = > (*iter)->uniqueify(); > writable->ip_header()->ip_dst = > nexthop.in_addr(); > @@ -184,7 +189,7 @@ > > waiting->timer = new > Timer(&AODVWaitingForDiscovery::handleTask,data); // run handletask when > timer goes off > waiting->timer->initialize(this); > - > waiting->timer->schedule_after_ms(AODV_RING_TRAVERSAL_TIME_FACTOR * > (AODV_TTL_START + AODV_TIMEOUT_BUFFER)); > + > waiting->timer->schedule_after_msec(AODV_RING_TRAVERSAL_TIME_FACTOR * > (AODV_TTL_START + AODV_TIMEOUT_BUFFER)); > > buffer.insert(packet->dst_ip_anno(),waiting); > > @@ -201,7 +206,6 @@ > assert(ipheader); > > newKnownDestination(rrep->destination, ipheader->ip_src); > - > packet->kill(); > } > } > diff -Naur old/aodv_waitingfordiscovery.hh new/aodv_waitingfordiscovery.hh > --- old/aodv_waitingfordiscovery.hh 2005-02-25 09:29:49.000000000+0100 > +++ new/aodv_waitingfordiscovery.hh 2007-10-09 16:06:56.000000000+0200 > @@ -34,6 +34,7 @@ > ~AODVWaitingForDiscovery(); > > const char *class_name() const { return > "AODVWaitingForDiscovery"; } > + const char *port_count() const { return "2/2"; } > const char *processing() const { return PUSH; } > AODVWaitingForDiscovery *clone() const { return new > AODVWaitingForDiscovery; } > > diff -Naur old/click_aodv.hh new/click_aodv.hh > --- old/click_aodv.hh 2005-03-08 09:37:40.000000000 +0100 > +++ new/click_aodv.hh 2007-10-09 16:06:56.000000000 +0200 > @@ -17,7 +17,7 @@ > //Intervals in ms > #define AODV_HELLO_INTERVAL 1000 > #define AODV_ALLOWED_HELLO_LOSS 2 > -#define AODV_ACTIVE_ROUTE_TIMEOUT 1000 > +#define AODV_ACTIVE_ROUTE_TIMEOUT 3000 > #define AODV_NET_DIAMETER 35 > #define AODV_NODE_TRAVERSAL_TIME 40 > #define AODV_NET_TRAVERSAL_TIME 2 * AODV_NODE_TRAVERSAL_TIME * > AODV_NET_DIAMETER > > _______________________________________________ click mailing list [email protected] https://amsterdam.lcs.mit.edu/mailman/listinfo/click
