亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? aodv.cc

?? ns-2 simulation code manet
?? CC
?? 第 1 頁 / 共 3 頁
字號:
/*Copyright (c) 1997, 1998 Carnegie Mellon University.  All RightsReserved. Redistribution and use in source and binary forms, with or withoutmodification, are permitted provided that the following conditions are met:1. Redistributions of source code must retain the above copyright notice,this list of conditions and the following disclaimer.2. Redistributions in binary form must reproduce the above copyright notice,this list of conditions and the following disclaimer in the documentationand/or other materials provided with the distribution.3. The name of the author may not be used to endorse or promote productsderived from this software without specific prior written permission.THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS ORIMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIESOF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OROTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IFADVISED OF THE POSSIBILITY OF SUCH DAMAGE.The AODV code developed by the CMU/MONARCH group was optimized and tuned by Samir Das and Mahesh Marina, University of Cincinnati. The work was partially done in Sun Microsystems. Modified for gratuitous replies by Anant Utgikar, 09/16/02.*///#include <ip.h>#include <aodv/aodv.h>#include <aodv/aodv_packet.h>#include <random.h>#include <cmu-trace.h>//#include <energy-model.h>#define max(a,b)        ( (a) > (b) ? (a) : (b) )#define CURRENT_TIME    Scheduler::instance().clock()//#define DEBUG//#define ERROR#ifdef DEBUGstatic int extra_route_reply = 0;static int limit_route_request = 0;static int route_request = 0;#endif/*  TCL Hooks*/int hdr_aodv::offset_;static class AODVHeaderClass : public PacketHeaderClass {public:        AODVHeaderClass() : PacketHeaderClass("PacketHeader/AODV",                                              sizeof(hdr_all_aodv)) {	  bind_offset(&hdr_aodv::offset_);	} } class_rtProtoAODV_hdr;static class AODVclass : public TclClass {public:        AODVclass() : TclClass("Agent/AODV") {}        TclObject* create(int argc, const char*const* argv) {          assert(argc == 5);          //return (new AODV((nsaddr_t) atoi(argv[4])));	  return (new AODV((nsaddr_t) Address::instance().str2addr(argv[4])));        }} class_rtProtoAODV;intAODV::command(int argc, const char*const* argv) {  if(argc == 2) {  Tcl& tcl = Tcl::instance();        if(strncasecmp(argv[1], "id", 2) == 0) {      tcl.resultf("%d", index);      return TCL_OK;    }        if(strncasecmp(argv[1], "start", 2) == 0) {      btimer.handle((Event*) 0);#ifndef AODV_LINK_LAYER_DETECTION      htimer.handle((Event*) 0);      ntimer.handle((Event*) 0);#endif // LINK LAYER DETECTION      rtimer.handle((Event*) 0);      return TCL_OK;     }                 }  else if(argc == 3) {    if(strcmp(argv[1], "index") == 0) {      index = atoi(argv[2]);      return TCL_OK;    }    else if(strcmp(argv[1], "log-target") == 0 || strcmp(argv[1], "tracetarget") == 0) {      logtarget = (Trace*) TclObject::lookup(argv[2]);      if(logtarget == 0)	return TCL_ERROR;      return TCL_OK;    }    else if(strcmp(argv[1], "drop-target") == 0) {    int stat = rqueue.command(argc,argv);      if (stat != TCL_OK) return stat;      return Agent::command(argc, argv);    }    else if(strcmp(argv[1], "if-queue") == 0) {    ifqueue = (PriQueue*) TclObject::lookup(argv[2]);            if(ifqueue == 0)	return TCL_ERROR;      return TCL_OK;    }    else if (strcmp(argv[1], "port-dmux") == 0) {    	dmux_ = (PortClassifier *)TclObject::lookup(argv[2]);	if (dmux_ == 0) {		fprintf (stderr, "%s: %s lookup of %s failed\n", __FILE__,		argv[1], argv[2]);		return TCL_ERROR;	}	return TCL_OK;    }  }  return Agent::command(argc, argv);}/*    Constructor*/AODV::AODV(nsaddr_t id) : Agent(PT_AODV),			  btimer(this), htimer(this), ntimer(this), 			  rtimer(this), lrtimer(this), rqueue() {                   index = id;  seqno = 2;  bid = 1;  LIST_INIT(&nbhead);  LIST_INIT(&bihead);  logtarget = 0;  ifqueue = 0;  nlinkfail = 0; // ktnahm  bind( "beta_", &beta ); // ktnahm}/*  Timers*/voidBroadcastTimer::handle(Event*) {  agent->id_purge();  Scheduler::instance().schedule(this, &intr, BCAST_ID_SAVE);}voidHelloTimer::handle(Event*) {   agent->sendHello();   double interval = MinHelloInterval +                  ((MaxHelloInterval - MinHelloInterval) * Random::uniform());   assert(interval >= 0);   Scheduler::instance().schedule(this, &intr, interval);}voidNeighborTimer::handle(Event*) {  agent->nb_purge();  Scheduler::instance().schedule(this, &intr, HELLO_INTERVAL);}voidRouteCacheTimer::handle(Event*) {  agent->rt_purge();#define FREQUENCY 0.5 // sec  Scheduler::instance().schedule(this, &intr, FREQUENCY);}voidLocalRepairTimer::handle(Event* p)  {  // SRD: 5/4/99aodv_rt_entry *rt;struct hdr_ip *ih = HDR_IP( (Packet *)p);   /* you get here after the timeout in a local repair attempt */   /*	fprintf(stderr, "%s\n", __FUNCTION__); */    rt = agent->rtable.rt_lookup(ih->daddr());	    if (rt && rt->rt_flags != RTF_UP) {    // route is yet to be repaired    // I will be conservative and bring down the route    // and send route errors upstream.    /* The following assert fails, not sure why */    /* assert (rt->rt_flags == RTF_IN_REPAIR); */		      //rt->rt_seqno++;      agent->rt_down(rt);      // send RERR#ifdef DEBUG      fprintf(stderr,"Node %d: Dst - %d, failed local repair\n",index, rt->rt_dst);#endif          }    Packet::free((Packet *)p);}/*   Broadcast ID Management  Functions*/voidAODV::id_insert(nsaddr_t id, u_int32_t bid) {BroadcastID *b = new BroadcastID(id, bid); assert(b); b->expire = CURRENT_TIME + BCAST_ID_SAVE; LIST_INSERT_HEAD(&bihead, b, link);}/* SRD */boolAODV::id_lookup(nsaddr_t id, u_int32_t bid) {BroadcastID *b = bihead.lh_first;  // Search the list for a match of source and bid for( ; b; b = b->link.le_next) {   if ((b->src == id) && (b->id == bid))     return true;      } return false;}voidAODV::id_purge() {BroadcastID *b = bihead.lh_first;BroadcastID *bn;double now = CURRENT_TIME; for(; b; b = bn) {   bn = b->link.le_next;   if(b->expire <= now) {     LIST_REMOVE(b,link);     delete b;   } }}/*  Helper Functions*/doubleAODV::PerHopTime(aodv_rt_entry *rt) {int num_non_zero = 0, i;double total_latency = 0.0; if (!rt)   return ((double) NODE_TRAVERSAL_TIME );	 for (i=0; i < MAX_HISTORY; i++) {   if (rt->rt_disc_latency[i] > 0.0) {      num_non_zero++;      total_latency += rt->rt_disc_latency[i];   } } if (num_non_zero > 0)   return(total_latency / (double) num_non_zero); else   return((double) NODE_TRAVERSAL_TIME);}/*  Link Failure Management Functions*/static voidaodv_rt_failed_callback(Packet *p, void *arg) {  ((AODV*) arg)->rt_ll_failed(p);}/* * This routine is invoked when the link-layer reports a route failed. */voidAODV::rt_ll_failed(Packet *p) {struct hdr_cmn *ch = HDR_CMN(p);struct hdr_ip *ih = HDR_IP(p);aodv_rt_entry *rt;nsaddr_t broken_nbr = ch->next_hop_;// ktnahm starts if ( ch->xmit_reason_ == XMIT_REASON_CONFIRM ) {   nlinkfail = 0;   //   lossintv++;   return; }  nlinkfail ++; // now, it's a link failure for sure -- ktnahm if (beta == 0 || nlinkfail < beta) {   drop( p, DROP_RTR_MAC_CALLBACK);   Packet::free(p);   p = 0;   return; } // ktnahm ends#ifndef AODV_LINK_LAYER_DETECTION drop(p, DROP_RTR_MAC_CALLBACK);#else  /*  * Non-data packets and Broadcast Packets can be dropped.  */  if(! DATA_PACKET(ch->ptype()) ||     (u_int32_t) ih->daddr() == IP_BROADCAST) {    drop(p, DROP_RTR_MAC_CALLBACK);    return;  }  log_link_broke(p);	if((rt = rtable.rt_lookup(ih->daddr())) == 0) {    drop(p, DROP_RTR_MAC_CALLBACK);    return;  }  log_link_del(ch->next_hop_);#ifdef AODV_LOCAL_REPAIR  /* if the broken link is closer to the dest than source,      attempt a local repair. Otherwise, bring down the route. */  if (ch->num_forwards() > rt->rt_hops) {    local_rt_repair(rt, p); // local repair    // retrieve all the packets in the ifq using this link,    // queue the packets for which local repair is done,     return;  }  else	#endif // LOCAL REPAIR	  {    drop(p, DROP_RTR_MAC_CALLBACK);    // Do the same thing for other packets in the interface queue using the    // broken link -Maheshwhile((p = ifqueue->filter(broken_nbr))) {     drop(p, DROP_RTR_MAC_CALLBACK);    }	    nb_delete(broken_nbr);  }#endif // LINK LAYER DETECTION}voidAODV::handle_link_failure(nsaddr_t id) {aodv_rt_entry *rt, *rtn;Packet *rerr = Packet::alloc();struct hdr_aodv_error *re = HDR_AODV_ERROR(rerr); re->DestCount = 0; for(rt = rtable.head(); rt; rt = rtn) {  // for each rt entry   rtn = rt->rt_link.le_next;    if ((rt->rt_hops != INFINITY2) && (rt->rt_nexthop == id) ) {     assert (rt->rt_flags == RTF_UP);     assert((rt->rt_seqno%2) == 0);     rt->rt_seqno++;     re->unreachable_dst[re->DestCount] = rt->rt_dst;     re->unreachable_dst_seqno[re->DestCount] = rt->rt_seqno;#ifdef DEBUG     fprintf(stderr, "%s(%f): %d\t(%d\t%u\t%d)\n", __FUNCTION__, CURRENT_TIME,		     index, re->unreachable_dst[re->DestCount],		     re->unreachable_dst_seqno[re->DestCount], rt->rt_nexthop);#endif // DEBUG     re->DestCount += 1;     rt_down(rt);   }   // remove the lost neighbor from all the precursor lists   rt->pc_delete(id); }    if (re->DestCount > 0) {#ifdef DEBUG   fprintf(stderr, "%s(%f): %d\tsending RERR...\n", __FUNCTION__, CURRENT_TIME, index);#endif // DEBUG   sendError(rerr, false); } else {   Packet::free(rerr); }}voidAODV::local_rt_repair(aodv_rt_entry *rt, Packet *p) {#ifdef DEBUG  fprintf(stderr,"%s: Dst - %d\n", __FUNCTION__, rt->rt_dst); #endif    // Buffer the packet   rqueue.enque(p);  // mark the route as under repair   rt->rt_flags = RTF_IN_REPAIR;  sendRequest(rt->rt_dst);  // set up a timer interrupt  Scheduler::instance().schedule(&lrtimer, p->copy(), rt->rt_req_timeout);}voidAODV::rt_update(aodv_rt_entry *rt, u_int32_t seqnum, u_int16_t metric,	       	nsaddr_t nexthop, double expire_time) {     rt->rt_seqno = seqnum;     rt->rt_hops = metric;     rt->rt_flags = RTF_UP;     rt->rt_nexthop = nexthop;     rt->rt_expire = expire_time;}voidAODV::rt_down(aodv_rt_entry *rt) {  /*   *  Make sure that you don't "down" a route more than once.   */  if(rt->rt_flags == RTF_DOWN) {    return;  }  // assert (rt->rt_seqno%2); // is the seqno odd?  rt->rt_last_hop_count = rt->rt_hops;  rt->rt_hops = INFINITY2;  rt->rt_flags = RTF_DOWN;  rt->rt_nexthop = 0;  rt->rt_expire = 0;} /* rt_down function *//*  Route Handling Functions*/voidAODV::rt_resolve(Packet *p) {struct hdr_cmn *ch = HDR_CMN(p);struct hdr_ip *ih = HDR_IP(p);aodv_rt_entry *rt; /*  *  Set the transmit failure callback.  That  *  won't change.  */ ch->xmit_failure_ = aodv_rt_failed_callback;

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
在线观看亚洲精品| 色先锋久久av资源部| 石原莉奈在线亚洲三区| 一区二区三区四区在线| 国产精品三级电影| 国产精品成人免费在线| 成人欧美一区二区三区1314 | 伊人一区二区三区| 亚洲欧洲精品一区二区三区不卡| 国产欧美日韩在线观看| 中文字幕第一页久久| 日韩一区中文字幕| 亚洲成人av中文| 奇米综合一区二区三区精品视频| 久久se精品一区二区| 国产高清精品久久久久| 91丨porny丨国产| 欧美日韩亚洲综合一区二区三区 | 日欧美一区二区| 日韩高清不卡一区二区三区| 免费国产亚洲视频| 懂色av中文一区二区三区| 91免费看`日韩一区二区| 欧美亚洲一区二区在线| 欧美精品自拍偷拍| 国产丝袜美腿一区二区三区| 亚洲精品久久久蜜桃| 日本va欧美va瓶| 国内精品伊人久久久久av影院 | 日韩精品一区二区三区中文不卡| 久久免费电影网| 一区二区三区精品| 国内精品国产三级国产a久久| 成人a区在线观看| 日韩欧美在线123| 日韩毛片高清在线播放| 奇米影视一区二区三区小说| 成人性生交大合| 欧美日韩精品一区二区在线播放| 久久久亚洲精华液精华液精华液| 一区二区三区欧美激情| 国产一区在线精品| 欧美视频中文字幕| 国产欧美视频一区二区三区| 亚洲国产视频一区二区| 成人免费高清在线| 日韩一卡二卡三卡四卡| 亚洲少妇30p| 国产成人精品在线看| 欧美电影免费观看完整版| 亚洲自拍偷拍九九九| 成人国产电影网| 久久伊人中文字幕| 午夜精品视频一区| 欧美性色欧美a在线播放| 国产精品久久久一本精品| 久久99精品国产麻豆婷婷 | 精品国产一区二区三区久久久蜜月 | 亚洲狠狠丁香婷婷综合久久久| 国产在线观看免费一区| 制服丝袜亚洲播放| 亚洲第一主播视频| 欧美亚一区二区| 亚洲欧美日韩中文字幕一区二区三区 | 毛片一区二区三区| 欧美日韩中文另类| 一区二区三区不卡视频| 91原创在线视频| 日韩一区在线免费观看| 成人av在线一区二区三区| 国产欧美日韩亚州综合| 国产成都精品91一区二区三| 久久影院视频免费| 国产成人综合网| 国产精品素人视频| 成人午夜电影小说| 亚洲欧美偷拍卡通变态| 91高清视频在线| 亚洲香蕉伊在人在线观| 在线91免费看| 久久国产人妖系列| 久久久99精品久久| 高清不卡一二三区| 亚洲欧美日韩国产手机在线 | 精品一区二区三区日韩| 欧美大肚乱孕交hd孕妇| 久久电影国产免费久久电影| 久久久精品人体av艺术| www.欧美.com| 一区二区三区日本| 欧美一区二区在线播放| 韩国v欧美v日本v亚洲v| 国产精品亲子乱子伦xxxx裸| 91香蕉视频mp4| 午夜亚洲国产au精品一区二区 | 国产精品白丝av| 中文字幕一区二区日韩精品绯色| 色妹子一区二区| 日本不卡在线视频| 国产午夜精品一区二区三区嫩草 | 亚洲精品一区二区三区福利| 国产很黄免费观看久久| 亚洲精品国产视频| 日韩美女一区二区三区四区| 国产成人精品影视| 亚洲不卡一区二区三区| 日韩精品一区二区三区中文不卡| 成人国产在线观看| 美女诱惑一区二区| 中文字幕在线不卡一区 | 久久精品99国产精品日本| 日本一区二区三区在线不卡| 欧美日韩国产一区二区三区地区| 久久99这里只有精品| 亚洲欧美日韩国产另类专区| 91精品免费在线观看| 成人动漫视频在线| 极品美女销魂一区二区三区免费 | 美女脱光内衣内裤视频久久影院| 欧美极品美女视频| 制服丝袜国产精品| 91在线云播放| 国产黄色精品视频| 日本va欧美va瓶| 亚洲国产精品久久久久秋霞影院 | 欧美视频你懂的| 高清shemale亚洲人妖| 欧美aaaaaa午夜精品| 亚洲欧美激情视频在线观看一区二区三区 | 午夜欧美电影在线观看| 国产精品私人影院| 欧美精品一区二区久久久| 欧美日韩一区二区欧美激情| 99国产精品久久| 国产成人在线免费| 国模娜娜一区二区三区| 青娱乐精品视频在线| 亚洲综合一区二区精品导航| 综合分类小说区另类春色亚洲小说欧美 | 久久久一区二区三区捆绑**| 555夜色666亚洲国产免| 91免费版pro下载短视频| 盗摄精品av一区二区三区| 国产曰批免费观看久久久| 奇米四色…亚洲| 免费观看成人av| 日本不卡在线视频| 日韩制服丝袜av| 午夜精品久久久久久久久久| 亚洲成av人片在线| 亚洲成a人片综合在线| 亚洲高清久久久| 夜夜揉揉日日人人青青一国产精品| 国产精品久久福利| 国产精品久久久久一区二区三区共| 欧美韩国日本一区| 中文字幕在线不卡国产视频| 国产精品灌醉下药二区| 国产精品视频在线看| 国产精品短视频| 中文字幕中文在线不卡住| 亚洲欧美综合色| 亚洲日本护士毛茸茸| 亚洲天堂精品视频| 亚洲成在人线免费| 日韩高清国产一区在线| 狠狠狠色丁香婷婷综合激情| 国产成人精品一区二区三区四区 | 欧美精品一卡两卡| 欧美成人三级电影在线| 久久精品综合网| 亚洲三级在线免费| 视频一区在线视频| 激情欧美一区二区| 成人黄色av网站在线| 色婷婷狠狠综合| 欧美tickling挠脚心丨vk| 久久久久久久电影| 伊人夜夜躁av伊人久久| 丝袜亚洲精品中文字幕一区| 久久精品二区亚洲w码| av网站免费线看精品| 欧美日韩三级一区二区| 久久久www成人免费无遮挡大片| 国产精品毛片大码女人| 日韩中文欧美在线| 成人中文字幕电影| 欧美日韩在线一区二区| 久久亚洲精华国产精华液 | 成人免费高清在线| 欧美三级一区二区| 国产亚洲精品7777| 日韩激情一区二区| 丁香五精品蜜臀久久久久99网站| 欧美日韩中文国产| 国产精品成人一区二区艾草| 麻豆高清免费国产一区| 色噜噜狠狠色综合中国| 国产欧美一区二区三区在线老狼| 亚洲国产综合91精品麻豆|