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

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

?? aodv.cc

?? ns-2 simulation code manet
?? CC
?? 第 1 頁 / 共 3 頁
字號:
     forward(rt0, p, NO_DELAY);     // Insert the nexthop towards the RREQ source to      // the precursor list of the RREQ destination     rt->pc_insert(rt0->rt_nexthop); // nexthop to RREQ source        }   else {   // I don't know how to forward .. drop the reply. #ifdef DEBUG     fprintf(stderr, "%s: dropping Route Reply\n", __FUNCTION__);#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);   /*    *  Jitter the sending of broadcast packets by 10ms    */   Scheduler::instance().schedule(target_, p,      				   0.01 * Random::uniform()); } 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; 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一区二区三区免费野_久草精品视频
99精品视频一区二区| 日韩高清一区在线| 91在线精品一区二区| 国产精品传媒视频| 91在线观看污| 亚洲综合图片区| 在线观看91av| 国产精品亚洲人在线观看| 国产精品电影院| 在线视频观看一区| 美女mm1313爽爽久久久蜜臀| 欧美激情一区二区三区全黄| 日本精品一区二区三区高清 | 亚洲免费视频成人| 日本道在线观看一区二区| 午夜视频在线观看一区| 精品黑人一区二区三区久久| 成人听书哪个软件好| 亚洲精品日日夜夜| 精品少妇一区二区三区视频免付费| 国产精品一区二区在线观看不卡 | 精品噜噜噜噜久久久久久久久试看 | 亚洲综合在线免费观看| 欧美顶级少妇做爰| 国产成人aaa| 亚洲亚洲精品在线观看| 欧美成人官网二区| 欧美专区亚洲专区| 激情综合网最新| 亚洲综合在线电影| 久久伊人蜜桃av一区二区| 色综合久久88色综合天天| 蜜桃一区二区三区在线观看| 国产精品看片你懂得| 91精品国产综合久久精品app| 国产电影精品久久禁18| 亚洲国产wwwccc36天堂| 欧美国产国产综合| 91精品免费观看| 99国产精品久久久久久久久久 | 欧美人妇做爰xxxⅹ性高电影| 国精产品一区一区三区mba桃花| 亚洲一区在线播放| 国产精品污污网站在线观看 | 日韩精品一区二区三区在线观看| 91最新地址在线播放| 老司机免费视频一区二区| 亚洲激情第一区| 欧美极品美女视频| 日韩视频在线观看一区二区| 欧美在线视频日韩| av在线一区二区| 国产成人午夜高潮毛片| 久久成人精品无人区| 亚洲成人av免费| 亚洲综合一区在线| 亚洲三级小视频| 国产人成亚洲第一网站在线播放| 日韩亚洲欧美高清| 7777精品伊人久久久大香线蕉超级流畅 | 欧美午夜精品久久久久久孕妇| 成人午夜免费电影| 国产主播一区二区| 蜜桃视频在线一区| 青青草91视频| 天堂影院一区二区| 亚洲一区二区精品3399| 日韩毛片在线免费观看| 国产精品久久久久一区二区三区 | 日欧美一区二区| 亚洲一级二级在线| 综合久久一区二区三区| 国产精品久久精品日日| 亚洲欧洲日本在线| 国产精品国产自产拍高清av| 中文无字幕一区二区三区| 国产欧美日韩另类视频免费观看 | 日韩精品影音先锋| 欧美tickling网站挠脚心| 欧美大片拔萝卜| 精品国内片67194| 久久久777精品电影网影网| 久久午夜色播影院免费高清| 久久色成人在线| 国产欧美日韩另类一区| 国产精品不卡一区二区三区| 国产精品国产精品国产专区不蜜| 亚洲欧洲一区二区在线播放| 亚洲免费看黄网站| 一区二区三区色| 视频一区中文字幕| 美女看a上一区| 国产成人亚洲综合a∨婷婷图片| 国产不卡免费视频| 91污片在线观看| 欧美情侣在线播放| 精品久久久久久久人人人人传媒| 2020国产精品久久精品美国| 国产精品你懂的在线欣赏| 亚洲精品国产一区二区精华液| 成人av午夜电影| 美女视频黄久久| 国产精品亚洲午夜一区二区三区 | 99久久er热在这里只有精品15| 欧美成人一区二区| 2欧美一区二区三区在线观看视频| 久久久亚洲综合| 亚洲欧美另类综合偷拍| 日日嗨av一区二区三区四区| 国产一区二区h| 99re热这里只有精品免费视频 | av亚洲精华国产精华精华| 欧美唯美清纯偷拍| 国产亚洲1区2区3区| 国产欧美一区二区三区在线看蜜臀| 亚洲天堂a在线| 美女一区二区在线观看| 波多野结衣中文字幕一区二区三区 | 日韩一区二区电影在线| 欧美国产综合一区二区| 天天亚洲美女在线视频| 丁香激情综合五月| 在线电影一区二区三区| 国产午夜亚洲精品午夜鲁丝片| 一区二区在线观看av| 国产一区二区三区免费看| 91精品福利视频| 久久精品一区二区三区不卡| 午夜欧美电影在线观看| 成人v精品蜜桃久久一区| 欧美一区午夜视频在线观看| 中文字幕中文字幕一区| 久久精品国产免费| 欧美羞羞免费网站| 欧美激情一区二区三区| 久久精品国产亚洲aⅴ| 欧美主播一区二区三区| 国产精品乱人伦中文| 老司机午夜精品| 7777精品伊人久久久大香线蕉 | 久久综合九色综合欧美98| 亚洲aaa精品| 色婷婷综合久久久| 国产三级欧美三级日产三级99 | 亚洲国产成人在线| 麻豆精品视频在线观看| 欧美日韩精品福利| 亚洲卡通欧美制服中文| 成人91在线观看| 国产日韩欧美精品电影三级在线| 日韩高清在线一区| 欧美日韩精品三区| 亚洲成人在线观看视频| 在线免费观看不卡av| 亚洲免费在线观看视频| 97精品久久久午夜一区二区三区 | 精品一区二区日韩| 欧美一区二区三区视频免费| 丝袜a∨在线一区二区三区不卡| 色综合久久久网| 亚洲三级小视频| 在线观看日韩电影| 亚洲最新视频在线播放| 欧美性视频一区二区三区| 一区二区三区国产精华| 日本精品视频一区二区| 一区二区三区高清在线| 欧美日韩在线不卡| 婷婷成人激情在线网| 69堂精品视频| 日本sm残虐另类| 欧美tickling网站挠脚心| 激情深爱一区二区| 久久综合九色综合欧美就去吻| 国产精品一区在线观看你懂的| 久久精品网站免费观看| 福利电影一区二区| 国产精品麻豆99久久久久久| 91在线观看一区二区| 一区二区三区欧美在线观看| 在线观看国产91| 日韩国产精品91| 久久久91精品国产一区二区精品 | 九九热在线视频观看这里只有精品| 精品对白一区国产伦| 国产精品一线二线三线| 亚洲色欲色欲www在线观看| 欧美性感一区二区三区| 美女视频一区在线观看| 欧美极品aⅴ影院| 日本高清成人免费播放| 日韩中文字幕1| 国产女同性恋一区二区| 欧美在线一二三四区| 麻豆精品视频在线观看免费| 中文字幕av不卡| 欧美日韩免费一区二区三区视频| 美女视频黄 久久| 国产精品乱码一区二三区小蝌蚪| 欧美午夜精品一区二区蜜桃|