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

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

?? bcast.cc

?? code that can compile NS-2.27 on Fedora Core 4
?? CC
?? 第 1 頁 / 共 2 頁
字號:
#ifdef DEBUG	fprintf(stderr, "Node %d: Processing neighbor info for neighbor %d\n",		index, bh->src);#endif	bcast_queue.process(ih->saddr(), ch->uid(), nb->nb_no_of_neighbors,		nb->nb_neighbors); } // check whether received packet is in response to a NACK and cancel // pending NACK timer nacktimer.cancel_nack_timer(src, seqno); // check whether received packet allows us to drop a pending retransmission rtxtimer.cancel_rtx_timer(src, seqno); if(ih->ttl_ == 0) {#ifdef DEBUG  fprintf(stderr, "Node %d: calling drop() (TTL expired)\n", index);#endif // DEBUG   drop(p, DROP_RTR_TTL);  return; } if (uid_handler.id_lookup(src, seqno)) {#ifdef DEBUG   fprintf(stderr, "Node %d: discarding packet (not first time)\n", index);#endif   Packet::free(p);   return; }#ifdef RELIABLE // we also check whether we received previous packet (based on cached // unique IDs....) if (seqno > 0 && !uid_handler.id_lookup(src, seqno-1)) {#ifdef DEBUG   fprintf(stderr, "Node %d: missed packet (%d,%d) at %f, NACK it\n",     index, src, seqno-1, CURRENT_TIME);#endif   if (nacktimer.control_nack_flood())   	sendNack(src,seqno-1); }#endif /*  * Check whether this packet belongs to a multicast group   * this node subscribed to?  */ mt = mtable.mt_lookup(ih->daddr()); if (mt) {   // Need to make a copy of the packet   Packet *p_new = p->copy();   struct hdr_cmn *ch_new = HDR_CMN(p_new);#ifdef PIGGYBACK_HELLO   struct hdr_bcast *bh_new = HDR_BCAST(p);#endif   ch_new->addr_type() = NS_AF_INET;   ch_new->direction() = hdr_cmn::UP;   struct hdr_ip *ih_new = HDR_IP(p_new);#ifdef PIGGYBACK_HELLO   // "strip" BCAST header and make it a "regular" packet again   ch_new->size() -= BCAST_HDR_LEN;   ch_new->ptype() = bh_new->old_type;#endif   // "strip" the IP header...   ch_new->size() -= IP_HDR_LEN;   // send to "myself" at port 0    // (assume that receiving NULL agent sits there...)   ih_new->daddr() = index;   ih_new->dport() = 0;   // pass packet to Link Layer, from where it will be passed up the stack to   // agent at port 0 (routing agent cannot directly pass packets up the stack   // unless we emulate the way DSR agents are linked in the protocol stack)   Scheduler::instance().schedule(target_, p_new, 0.); }  /*  * Cache the packet ID  */ uid_handler.id_insert(src, seqno); ch->addr_type() = NS_AF_ILINK; // allows us to force MAC broadcast  ch->direction() = hdr_cmn::DOWN; //important: change the packet's direction /* force MAC broadcast, bypassing ARP etc. Better than IP broadcast, which    would override IP destination address */ ch->next_hop_ = MAC_BROADCAST; /*  * Cache the packet itself (neighbourhood information will be filled in  * when the cached copy will be retransmitted, but it is important that  * the direction etc. have been set, so the packet is ready to go....  */ p_cache.packet_insert(p); /*  * determine and save my neighborhood information, minus sender of packet  */ int count = 0; nb = nbhead.lh_first; for(; nb; nb = nb->nb_link.le_next) {	// skip sender of packet	if (ch->prev_hop_ != nb->nb_addr) {		neighbors[count++] = nb->nb_addr;	} } no_of_neighbors = count; /*  * if we originate that packet or do not have neighbor info  * there is no need to process this further  */ if (ih->saddr() != index && ((nb = nb_lookup(ch->prev_hop_)) != NULL)) {	// eliminate all neighbors that are also covered by sender...#ifdef DEBUG	fprintf(stderr, "Node %d: eliminate known neighbors of %d\n", 		index, ch->prev_hop_);#endif	for (int i = 0; i < nb->nb_no_of_neighbors; i++) {		for (int j = 0; j < no_of_neighbors; j++) {			if (neighbors[j] == nb->nb_neighbors[i]) {				for (int l = j+1; l < no_of_neighbors; l++) {					neighbors[l-1] = neighbors[l];				}				no_of_neighbors--;				break;			}		}	} }#ifdef DEBUG	fprintf(stderr, "Node %d: remaining %d uncovered neighbours\n", 		index, no_of_neighbors);	for (int i = 0; i < no_of_neighbors; i++)		fprintf(stderr, " %d", neighbors[i]);	fprintf(stderr, "\n");#endif ch->prev_hop_ = index; // mark current node as forwarder /* enqueue packet if there are uncovered neigbors */ if (no_of_neighbors != 0) {	// determine right amount of jitter	nb_determine_degrees(&max, &n);	bcast_queue.insert(p, no_of_neighbors, neighbors,		CURRENT_TIME+((double)max/n) * BCAST_DELAY * Random::uniform()); }}voidBCAST::sendPacket(Packet *p, double delay) { // we need to do 3 things: // 1) add neighbourhood info into Packet // 2) cancel and reschedule HELLO message // 3) send packet out struct hdr_cmn *ch = HDR_CMN(p);#ifdef PIGGYBACK_HELLO struct hdr_bcast *bh = HDR_BCAST(p);#endif // keep info about PACKET being sent by node nacktimer.save_packet_time(CURRENT_TIME);#ifdef PIGGYBACK_HELLO // 1) fill in neighborhood information  // (i.e., piggyback info in HELLO message) int count = 0; BCAST_Neighbor *nb = nbhead.lh_first; for(; nb; nb = nb->nb_link.le_next) {	bh->neighbors[count++] = nb->nb_addr; } bh->no_of_neighbors = count; if (count > NEIGHBOR_COUNT) {	fprintf(stderr, "Node %d: too many neighbors (%d vs. max %d)\n", 		index, count, NEIGHBOR_COUNT);	exit(1); } // 2) check and cancel pending HELLO message, reschedule one for later htimer.reschedule();#endif // mark current node as forwarder ch->prev_hop_ = index; // 3) send packet out Scheduler::instance().schedule(target_, p, delay);}/* * Dealing with retransmission requests */voidBCAST::sendNack(nsaddr_t src, u_int32_t seqno) {Packet *p = Packet::alloc();struct hdr_cmn *ch = HDR_CMN(p);struct hdr_ip *ih = HDR_IP(p);struct hdr_bcast *bh = HDR_BCAST(p);#ifdef DEBUG fprintf(stderr, "Node %d: sending NACK for (%d,%d) at %.2f\n", 	index, src, seqno, Scheduler::instance().clock());#endif // keep info about NACK being sent by node nacktimer.save_packet_time(CURRENT_TIME); bh->type = BCASTTYPE_NACK; bh->hop_count = 1; // ask for retransmission of packet from node ID with number BID bh->src = src; bh->src_seqno = seqno;#ifdef PIGGYBACK_HELLO // piggyback neighbour information int count = 0; BCAST_Neighbor *nb = nbhead.lh_first; for(; nb; nb = nb->nb_link.le_next) {	bh->neighbors[count++] = nb->nb_addr; } bh->no_of_neighbors = count; if (count > NEIGHBOR_COUNT) {	fprintf(stderr, "Node %d: too many neighbors (%d vs. max %d)\n", 		index, count, NEIGHBOR_COUNT);	exit(1); } // check and cancel pending HELLO message, reschedule one for later htimer.reschedule();#endif bh->dst = index; bh->lifetime = (1 + ALLOWED_HELLO_LOSS) * HELLO_INTERVAL; ch->ptype() = PT_BCAST; ch->size() = IP_HDR_LEN + sizeof(hdr_bcast); ch->iface() = -2; ch->error() = 0; ch->addr_type() = NS_AF_NONE; ch->prev_hop_ = index; ih->saddr() = index; ih->daddr() = IP_BROADCAST; ih->sport() = RT_PORT; ih->dport() = RT_PORT; ih->ttl_ = 1; /* send NACK, but add jitter..... */ Scheduler::instance().schedule(target_, p, 0.01 * Random::uniform());}voidBCAST::recvNack(Packet *p) {struct hdr_bcast *bh = HDR_BCAST(p);struct hdr_cmn *ch = HDR_CMN(p);BCAST_Neighbor *nb;Packet *cached;double delay;#ifdef DEBUG fprintf(stderr, "Node %d: receiving NACK for (%d,%d) from %d at %.2f\n", 	index, bh->src, bh->src_seqno, bh->dst,         Scheduler::instance().clock());#endif /* see whether we have requested packet in cache and "queue" it for    retransmission */ cached = p_cache.packet_lookup(bh->src, bh->src_seqno); if (cached) {   delay = 0.01 * Random::uniform();#ifdef DEBUG   fprintf(stderr, "Node %d: servicing NACK for (%d,%d) from %d at %.4f\n",     index, bh->src, bh->src_seqno, bh->dst,      Scheduler::instance().clock() + delay);#endif   // sendPacket(cached->copy(), delay);   rtxtimer.start_rtx_timer(cached, delay); }#ifdef PIGGYBACK_HELLO /* extract piggyback'd neighbour information */ nb = nb_lookup(ch->prev_hop_); if(nb == 0) {   nb_insert(ch->prev_hop_);   nb = nb_lookup(ch->prev_hop_); } else {   nb->nb_expire = CURRENT_TIME +                   (1.5 * ALLOWED_HELLO_LOSS * HELLO_INTERVAL); } // safe one-hop neighborhood information add_neighbors(nb, bh->no_of_neighbors, bh->neighbors);#endif Packet::free(p);#ifdef DEBUG fprintf(stderr, "Node %d: neighbours:\n", index); nb = nbhead.lh_first; for(; nb; nb = nb->nb_link.le_next) {   fprintf(stderr," %d:", nb->nb_addr);   for (int i = 0; i < nb->nb_no_of_neighbors; i++) {	fprintf(stderr, " %d", nb->nb_neighbors[i]);   }   fprintf(stderr, "\n"); }#endif}/* * Neighbor Management Functions */voidBCAST::sendHello() {Packet *p = Packet::alloc();struct hdr_cmn *ch = HDR_CMN(p);struct hdr_ip *ih = HDR_IP(p);struct hdr_bcast *bh = HDR_BCAST(p);#ifdef DEBUG fprintf(stderr, "Node %d: sending Hello at %.2f\n", 	index, Scheduler::instance().clock());#endif // keep info about HELLO being sent by node nacktimer.save_packet_time(CURRENT_TIME); bh->type = BCASTTYPE_HELLO; bh->hop_count = 1; bh->dst = index; bh->lifetime = (1 + ALLOWED_HELLO_LOSS) * HELLO_INTERVAL; // fill in neighborhood information int count = 0; BCAST_Neighbor *nb = nbhead.lh_first; for(; nb; nb = nb->nb_link.le_next) {	bh->neighbors[count++] = nb->nb_addr; } bh->no_of_neighbors = count; if (count > NEIGHBOR_COUNT) {	fprintf(stderr, "Node %d: too many neighbors (%d vs. max %d)\n", 		index, count, NEIGHBOR_COUNT);	exit(1); } ch->ptype() = PT_BCAST; ch->size() = IP_HDR_LEN + sizeof(hdr_bcast); ch->iface() = -2; ch->error() = 0; ch->addr_type() = NS_AF_NONE; ch->prev_hop_ = index; 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);}voidBCAST::recvHello(Packet *p) {struct hdr_cmn *ch = HDR_CMN(p);struct hdr_bcast *bh = HDR_BCAST(p);BCAST_Neighbor *nb; nb = nb_lookup(ch->prev_hop_); if(nb == 0) {   nb_insert(ch->prev_hop_);   nb = nb_lookup(ch->prev_hop_); } else {   nb->nb_expire = CURRENT_TIME +                   (1.5 * ALLOWED_HELLO_LOSS * HELLO_INTERVAL); } // safe one-hop neighborhood information add_neighbors(nb, bh->no_of_neighbors, bh->neighbors); Packet::free(p);#ifdef DEBUG fprintf(stderr, "Node %d: neighbours:\n", index); nb = nbhead.lh_first; for(; nb; nb = nb->nb_link.le_next) {   fprintf(stderr," %d:", nb->nb_addr);   for (int i = 0; i < nb->nb_no_of_neighbors; i++) {	fprintf(stderr, " %d", nb->nb_neighbors[i]);   }   fprintf(stderr, "\n"); }#endif}voidBCAST::nb_insert(nsaddr_t id) {BCAST_Neighbor *nb = new BCAST_Neighbor(id); assert(nb); nb->nb_expire = CURRENT_TIME +                (1.5 * ALLOWED_HELLO_LOSS * HELLO_INTERVAL); LIST_INSERT_HEAD(&nbhead, nb, nb_link);}BCAST_Neighbor*BCAST::nb_lookup(nsaddr_t id) {BCAST_Neighbor *nb = nbhead.lh_first; for(; nb; nb = nb->nb_link.le_next) {   if(nb->nb_addr == id) break; } return nb;}voidBCAST::nb_determine_degrees(int *max, int *n) {BCAST_Neighbor *nb = nbhead.lh_first; *n = 0; *max = 0;  for(; nb; nb = nb->nb_link.le_next) {	(*n)++;	if (nb->nb_no_of_neighbors > *max) {		*max = nb->nb_no_of_neighbors;	} }}/* * Called when we receive *explicit* notification that a Neighbor * is no longer reachable. */voidBCAST::nb_delete(nsaddr_t id) {BCAST_Neighbor *nb = nbhead.lh_first; for(; nb; nb = nb->nb_link.le_next) {   if(nb->nb_addr == id) {     LIST_REMOVE(nb,nb_link);     delete nb;     break;   } }}/* * Purges all timed-out Neighbor Entries - runs every * HELLO_INTERVAL * 1.5 seconds. */voidBCAST::nb_purge() {BCAST_Neighbor *nb = nbhead.lh_first;BCAST_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);   } }}/*  * Add 1-hop neighbourhood info for neighbour NB */voidBCAST::add_neighbors(BCAST_Neighbor *nb, int num_neighbors,					nsaddr_t *one_hop_neighbors) { for (int i = 0; i < num_neighbors; i++) {	nb->nb_neighbors[i] = one_hop_neighbors[i]; }  nb->nb_no_of_neighbors = num_neighbors;}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产女主播在线一区二区| 欧洲人成人精品| 久久久国产精品午夜一区ai换脸 | 中文字幕日本乱码精品影院| 粉嫩aⅴ一区二区三区四区| 亚洲一区日韩精品中文字幕| 欧美在线短视频| 日本成人超碰在线观看| wwww国产精品欧美| 高清视频一区二区| 亚洲欧美视频一区| 91精品国产综合久久久蜜臀粉嫩 | 欧美精选在线播放| 麻豆视频一区二区| 国产亚洲精品资源在线26u| 成人激情视频网站| 亚洲一级二级在线| 久久奇米777| 91免费看片在线观看| 亚洲chinese男男1069| 精品国产伦一区二区三区观看方式 | 色综合天天综合色综合av | 亚洲精品国产一区二区精华液| 欧美自拍偷拍一区| 九色综合狠狠综合久久| 欧美经典三级视频一区二区三区| 在线观看免费视频综合| 美美哒免费高清在线观看视频一区二区 | 成人免费观看视频| 五月婷婷另类国产| 亚洲午夜视频在线| 久久免费国产精品| 欧美午夜在线一二页| 国产一区福利在线| 亚洲va中文字幕| 国产精品无遮挡| 欧美精品一级二级| 风流少妇一区二区| 五月天精品一区二区三区| 国产农村妇女精品| 在线播放91灌醉迷j高跟美女| 国产黑丝在线一区二区三区| 亚洲v中文字幕| 亚洲色图视频网站| 久久精品欧美一区二区三区麻豆| 欧美三级视频在线观看| 成人av在线一区二区三区| 精品一区二区久久| 丝袜脚交一区二区| 亚洲激情第一区| 欧美国产精品专区| 精品精品欲导航| 777午夜精品视频在线播放| www.99精品| 国产成人精品免费看| 奇米精品一区二区三区四区| 亚洲永久免费av| 亚洲色图在线播放| 国产精品久久久久桃色tv| 2021中文字幕一区亚洲| 日韩一区二区影院| 8v天堂国产在线一区二区| 在线观看亚洲精品视频| 色综合久久精品| 99九九99九九九视频精品| 国产999精品久久| 国产精品一区三区| 国产99精品视频| 国产白丝网站精品污在线入口| 韩国女主播一区| 激情小说欧美图片| 激情久久五月天| 狠狠色2019综合网| 国产美女精品在线| 国产白丝网站精品污在线入口 | 成人av网址在线| 懂色av中文字幕一区二区三区| 性做久久久久久免费观看 | 亚洲自拍偷拍网站| 亚洲免费观看在线观看| 亚洲视频一区二区免费在线观看| 国产精品久久久久国产精品日日| 中文字幕国产一区| 亚洲欧美日韩国产中文在线| 亚洲欧美色一区| 亚洲成av人影院| 日韩高清在线一区| 久草这里只有精品视频| 国产一区中文字幕| 成人app软件下载大全免费| 99re在线精品| 日本福利一区二区| 欧美日韩国产a| 日韩精品一区二区三区蜜臀| 26uuuu精品一区二区| 中文av字幕一区| 亚洲国产一二三| 欧美a一区二区| 国产成人av影院| 色天天综合久久久久综合片| 欧美日韩一区二区三区不卡| 日韩午夜激情电影| 国产日韩欧美制服另类| 亚洲日本一区二区| 日本成人在线不卡视频| 国产高清久久久| 91福利在线看| 精品成人a区在线观看| 国产精品女同互慰在线看| 亚洲精品日日夜夜| 久久国产精品一区二区| 成人av电影在线观看| 欧美精品123区| 国产精品毛片a∨一区二区三区| 亚洲精品欧美综合四区| 九九九精品视频| 欧美中文字幕一区二区三区| 欧美va日韩va| 夜夜精品视频一区二区| 精品无人区卡一卡二卡三乱码免费卡| a亚洲天堂av| 日韩精品一区二区三区老鸭窝| 国产精品黄色在线观看| 蜜臀av性久久久久蜜臀aⅴ流畅| 99精品视频在线免费观看| 3751色影院一区二区三区| 国产精品婷婷午夜在线观看| 午夜亚洲国产au精品一区二区| 国产精品一二三四| 日韩一区二区在线看片| 亚洲欧美成aⅴ人在线观看| 激情综合色丁香一区二区| 欧美性感一区二区三区| 国产日韩精品久久久| 免费观看久久久4p| 欧美在线观看一区二区| 国产精品美女久久福利网站| 久久99精品国产.久久久久久| 欧美色图一区二区三区| 国产精品乱人伦| 国产呦萝稀缺另类资源| 日韩欧美一区在线| 亚洲图片欧美色图| 91婷婷韩国欧美一区二区| 久久久久久电影| 久久精品国产澳门| 日韩一级成人av| 日韩中文欧美在线| 欧美精品亚洲二区| 亚洲国产中文字幕| 在线观看国产一区二区| 亚洲欧美aⅴ...| 一本大道久久a久久精品综合| 国产精品网曝门| 丁香五精品蜜臀久久久久99网站| 久久影院视频免费| 国产综合色视频| 精品美女在线播放| 另类小说欧美激情| 日韩久久久精品| 麻豆精品一区二区综合av| 欧美日韩不卡视频| 丝袜美腿高跟呻吟高潮一区| 欧美午夜电影一区| 亚洲成人精品一区二区| 欧美撒尿777hd撒尿| 亚洲一区二区在线观看视频| 欧美亚洲禁片免费| 无码av中文一区二区三区桃花岛| 欧美午夜精品理论片a级按摩| 亚洲国产中文字幕在线视频综合 | 亚洲视频一区在线观看| 99re热这里只有精品免费视频| 中文字幕一区二区视频| 91丨porny丨国产入口| 亚洲精品成a人| 欧美日韩国产片| 久久www免费人成看片高清| 26uuuu精品一区二区| 成人18视频在线播放| 一区二区三区欧美视频| 欧美猛男男办公室激情| 久久99久久99小草精品免视看| 久久久久久久久蜜桃| 97精品视频在线观看自产线路二| 日韩一区在线看| 欧美日本韩国一区二区三区视频| 日本伊人精品一区二区三区观看方式| 日韩免费在线观看| 国产成人午夜电影网| 亚洲欧美色图小说| 欧美一级免费观看| 国产乱国产乱300精品| 亚洲精品高清在线观看| 欧美一区二区三区在线视频| 精品一区二区综合| 亚洲少妇最新在线视频| 欧美一区二区三区四区视频 | 亚洲精品免费在线播放| 69堂精品视频|