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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? 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;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲第一福利一区| 亚洲乱码国产乱码精品精的特点| 高清视频一区二区| 一区二区在线电影| 久久久久久久久99精品| 欧美美女直播网站| 99久久婷婷国产综合精品| 美女mm1313爽爽久久久蜜臀| 一区二区三区在线观看视频| 国产色一区二区| 欧美一区二区三区免费在线看| 色综合色综合色综合| 国产在线视视频有精品| 免费精品视频在线| 亚洲福中文字幕伊人影院| 国产精品天干天干在观线| 日韩精品一区在线| 欧美一区二区三区男人的天堂| 日本精品一区二区三区高清| 成人h精品动漫一区二区三区| 乱中年女人伦av一区二区| 亚洲成a人v欧美综合天堂| 自拍视频在线观看一区二区| 欧美高清在线视频| 久久久久久久综合| 久久九九久精品国产免费直播| 欧美一级xxx| 欧美一区二区在线观看| 欧美日韩一区三区四区| 色偷偷久久人人79超碰人人澡| 丁香婷婷综合激情五月色| 黑人精品欧美一区二区蜜桃| 蜜桃av一区二区在线观看| 青椒成人免费视频| 日本不卡在线视频| 欧美aaaaaa午夜精品| 午夜视频在线观看一区二区| 亚洲国产精品综合小说图片区| 亚洲精品写真福利| 亚洲资源中文字幕| 亚洲午夜免费电影| 视频在线观看国产精品| 日韩国产欧美在线播放| 毛片av一区二区| 国产一区二区三区av电影| 国产一区二区三区| 成人久久视频在线观看| 91亚洲精品久久久蜜桃| 色欲综合视频天天天| 欧美视频在线不卡| 欧美一区二区精品久久911| 日韩视频一区二区三区| 久久先锋影音av| 国产精品欧美久久久久无广告| 国产精品福利一区二区三区| 亚洲品质自拍视频网站| 性欧美疯狂xxxxbbbb| 久久疯狂做爰流白浆xx| 国产91精品一区二区| 91丨porny丨首页| 欧美三级视频在线观看| 欧美变态tickle挠乳网站| 国产亚洲欧美日韩在线一区| 亚洲男人天堂av网| 日产欧产美韩系列久久99| 国产一区二区福利视频| 一本久久a久久免费精品不卡| 欧美日韩国产另类一区| 久久久99精品久久| 亚洲精品va在线观看| 免费黄网站欧美| 成人深夜视频在线观看| 色欧美88888久久久久久影院| 欧美日本在线一区| 久久先锋影音av| 亚洲国产一区二区a毛片| 国产一区二区精品在线观看| 91麻豆123| 久久这里只有精品视频网| 一区二区三区美女视频| 精品综合免费视频观看| 91一区二区三区在线观看| 日韩色在线观看| 亚洲欧美在线视频| 美女视频一区在线观看| 91婷婷韩国欧美一区二区| 91精品国产福利| 亚洲日本一区二区| 国内成+人亚洲+欧美+综合在线 | 一区二区成人在线视频| 免费高清在线一区| 色哟哟一区二区| 精品国产99国产精品| 亚洲美女免费在线| 国产美女久久久久| 欧美高清dvd| 亚洲欧美一区二区三区久本道91| 秋霞国产午夜精品免费视频| 色婷婷香蕉在线一区二区| 久久女同性恋中文字幕| 日本va欧美va欧美va精品| 91啪亚洲精品| 国产欧美一区二区精品婷婷| 日韩精品视频网| 欧美亚洲动漫精品| 中文字幕在线视频一区| 精品一区二区久久久| 欧美婷婷六月丁香综合色| 亚洲婷婷综合色高清在线| 国产成人精品影视| 精品电影一区二区| 蜜桃av一区二区| 欧美精品日韩精品| 亚洲已满18点击进入久久| av在线播放不卡| 久久精品免费在线观看| 国产一区日韩二区欧美三区| 欧美精品123区| 视频一区二区国产| 欧美伦理视频网站| 亚洲一二三专区| 色综合久久中文综合久久97| 国产精品久久久久影院色老大| 国产成人超碰人人澡人人澡| 欧美精品一区二| 精品综合久久久久久8888| 欧美va亚洲va香蕉在线| 免费观看久久久4p| 日韩一区二区在线观看视频播放| 日日骚欧美日韩| 在线播放中文一区| 日韩二区三区在线观看| 在线不卡a资源高清| 日本成人在线电影网| 欧美一级专区免费大片| 美女视频第一区二区三区免费观看网站| 欧美天堂亚洲电影院在线播放| 一区二区三国产精华液| 欧洲国产伦久久久久久久| 一区二区免费看| 欧美日韩视频在线第一区| 亚洲成人精品一区二区| 91精品国产一区二区三区| 日本大胆欧美人术艺术动态| 精品毛片乱码1区2区3区| 国模套图日韩精品一区二区| 国产调教视频一区| 成人a级免费电影| 一区二区高清在线| 91精品在线一区二区| 麻豆91精品91久久久的内涵| 欧美r级电影在线观看| 国产福利91精品一区| 中文字幕在线一区免费| 欧美性感一类影片在线播放| 午夜精品福利一区二区蜜股av| 欧美一三区三区四区免费在线看| 乱中年女人伦av一区二区| 国产午夜精品一区二区三区四区| av电影天堂一区二区在线观看| 亚洲曰韩产成在线| 日韩一级黄色大片| 国产99久久久国产精品免费看| 亚洲欧美日韩成人高清在线一区| 欧美日韩另类一区| 国产一区二区三区在线看麻豆| 中文字幕一区二区三区在线播放| 91国产成人在线| 久久激情五月激情| 国产精品久久久久久一区二区三区| 91久久香蕉国产日韩欧美9色| 日韩专区一卡二卡| 久久精品一二三| 在线精品视频免费观看| 精品一区二区三区免费视频| 国产精品久久久一本精品| 在线播放91灌醉迷j高跟美女 | 91同城在线观看| 免费人成精品欧美精品| 国产精品理论片在线观看| 欧美日本一区二区| 高清不卡一二三区| 午夜在线电影亚洲一区| 中文字幕久久午夜不卡| 欧美精品 国产精品| 本田岬高潮一区二区三区| 五月天中文字幕一区二区| 中文字幕精品在线不卡| 91麻豆精品国产| 一本色道久久综合亚洲aⅴ蜜桃 | 91色在线porny| 久久99精品国产麻豆婷婷| 亚洲精品欧美二区三区中文字幕| 欧美一区二区三区精品| 99国产精品国产精品久久| 国产一区高清在线| 免费一级欧美片在线观看| 亚洲免费资源在线播放| 国产欧美日韩亚州综合| 日韩一区二区影院|