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

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

?? aodv.cc

?? 用于無線傳感器網絡按需距離向量路由協議仿真的aodv代碼
?? CC
?? 第 1 頁 / 共 3 頁
字號:
#endif // DEBUG     drop(p, DROP_RTR_NO_ROUTE);   } }}voidAODV::recvError(Packet *p) {struct hdr_ip *ih = HDR_IP(p);struct hdr_aodv_error *re = HDR_AODV_ERROR(p);aodv_rt_entry *rt;u_int8_t i;Packet *rerr = Packet::alloc();struct hdr_aodv_error *nre = HDR_AODV_ERROR(rerr); nre->DestCount = 0; for (i=0; i<re->DestCount; i++) { // For each unreachable destination   rt = rtable.rt_lookup(re->unreachable_dst[i]);   if ( rt && (rt->rt_hops != INFINITY2) &&	(rt->rt_nexthop == ih->saddr()) &&     	(rt->rt_seqno <= re->unreachable_dst_seqno[i]) ) {	assert(rt->rt_flags == RTF_UP);	assert((rt->rt_seqno%2) == 0); // is the seqno even?#ifdef DEBUG     fprintf(stderr, "%s(%f): %d\t(%d\t%u\t%d)\t(%d\t%u\t%d)\n", __FUNCTION__,CURRENT_TIME,		     index, rt->rt_dst, rt->rt_seqno, rt->rt_nexthop,		     re->unreachable_dst[i],re->unreachable_dst_seqno[i],	             ih->saddr());#endif // DEBUG     	rt->rt_seqno = re->unreachable_dst_seqno[i];     	rt_down(rt);   // Not sure whether this is the right thing to do   Packet *pkt;	while((pkt = ifqueue->filter(ih->saddr()))) {        	drop(pkt, DROP_RTR_MAC_CALLBACK);     	}     // if precursor list non-empty add to RERR and delete the precursor list     	if (!rt->pc_empty()) {     		nre->unreachable_dst[nre->DestCount] = rt->rt_dst;     		nre->unreachable_dst_seqno[nre->DestCount] = rt->rt_seqno;     		nre->DestCount += 1;		rt->pc_delete();     	}   } }  if (nre->DestCount > 0) {#ifdef DEBUG   fprintf(stderr, "%s(%f): %d\t sending RERR...\n", __FUNCTION__, CURRENT_TIME, index);#endif // DEBUG   sendError(rerr); } else {   Packet::free(rerr); } Packet::free(p);}/*   Packet Transmission Routines*/voidAODV::forward(aodv_rt_entry *rt, Packet *p, double delay) {struct hdr_cmn *ch = HDR_CMN(p);struct hdr_ip *ih = HDR_IP(p); if(ih->ttl_ == 0) {#ifdef DEBUG  fprintf(stderr, "%s: calling drop()\n", __PRETTY_FUNCTION__);#endif // DEBUG   drop(p, DROP_RTR_TTL);  return; } if (ch->ptype() != PT_AODV && ch->direction() == hdr_cmn::UP &&	((u_int32_t)ih->daddr() == IP_BROADCAST)		|| (ih->daddr() == here_.addr_)) {	dmux_->recv(p,0);	return; } if (rt) {   assert(rt->rt_flags == RTF_UP);   rt->rt_expire = CURRENT_TIME + ACTIVE_ROUTE_TIMEOUT;   ch->next_hop_ = rt->rt_nexthop;   ch->addr_type() = NS_AF_INET;   ch->direction() = hdr_cmn::DOWN;       //important: change the packet's direction } else { // if it is a broadcast packet   // assert(ch->ptype() == PT_AODV); // maybe a diff pkt type like gaf   assert(ih->daddr() == (nsaddr_t) IP_BROADCAST);   ch->addr_type() = NS_AF_NONE;   ch->direction() = hdr_cmn::DOWN;       //important: change the packet's direction }if (ih->daddr() == (nsaddr_t) IP_BROADCAST) { // If it is a broadcast packet   assert(rt == 0);   if (ch->ptype() == PT_AODV) {     /*      *  Jitter the sending of AODV broadcast packets by 10ms      */     Scheduler::instance().schedule(target_, p,      				   0.01 * Random::uniform());   } else {     Scheduler::instance().schedule(target_, p, 0.);  // No jitter   } } else { // Not a broadcast packet    if(delay > 0.0) {     Scheduler::instance().schedule(target_, p, delay);   }   else {   // Not a broadcast packet, no delay, send immediately     Scheduler::instance().schedule(target_, p, 0.);   } }}voidAODV::sendRequest(nsaddr_t dst) {// Allocate a RREQ packet Packet *p = Packet::alloc();struct hdr_cmn *ch = HDR_CMN(p);struct hdr_ip *ih = HDR_IP(p);struct hdr_aodv_request *rq = HDR_AODV_REQUEST(p);aodv_rt_entry *rt = rtable.rt_lookup(dst); assert(rt); /*  *  Rate limit sending of Route Requests. We are very conservative  *  about sending out route requests.   */ if (rt->rt_flags == RTF_UP) {   assert(rt->rt_hops != INFINITY2);   Packet::free((Packet *)p);   return; } if (rt->rt_req_timeout > CURRENT_TIME) {   Packet::free((Packet *)p);   return; } // rt_req_cnt is the no. of times we did network-wide broadcast // RREQ_RETRIES is the maximum number we will allow before  // going to a long timeout. if (rt->rt_req_cnt > RREQ_RETRIES) {   rt->rt_req_timeout = CURRENT_TIME + MAX_RREQ_TIMEOUT;   rt->rt_req_cnt = 0; Packet *buf_pkt;   while ((buf_pkt = rqueue.deque(rt->rt_dst))) {       drop(buf_pkt, DROP_RTR_NO_ROUTE);   }   Packet::free((Packet *)p);   return; }#ifdef DEBUG   fprintf(stderr, "(%2d) - %2d sending Route Request, dst: %d\n",                    ++route_request, index, rt->rt_dst);#endif // DEBUG // Determine the TTL to be used this time.  // Dynamic TTL evaluation - SRD rt->rt_req_last_ttl = max(rt->rt_req_last_ttl,rt->rt_last_hop_count); if (0 == rt->rt_req_last_ttl) { // first time query broadcast   ih->ttl_ = TTL_START; } else { // Expanding ring search.   if (rt->rt_req_last_ttl < TTL_THRESHOLD)     ih->ttl_ = rt->rt_req_last_ttl + TTL_INCREMENT;   else {   // network-wide broadcast     ih->ttl_ = NETWORK_DIAMETER;     rt->rt_req_cnt += 1;   } } // remember the TTL used  for the next time rt->rt_req_last_ttl = ih->ttl_; // PerHopTime is the roundtrip time per hop for route requests. // The factor 2.0 is just to be safe .. SRD 5/22/99 // Also note that we are making timeouts to be larger if we have  // done network wide broadcast before.  rt->rt_req_timeout = 2.0 * (double) ih->ttl_ * PerHopTime(rt);  if (rt->rt_req_cnt > 0)   rt->rt_req_timeout *= rt->rt_req_cnt; rt->rt_req_timeout += CURRENT_TIME; // Don't let the timeout to be too large, however .. SRD 6/8/99 if (rt->rt_req_timeout > CURRENT_TIME + MAX_RREQ_TIMEOUT)   rt->rt_req_timeout = CURRENT_TIME + MAX_RREQ_TIMEOUT; rt->rt_expire = 0;#ifdef DEBUG fprintf(stderr, "(%2d) - %2d sending Route Request, dst: %d, tout %f ms\n",	         ++route_request, 		 index, rt->rt_dst, 		 rt->rt_req_timeout - CURRENT_TIME);#endif	// DEBUG	 // Fill out the RREQ packet  // ch->uid() = 0; ch->ptype() = PT_AODV; ch->size() = IP_HDR_LEN + rq->size(); ch->iface() = -2; ch->error() = 0; ch->addr_type() = NS_AF_NONE; ch->prev_hop_ = index;          // AODV hack ih->saddr() = index; ih->daddr() = IP_BROADCAST; ih->sport() = RT_PORT; ih->dport() = RT_PORT; // Fill up some more fields.  rq->rq_type = AODVTYPE_RREQ; rq->rq_hop_count = 1; rq->rq_bcast_id = bid++; rq->rq_dst = dst; rq->rq_dst_seqno = (rt ? rt->rt_seqno : 0); rq->rq_src = index; seqno += 2; assert ((seqno%2) == 0); rq->rq_src_seqno = seqno; rq->rq_timestamp = CURRENT_TIME; Scheduler::instance().schedule(target_, p, 0.);}voidAODV::sendReply(nsaddr_t ipdst, u_int32_t hop_count, nsaddr_t rpdst,                u_int32_t rpseq, u_int32_t lifetime, double timestamp) {Packet *p = Packet::alloc();struct hdr_cmn *ch = HDR_CMN(p);struct hdr_ip *ih = HDR_IP(p);struct hdr_aodv_reply *rp = HDR_AODV_REPLY(p);aodv_rt_entry *rt = rtable.rt_lookup(ipdst);#ifdef DEBUGfprintf(stderr, "sending Reply from %d at %.2f\n", index, Scheduler::instance().clock());#endif // DEBUG assert(rt); rp->rp_type = AODVTYPE_RREP; //rp->rp_flags = 0x00; rp->rp_hop_count = hop_count; rp->rp_dst = rpdst; rp->rp_dst_seqno = rpseq; //******************************************************// //rp->rp_src = index;                                    //Bug fix from Riadh rp->rp_src = ipdst; //******************************************************// rp->rp_lifetime = lifetime; rp->rp_timestamp = timestamp;    // ch->uid() = 0; ch->ptype() = PT_AODV; ch->size() = IP_HDR_LEN + rp->size(); ch->iface() = -2; ch->error() = 0; ch->addr_type() = NS_AF_INET; ch->next_hop_ = rt->rt_nexthop; ch->prev_hop_ = index;          // AODV hack ch->direction() = hdr_cmn::DOWN; ih->saddr() = index; ih->daddr() = ipdst; ih->sport() = RT_PORT; ih->dport() = RT_PORT; ih->ttl_ = NETWORK_DIAMETER; Scheduler::instance().schedule(target_, p, 0.);}voidAODV::sendError(Packet *p, bool jitter) {struct hdr_cmn *ch = HDR_CMN(p);struct hdr_ip *ih = HDR_IP(p);struct hdr_aodv_error *re = HDR_AODV_ERROR(p);    #ifdef ERRORfprintf(stderr, "sending Error from %d at %.2f\n", index, Scheduler::instance().clock());#endif // DEBUG re->re_type = AODVTYPE_RERR; //re->reserved[0] = 0x00; re->reserved[1] = 0x00; // DestCount and list of unreachable destinations are already filled // ch->uid() = 0; ch->ptype() = PT_AODV; ch->size() = IP_HDR_LEN + re->size(); ch->iface() = -2; ch->error() = 0; ch->addr_type() = NS_AF_NONE; ch->next_hop_ = 0; ch->prev_hop_ = index;          // AODV hack ch->direction() = hdr_cmn::DOWN;       //important: change the packet's direction ih->saddr() = index; ih->daddr() = IP_BROADCAST; ih->sport() = RT_PORT; ih->dport() = RT_PORT; ih->ttl_ = 1; // Do we need any jitter? Yes if (jitter) 	Scheduler::instance().schedule(target_, p, 0.01*Random::uniform()); else 	Scheduler::instance().schedule(target_, p, 0.0);}/*   Neighbor Management Functions*/voidAODV::sendHello() {Packet *p = Packet::alloc();struct hdr_cmn *ch = HDR_CMN(p);struct hdr_ip *ih = HDR_IP(p);struct hdr_aodv_reply *rh = HDR_AODV_REPLY(p);#ifdef DEBUGfprintf(stderr, "sending Hello from %d at %.2f\n", index, Scheduler::instance().clock());#endif // DEBUG rh->rp_type = AODVTYPE_HELLO; //rh->rp_flags = 0x00; rh->rp_hop_count = 1; rh->rp_dst = index; rh->rp_dst_seqno = seqno; rh->rp_lifetime = (1 + ALLOWED_HELLO_LOSS) * HELLO_INTERVAL; // ch->uid() = 0; ch->ptype() = PT_AODV; ch->size() = IP_HDR_LEN + rh->size(); ch->iface() = -2; ch->error() = 0; ch->addr_type() = NS_AF_NONE; ch->prev_hop_ = index;          // AODV hack ih->saddr() = index; ih->daddr() = IP_BROADCAST; ih->sport() = RT_PORT; ih->dport() = RT_PORT; ih->ttl_ = 1; Scheduler::instance().schedule(target_, p, 0.0);}voidAODV::recvHello(Packet *p) {//struct hdr_ip *ih = HDR_IP(p);struct hdr_aodv_reply *rp = HDR_AODV_REPLY(p);AODV_Neighbor *nb; nb = nb_lookup(rp->rp_dst); if(nb == 0) {   nb_insert(rp->rp_dst); } else {   nb->nb_expire = CURRENT_TIME +                   (1.5 * ALLOWED_HELLO_LOSS * HELLO_INTERVAL); } Packet::free(p);}voidAODV::nb_insert(nsaddr_t id) {AODV_Neighbor *nb = new AODV_Neighbor(id); assert(nb); nb->nb_expire = CURRENT_TIME +                (1.5 * ALLOWED_HELLO_LOSS * HELLO_INTERVAL); LIST_INSERT_HEAD(&nbhead, nb, nb_link); seqno += 2;             // set of neighbors changed assert ((seqno%2) == 0);}AODV_Neighbor*AODV::nb_lookup(nsaddr_t id) {AODV_Neighbor *nb = nbhead.lh_first; for(; nb; nb = nb->nb_link.le_next) {   if(nb->nb_addr == id) break; } return nb;}/* * Called when we receive *explicit* notification that a Neighbor * is no longer reachable. */voidAODV::nb_delete(nsaddr_t id) {AODV_Neighbor *nb = nbhead.lh_first; log_link_del(id); seqno += 2;     // Set of neighbors changed assert ((seqno%2) == 0); for(; nb; nb = nb->nb_link.le_next) {   if(nb->nb_addr == id) {     LIST_REMOVE(nb,nb_link);     delete nb;     break;   } } handle_link_failure(id);}/* * Purges all timed-out Neighbor Entries - runs every * HELLO_INTERVAL * 1.5 seconds. */voidAODV::nb_purge() {AODV_Neighbor *nb = nbhead.lh_first;AODV_Neighbor *nbn;double now = CURRENT_TIME; for(; nb; nb = nbn) {   nbn = nb->nb_link.le_next;   if(nb->nb_expire <= now) {     nb_delete(nb->nb_addr);   } }}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
91亚洲永久精品| 久久国产欧美日韩精品| 午夜一区二区三区视频| 免费在线看成人av| 国产99久久久国产精品潘金| 在线观看91精品国产入口| 91精品国产黑色紧身裤美女| 久久免费的精品国产v∧| 亚洲男同1069视频| 久久er精品视频| 99视频在线观看一区三区| 欧美日韩激情一区二区三区| 国产午夜精品理论片a级大结局| 亚洲美女电影在线| 天天综合天天综合色| 成人晚上爱看视频| 欧美日韩中文另类| 国产日韩在线不卡| 亚洲va国产天堂va久久en| 国产xxx精品视频大全| 91官网在线免费观看| 26uuu国产一区二区三区| 一区二区三区免费网站| 国产米奇在线777精品观看| 色婷婷狠狠综合| 国产香蕉久久精品综合网| 亚洲午夜av在线| 国产九色sp调教91| 欧美日本国产一区| 中文字幕的久久| 久久激情五月婷婷| 欧美午夜一区二区三区 | 亚洲国产成人porn| 国产精品18久久久久久久久 | 亚洲午夜免费福利视频| 国产传媒欧美日韩成人| 欧美日韩国产精品自在自线| 日本一区二区不卡视频| 美国av一区二区| 欧美日韩一区二区在线观看视频| 久久久久亚洲综合| 蜜臀av一区二区在线免费观看| 在线精品视频免费观看| 最新中文字幕一区二区三区| 国产精品羞羞答答xxdd| 日韩免费视频一区二区| 三级成人在线视频| 欧美色图免费看| 亚洲精品中文在线| 成人性生交大片免费| 久久精品视频网| 精品一区二区免费在线观看| 欧美剧情电影在线观看完整版免费励志电影 | 一区二区成人在线观看| 成人国产精品免费观看动漫| 久久久精品国产免大香伊 | 日本一区二区成人| 国产一区中文字幕| 精品日韩在线观看| 日本不卡不码高清免费观看| 欧美日韩精品欧美日韩精品| 亚洲国产日韩a在线播放性色| 欧美乱妇15p| 亚洲大片精品永久免费| 欧美中文字幕不卡| 亚洲精品国产成人久久av盗摄| 国产91精品精华液一区二区三区| 亚洲精品一区在线观看| 国模娜娜一区二区三区| 欧美va亚洲va在线观看蝴蝶网| 久久精品国产一区二区三 | 国产成人精品免费在线| 久久噜噜亚洲综合| 国产传媒一区在线| 国产精品视频你懂的| 国产高清精品久久久久| 久久久国产精品午夜一区ai换脸| 国产老肥熟一区二区三区| 久久精品视频在线看| 福利一区二区在线观看| 中文字幕第一区第二区| 99国产精品国产精品毛片| 亚洲视频免费观看| 在线观看av一区| 午夜欧美在线一二页| 91精品国产日韩91久久久久久| 奇米影视7777精品一区二区| 日韩一区二区影院| 国产麻豆成人传媒免费观看| 国产精品麻豆一区二区| 91色视频在线| 婷婷一区二区三区| 精品乱码亚洲一区二区不卡| 国产98色在线|日韩| 亚洲色图丝袜美腿| 欧美日韩精品欧美日韩精品一 | 久久久久久9999| www.欧美亚洲| 一区二区三区国产| 欧美一区午夜精品| 国产精品一卡二卡在线观看| 亚洲图片激情小说| 欧美伊人精品成人久久综合97| 日日摸夜夜添夜夜添亚洲女人| 久久毛片高清国产| 91在线国产福利| 香蕉久久夜色精品国产使用方法 | 国产一区二区伦理| 国产精品无人区| 精品污污网站免费看| 久久99精品久久只有精品| 一色桃子久久精品亚洲| 欧美喷潮久久久xxxxx| 国产精品小仙女| 亚洲国产精品久久人人爱| 精品福利在线导航| 色综合色综合色综合| 麻豆freexxxx性91精品| 亚洲欧洲av一区二区三区久久| 欧美美女视频在线观看| 国产精品亚洲а∨天堂免在线| 亚洲一区视频在线观看视频| 精品99999| 欧美在线视频日韩| 国内精品久久久久影院一蜜桃| 亚洲裸体xxx| 精品国产乱码久久久久久影片| 99精品久久99久久久久| 久久精工是国产品牌吗| 亚洲码国产岛国毛片在线| 久久免费的精品国产v∧| 欧美三级视频在线观看| 高清在线观看日韩| 热久久国产精品| 日韩一区有码在线| 欧美mv日韩mv亚洲| 欧美曰成人黄网| 成人一级片网址| 蜜臀av一区二区| 一区二区三区高清在线| 亚洲国产精品传媒在线观看| 日韩欧美三级在线| 欧美中文字幕一区| a级高清视频欧美日韩| 国产精品自拍av| 青青草97国产精品免费观看| 亚洲天堂网中文字| 久久久久88色偷偷免费 | 韩国三级电影一区二区| 图片区小说区国产精品视频| 中文字幕一区二区不卡| 精品久久久久久最新网址| 精品婷婷伊人一区三区三| 99久久国产综合精品麻豆| 国产一区二区三区免费| 首页国产丝袜综合| 一区二区三区在线免费观看| 中文字幕的久久| 精品人伦一区二区色婷婷| 6080yy午夜一二三区久久| 欧美午夜理伦三级在线观看| 色综合色综合色综合色综合色综合 | 欧美一级二级在线观看| 欧美日韩视频专区在线播放| 色综合一个色综合| 成人av在线电影| 国产成人综合网| 国产一区二区三区综合| 精久久久久久久久久久| 久久99精品国产91久久来源| 青青草精品视频| 亚洲va韩国va欧美va| 亚洲国产一二三| 亚洲在线视频免费观看| 亚洲欧美激情视频在线观看一区二区三区 | 午夜精品福利一区二区蜜股av| 亚洲免费大片在线观看| 国产精品国产三级国产aⅴ中文| 国产欧美精品一区二区三区四区 | 久久久久久久久久久电影| 精品国精品国产尤物美女| 欧美一区二区在线观看| 欧美一级二级三级乱码| 91精品国产综合久久精品app | 韩国女主播成人在线观看| 久久不见久久见免费视频7| 蜜臀av性久久久久av蜜臀妖精| 免费成人性网站| 久久精品国产亚洲a| 久久成人精品无人区| 九九国产精品视频| 国产在线精品一区二区不卡了| 国内不卡的二区三区中文字幕 | 中文字幕不卡一区| ...av二区三区久久精品| 亚洲黄色录像片| 丝袜诱惑亚洲看片| 久久国产精品色| 丁香婷婷综合五月| jlzzjlzz欧美大全|