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

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

?? aodv.cc

?? 此代碼是基于moav協議的qos改進代碼
?? CC
?? 第 1 頁 / 共 4 頁
字號:
/*Copyright (c) 1997, 1998 Carnegie Mellon University.  All RightsReserved. Permission to use, copy, modify, and distribute thissoftware and its documentation is hereby granted (including forcommercial or for-profit use), provided that both the copyright notice and this permission notice appear in all copies of the software, derivative works, or modified versions, and any portions thereof, and that both notices appear in supporting documentation, and that credit is given to Carnegie Mellon University in all publications reporting on direct or indirect use of this code or its derivatives.ALL CODE, SOFTWARE, PROTOCOLS, AND ARCHITECTURES DEVELOPED BY THE CMUMONARCH PROJECT ARE EXPERIMENTAL AND ARE KNOWN TO HAVE BUGS, SOME OFWHICH MAY HAVE SERIOUS CONSEQUENCES. CARNEGIE MELLON PROVIDES THISSOFTWARE OR OTHER INTELLECTUAL PROPERTY IN ITS ``AS IS'' CONDITION,AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULARPURPOSE ARE DISCLAIMED. IN NO EVENT SHALL CARNEGIE MELLON UNIVERSITYBE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, ORCONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OFSUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; ORBUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCEOR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE ORINTELLECTUAL PROPERTY, EVEN IF ADVISED OF THE POSSIBILITY OF SUCHDAMAGE.Carnegie Mellon encourages (but does not require) users of thissoftware or intellectual property to return any improvements orextensions that they make, and to grant Carnegie Mellon the rights to redistribute these changes without encumbrance.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);#ifdef MULTICAST      ntimer.handle((Event*) 0);      //grphtimer.handle((Event*) 0);#else#ifndef AODV_LINK_LAYER_DETECTION      htimer.handle((Event*) 0);      ntimer.handle((Event*) 0); #endif // LINK LAYER DETECTION#endif      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;    }    //add  by feelree     else if (strcasecmp (argv[1], "port-dmux") == 0) {        TclObject *obj;        port_dmux_ = (NsObject *) obj;        return TCL_OK;     }    //add end#ifdef MULTICAST    else if (strcmp(argv[1], "aodv-join-group") == 0){        nsaddr_t mcast_addr = atoi(argv[2]);        if (mcast_addr < IP_MULTICAST) return TCL_ERROR;        aodv_mt_entry *mt = mtable.mt_lookup(mcast_addr);        if (mt == 0) mt = mtable.mt_add(mcast_addr);        if (mt->mt_node_status == ON_GROUP){            return TCL_OK;        }        if (mt->mt_node_status == ON_TREE){            mt->mt_node_status = ON_GROUP;            return TCL_OK;        }        // node is not on the tree        mt->mt_flags = MTF_IN_REPAIR;        mt->mt_grp_leader_addr = INFINITY8;        mt->mt_node_status = ON_GROUP;         sendMRQ(mt, RREQ_J);        return TCL_OK;    }    else if (strcmp(argv[1], "aodv-leave-group") == 0){        nsaddr_t mcast_addr = atoi(argv[2]);        if (mcast_addr < IP_MULTICAST) return TCL_ERROR;        aodv_mt_entry *mt = mtable.mt_lookup(mcast_addr);        if (mt == 0 || mt->mt_node_status != ON_GROUP) return TCL_OK;        if (mt->mt_grp_leader_addr != index) mt_prune(mt->mt_dst);        else {            mt->mt_node_status = ON_TREE;            mt->mt_grp_leader_addr = INFINITY8;            selectLeader(mt, INFINITY8);        }        return TCL_OK;    }    #endif  }  return Agent::command(argc, argv);}/*    Constructor*/AODV::AODV(nsaddr_t id) : Agent(PT_AODV),			  btimer(this), htimer(this), grphtimer(this),ntimer(this), 			  rtimer(this), lrtimer(this), 			                            /*** added for multicast ***/			   rtetimer(this),			  prune_timer(this), p_timer(this),rqueue(), port_dmux_(0)                           /***************************/{                   index = id;  seqno = 2;  bid = 1;  LIST_INIT(&nbhead);  LIST_INIT(&bihead);#ifdef MULTICAST  hello_timeout = 0;  LIST_INIT(&pihead);  sendHello();#endif  logtarget = 0;  ifqueue = 0;}/*  Timers*/voidBroadcastTimer::handle(Event*) {  agent->id_purge();  Scheduler::instance().schedule(this, &intr, BCAST_ID_SAVE);}voidHelloTimer::handle(Event* p) {#ifdef MULTICAST   Packet::free((Packet *)p);   agent->sendHello();#else   agent->sendHello();   double interval = MinHelloInterval +                 ((MaxHelloInterval - MinHelloInterval) * Random::uniform());   assert(interval >= 0);   Scheduler::instance().schedule(this, &intr, interval);#endif}voidNeighborTimer::handle(Event*) {  agent->nb_purge();#ifdef MULTICAST#ifdef PREDICTION  agent->mt_link_purge();#endif  Scheduler::instance().schedule(this, &intr, 0.5);#else  Scheduler::instance().schedule(this, &intr, HELLO_INTERVAL);#endif}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_;#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 IMPROVEMENT  if (rt->rt_flags != RTF_DOWN && rt->rt_nexthop != ch->next_hop_){    ch->next_hop_ = rt->rt_nexthop;    Scheduler::instance().schedule(target_, p, 0.);    return;   }#endif#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	  {#ifdef IMPROVEMENT     if (rt->rt_flags != RTF_DOWN &&         (rt->rt_retry_pid < ch->uid() || rt->rt_retry_times == 0)){            if (rt->rt_retry_times == 0) rt->rt_retry_times = 1;       if (rt->rt_retry_pid < ch->uid()) rt->rt_retry_pid = ch->uid();       ch->next_hop_ = rt->rt_nexthop;       Scheduler::instance().schedule(target_, p, 0.);       return;     }#endif    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);#ifdef MULTICAST    handle_link_failure(broken_nbr);#endif  }#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); #ifndef MULTICAST     rt->rt_seqno++;#endif     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 

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲在线视频网站| 中文天堂在线一区| 日韩国产高清在线| 欧美顶级少妇做爰| 国模套图日韩精品一区二区| 欧美v亚洲v综合ⅴ国产v| 韩国三级中文字幕hd久久精品| 精品国产乱码久久久久久夜甘婷婷 | 国产一区二区三区不卡在线观看| 精品国产精品网麻豆系列| 国产一区二区三区国产| 国产精品久久福利| 欧美日韩五月天| 黄一区二区三区| 中文字幕一区在线观看视频| 日本伦理一区二区| 欧美96一区二区免费视频| 国产人成亚洲第一网站在线播放| 99精品视频在线观看免费| 亚洲va韩国va欧美va精品| 欧美mv和日韩mv国产网站| 成人h动漫精品| 亚洲成av人片在线| 欧美激情综合网| 欧美日韩一区二区三区视频| 韩国av一区二区三区四区| 亚洲天堂成人在线观看| 日韩午夜激情av| 99视频精品在线| 蜜臀av一区二区| 亚洲色欲色欲www| 精品国产成人系列| 欧美影院一区二区三区| 国产麻豆精品95视频| 亚洲一区二区三区在线看| 久久先锋影音av| 欧美精品在欧美一区二区少妇| 国产精品综合网| 国产精品中文字幕日韩精品| 亚洲视频狠狠干| 久久久久久久久久久黄色| 欧美午夜免费电影| 成人高清在线视频| 国产在线播放一区三区四| 亚洲一区免费在线观看| 久久精品免视看| 欧美一区二区在线观看| 色哟哟一区二区在线观看| 国内精品国产成人| 午夜精品久久久久久| 国产精品家庭影院| 久久久久国产精品厨房| 7777精品伊人久久久大香线蕉完整版 | av中文一区二区三区| 久久国产精品99精品国产 | 国产精品网站导航| 精品国产在天天线2019| 91福利视频在线| av一区二区三区在线| 欧美精品第一页| 91国偷自产一区二区三区成为亚洲经典 | 久久综合999| 日韩三级视频在线看| 欧美日韩中文字幕一区二区| 一本色道久久综合狠狠躁的推荐| 国产精品一级在线| 国产在线精品一区二区不卡了 | 精品国产乱码久久久久久久久| 欧美日韩成人综合在线一区二区| 色综合 综合色| 成人动漫一区二区在线| 大胆亚洲人体视频| 成人福利电影精品一区二区在线观看| 国内精品国产成人国产三级粉色| 麻豆传媒一区二区三区| 日韩av中文字幕一区二区三区| 亚洲最新在线观看| 依依成人精品视频| 亚洲尤物视频在线| 天天av天天翘天天综合网 | 日本一区二区不卡视频| 国产欧美日韩另类一区| 日本一区二区三区dvd视频在线| 久久亚洲影视婷婷| 中文字幕av不卡| 亚洲视频免费在线| 亚洲一区二区在线观看视频| 亚洲成人av资源| 美女脱光内衣内裤视频久久网站| 蜜桃视频在线一区| 国产a久久麻豆| 97久久精品人人做人人爽50路 | 欧美久久一二三四区| 欧美一区二区成人6969| 日韩免费视频一区二区| 国产亚洲精品bt天堂精选| 国产精品美女一区二区在线观看| 自拍偷自拍亚洲精品播放| 亚洲欧美乱综合| 日韩av一二三| 国产福利视频一区二区三区| av电影一区二区| 欧美日韩高清不卡| 久久美女高清视频| 亚洲精品国产无套在线观| 午夜精品福利一区二区三区av| 另类专区欧美蜜桃臀第一页| 国产ts人妖一区二区| 欧洲亚洲精品在线| 欧美大片免费久久精品三p| 日本一区二区免费在线| 亚洲黄色小说网站| 六月丁香综合在线视频| 97久久超碰国产精品电影| 7777精品伊人久久久大香线蕉| 国产亚洲精品福利| 午夜av电影一区| 成人福利视频网站| 日韩精品一区二区三区中文不卡| 日韩一区欧美一区| 另类的小说在线视频另类成人小视频在线| 成人性视频免费网站| 欧美午夜精品免费| 国产欧美一区二区精品婷婷| 亚洲电影一级片| www.在线欧美| 久久久久久久久一| 日本va欧美va精品| 91麻豆123| 久久精品夜色噜噜亚洲aⅴ| 亚洲成人免费在线| 成人av电影在线播放| 精品国产麻豆免费人成网站| 亚洲va欧美va国产va天堂影院| 成人激情动漫在线观看| 日韩欧美一区中文| 亚洲国产一二三| av在线综合网| 国产欧美日韩另类视频免费观看| 青青青爽久久午夜综合久久午夜| 99re亚洲国产精品| 国产精品天美传媒沈樵| 黄页网站大全一区二区| 欧美一级在线视频| 亚洲一区二区三区四区在线观看| 国产超碰在线一区| 久久久久亚洲蜜桃| 免费高清视频精品| 欧美日韩成人高清| 亚洲一区二区三区四区不卡| 91在线观看下载| 综合av第一页| 99re亚洲国产精品| 亚洲色大成网站www久久九九| 高清国产一区二区| 国产亲近乱来精品视频| 国产一区二区视频在线| 日韩一区二区三区视频在线 | 亚洲人快播电影网| 91在线小视频| 1024精品合集| 一本大道综合伊人精品热热| 国产精品成人免费精品自在线观看| 国产一区二区美女| 欧美精品一区二区三区蜜桃| 蜜桃视频一区二区三区| 日韩欧美一区中文| 韩日精品视频一区| 亚洲国产岛国毛片在线| 国产成人综合精品三级| 国产欧美日韩三级| 99国产精品久| 亚洲一二三专区| 制服丝袜日韩国产| 久久福利资源站| 日本一区二区动态图| fc2成人免费人成在线观看播放| 中文字幕在线不卡一区二区三区| 成人白浆超碰人人人人| 一区二区在线观看av| 欧美性大战久久久久久久| 午夜视黄欧洲亚洲| 精品伦理精品一区| 成人高清免费观看| 亚洲一区二区三区小说| 日韩三级视频在线看| 国产专区综合网| 日韩美女视频一区| 777亚洲妇女| 国产福利精品一区| 一区二区三区四区五区视频在线观看| 欧美色爱综合网| 理论电影国产精品| 中文字幕永久在线不卡| 欧美猛男男办公室激情| 国产原创一区二区| 亚洲免费在线看| 日韩欧美国产精品一区| 粉嫩在线一区二区三区视频| 亚洲黄色在线视频|