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

? 歡迎來(lái)到蟲(chóng)蟲(chóng)下載站! | ?? 資源下載 ?? 資源專(zhuān)輯 ?? 關(guān)于我們
? 蟲(chóng)蟲(chóng)下載站

?? rlc.cc

?? 一個(gè)很好的LINUX底下的GPRS協(xié)議棧
?? CC
?? 第 1 頁(yè) / 共 2 頁(yè)
字號(hào):
	if (rlch->ackno_==ackno_) {		if (rlcverbose_==1) fprintf(stderr,"<%d> %f RLC: recvd duplicate RLC_ACK num %d\n",				            mac_->addr(), NOW, rlch->ackno_);      		sendDownDATAonACK(); 		return;	}		else if(ackno_ < rlch->ackno_){		ackno_ = rlch->ackno_;		lhSend_.stop();		datacounter=0;	}		if (rlcverbose_==1) fprintf(stderr,"<%d> %f RLC: recvd RLC_ACK num %d\n",			mac_->addr(), NOW, rlch->ackno_);	Packet* sp=Txbuf_->head();	int Txlen=Txbuf_->length();		//delete pkts with seqno < ackno	for (int i=1; i<Txlen; i++){		hdr_rlc *rlchsp= HDR_RLC(sp);		if((rlchsp->seqno_)<ackno_){			Txbuf_->remove(sp);			if (rlcverbose_==1) fprintf(stderr, "<%d> %f RLC: removed ie deleted pkt from tx buffer; rlc seqno=%d\n",					mac_->addr(), NOW, rlchsp->seqno_);		}		sp = sp->next_;	}		// I dont want to send down apkt when i get an ack. rj	if(Txbuf_->length()==window_){		//if (rlcverbose_==1) fprintf(stderr,"<%d> %f RLC: txbuf full, calling sendDownDATAonACK\n", mac_->addr(), NOW);	//	sendDownDATAonACK();	}	else{		if(buf_->length()==0){		//	if (rlcverbose_==1) fprintf (stderr, "<%d> %f RLC: no more new pkts to send, calling sendDownDATAonACK\n", 		//			mac_->addr(), NOW);	//		sendDownDATAonACK();		}		else{			if (rlcverbose_==1) fprintf (stderr, "<%d> %f RLC: got an ack. calling sendDOWNDATA\n" , mac_->addr(), NOW); 			sendDownDATA(); //hmm, this not called at all rj		}		}}void RLC::sendDownDATAonACK(){	Packet* sp=Txbuf_->head();	int Txlen_=Txbuf_->length();	for(int i=1; i<Txlen_; i++){				hdr_rlc *rlchsp= HDR_RLC(sp);				if((rlchsp->seqno_)==ackno_){			pktTx_ = sp->copy();				if (rlcverbose_==1) fprintf(stderr,"<%d> %f RLC: retx pkt from txbuf seqno=%d, eopno=%d\n",					mac_->addr(), NOW,rlchsp->seqno_,rlchsp->eopno_);			Scheduler& s = Scheduler::instance();			s.schedule(downtarget_, sp->copy(), delay_);				lhSend_.stop();				lhSend_.start(0.4);			return;		}		sp = sp->next_;	}		}void RLC::sendUpDATA(Packet* p){	acSend_.stop();	ackcounter=0;	if (hdr_cmn::access(p)->error() > 0)		drop(p);	else{		hdr_cmn *ch = HDR_CMN(p);		hdr_rlc *rlch = HDR_RLC(p);		hdr_ll *llch = HDR_LL(p);		hdr_ip *iph = HDR_IP(p);			if((acked_==0)||(ch->next_hop()==-1)){           if (rlch->seqno_==unackseqno_)                 unackseqno_++;             else{                 inseq_=0;                unackseqno_=rlch->seqno_; 			}										if (rlch->seqno_ == rlch->eopno_ ){				if(inseq_){ 		//			ch->uid_=rlch->psize_; //sandy;		  			if (rlcverbose_==1) fprintf(stderr ,"<%d> %f RLC: nonack. recvd all rlc frags for pktuid=%d ll_seqno=%d \n",							mac_->addr(), NOW, ch->uid_, llch->seqno_);   					Scheduler& s = Scheduler::instance();					s.schedule(uptarget_, p, delay_);				}				else {					if (rlcverbose_==1) fprintf(stderr ,"<%d> %f RLC: nonack. pkts not inseq. not sent up\n",mac_->addr(), NOW);                }			    inseq_=1;				unackseqno_=0; 			} else { 			   if (rlcverbose_==1) fprintf(stderr ,"<%d> %f RLC: nonack. recvd rlc_seqno=%d for pkt uid=%d \n"					   , mac_->addr(), NOW, rlch->seqno_,  ch->uid_ );   				  Packet::free(p);   			}			return;		}else{				if(rlch->seqno_==(rackno_+1)){			rackno_++;			numdups=0;		//	ch->uid_=rlch->psize_; //sandy;			if (rlcverbose_==1) fprintf(stderr , "<%d> %f RLC: rackno=%d, src=%d \n",  mac_->addr(), NOW,rackno_,					 Address::instance().get_nodeaddr(iph->saddr()) );//rj			if ( rlch->seqno_ == rlch->eopno_ ){				ch->size_=rlch->psize_;		  		if (rlcverbose_==1) fprintf(stderr , "<%d> %f RLC:ACK:. send up to LL pktuid=%d llseqno=%d \n",						mac_->addr(), NOW,ch->uid_, llch->seqno_);   				Scheduler& s = Scheduler::instance();				s.schedule(uptarget_, p, delay_);			} else { 			   if (rlcverbose_==1) fprintf(stderr ,"<%d> %f RLC:ACK: recvd rlc_seqno=%d for pkt uid=%d ll_seqno=%d \n"					   , mac_->addr(), NOW, rlch->seqno_,  ch->uid_ , llch->seqno_);   				 // Packet::free(p);   			}//			int choose=1;				int flag=1;//			Packet * spcpy;			while(flag){				flag=0;				if(Rxbuf_->length()!=0){					Packet* sp=Rxbuf_->head();					int Rxlen_=Rxbuf_->length();					for(int i=1;i<=Rxlen_;i++){						hdr_rlc* rlcsp = HDR_RLC(sp);						if(rlcsp->seqno_==(rackno_+1)){							rackno_++;							flag=1;//							choose=0;//							Packet * spcpy=sp->copy();							hdr_cmn* chsp=HDR_CMN(sp);							if ( rlcsp->seqno_ == rlcsp->eopno_ ){//??rj								chsp->size_=rlcsp->psize_;		  						if (rlcverbose_==1) fprintf(stderr,"<%d> %f RLC: pkt in rxbuf: send up uid=%d seqno=%d bopno=%d eopno=%d \n",										mac_->addr(), NOW,ch->uid_,rlch->seqno_,rlch->bopno_,rlch->eopno_);   								Scheduler& s = Scheduler::instance();								s.schedule(uptarget_, sp->copy(), delay_);							} else { 				  				 if (rlcverbose_==1) fprintf(stderr , "<%d> %f RLC: pkt in rxbuf: drop uid=%d seqno=%d bopno=%d eopno=%d next_hop %d \n", mac_->addr(), NOW,chsp->uid_,rlcsp->seqno_,rlcsp->bopno_,rlcsp->eopno_,chsp->next_hop());   							}							Rxbuf_->remove(sp);					}					sp=sp->next_;				}			}			}//			if (choose)				sendACK(p);//			else//				sendACK(spcpy);	}else if(rlch->seqno_>(rackno_+1)){		Rxbuf_->enque(p);	     if (numdups<1){			if (rlcverbose_==1) fprintf (stderr,"<%d> %f RLC: pkt out of seq, buf in rxbuf;send duplicate ackseqno=%d\n", mac_->addr(), NOW,rlch->seqno_);			sendACK(p); //rj			numdups ++;		}	}			}	}}void RLC::sendACK(Packet* p){		hdr_cmn *ch = HDR_CMN(p);//		hdr_rlc *rlch = HDR_RLC(p);		hdr_ip *iph = HDR_IP(p);		hdr_mac_gprs *dh =HDR_MAC_GPRS(p);//		char *mh = (char*)p->access(hdr_mac::offset_);			Packet* sp = Packet::alloc();				hdr_cmn *chsp = HDR_CMN(sp);		hdr_rlc *rlchsp = HDR_RLC(sp);		hdr_ip *iphsp = HDR_IP(sp);		char *mhsp = (char *)HDR_MAC(sp);// 		char *mhsp = (char*)sp->access(hdr_mac::offset_);		//		iphsp->src_ = iph->dst_;//		iphsp->dst_ = iph->src_;//		chsp->next_hop_ = ch->last_hop_;//		chsp->last_hop_ = ch->next_hop_;		chsp->next_hop_=Address::instance().get_nodeaddr(iph->saddr());			chsp->prev_hop_=Address::instance().get_nodeaddr(iph->daddr());			chsp->addr_type_ = ch->addr_type_;		chsp->direction_ = hdr_cmn::DOWN;		chsp->ptype_=PT_RLCACK; 		chsp->size_=6;		chsp->iface()= -2;		chsp->error()= 0;		chsp->uid()= rackno_+1;				u_int32_t dst_=ETHER_ADDR(dh->dh_sa);		mac_->hdr_src(mhsp, mac_->addr());		mac_->hdr_type(mhsp, ETHERTYPE_IP);		mac_->hdr_dst(mhsp, dst_);//		mac_->hdr_dst(mhsp, chsp->next_hop());				rlchsp->rlctype() = RLC_ACK;		rlchsp->ackno_ = rackno_+1;			pktRx_ = sp->copy();			Scheduler& s = Scheduler::instance();		s.schedule(downtarget_, sp, delay_);		acSend_.stop();		acSend_.start(0.4);		if (rlcverbose_==1) fprintf(stderr,"<%d> %f RLC: send RLCACK num %d to mac_dst=%d\n", 				mac_->addr(), NOW, rlchsp->ackno_, dst_);		//		Packet::free(p);   }void RLC::sendHandler(){	send_timer();}void RLC::sendackHandler(){	send_acktimer();}void RLC::send_timer(){	RetransmitDATA();//	RetransmitACK();}void RLC::send_acktimer(){	RetransmitACK();}void RLC::RetransmitDATA(){	datacounter =datacounter + 1;	assert(pktTx_); 	hdr_rlc* rlch=HDR_RLC(pktTx_);		if (datacounter <3){		if (rlcverbose_==1) fprintf(stderr,"<%d> %f RLC: retx rlc frag seqno=%d bopno=%d eopno=%d for %dth time\n", 			mac_->addr(), NOW,rlch->seqno_,rlch->bopno_,rlch->eopno_,datacounter);		Scheduler& s = Scheduler::instance();		s.schedule(downtarget_, pktTx_->copy(), delay_);		lhSend_.stop();		lhSend_.start(0.4);	}	else{	if (rlcverbose_==1) fprintf(stderr,"<%d> %f RLC: retxed rlc frag 5 times. giveup. rlc seqno=%d bopno=%d eopno=%d\n",			mac_->addr(), NOW,rlch->seqno_,rlch->bopno_,rlch->eopno_);		//datacounter=0;		ackno_++;		sendDownDATA();	}}void RLC::RetransmitACK(){	ackcounter =ackcounter +1;	assert(pktRx_);	hdr_rlc *rlch=HDR_RLC(pktRx_);	if (ackcounter < 3){		if (rlcverbose_==1) fprintf(stderr,"<%d> %f RLC: retransmit rlc ack %d for %dth time\n",				mac_->addr(), NOW,rlch->ackno_,ackcounter);		Scheduler& s = Scheduler::instance();		s.schedule(downtarget_,pktRx_->copy(),delay_);		acSend_.stop();		acSend_.start(0.4);	}	else{		if (rlcverbose_==1) fprintf(stderr,"<%d> %f RLC: transmitted rlc ack num %d 3 times giveup\n", 				mac_->addr(), NOW, rlch->ackno_);//		rackno_++;		ackcounter=0;	}}

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久狠狠亚洲综合| 亚洲日本va午夜在线电影| 自拍偷在线精品自拍偷无码专区| 精品午夜久久福利影院| 欧美在线|欧美| 国产成人在线影院| 一区二区三区在线视频观看58| 欧美日韩高清影院| 不卡视频免费播放| 亚洲天堂网中文字| 欧美三级欧美一级| 丁香婷婷综合激情五月色| 欧美系列一区二区| 色天使色偷偷av一区二区| 亚洲a一区二区| 亚洲人吸女人奶水| 成人h精品动漫一区二区三区| 成人免费av资源| 国产综合色精品一区二区三区| 久久嫩草精品久久久久| 欧美tickling挠脚心丨vk| 国产精品第一页第二页第三页| 亚洲精品一区二区三区在线观看| 欧美午夜精品一区二区三区| 成人白浆超碰人人人人| 九色综合国产一区二区三区| 成人一级片在线观看| 国产一区二区网址| 国产麻豆精品一区二区| 成人午夜电影久久影院| 久久电影网电视剧免费观看| 日本不卡一二三| 视频一区在线播放| 国产精品国产馆在线真实露脸| 亚洲超丰满肉感bbw| 亚洲国产视频直播| 五月综合激情日本mⅴ| 亚洲成人一区在线| 欧美三级三级三级| 99麻豆久久久国产精品免费 | 成人免费高清在线| 国产精品乱子久久久久| 欧美国产一区在线| 久久婷婷成人综合色| 亚洲国产一区二区在线播放| 五月天激情综合| 老司机精品视频一区二区三区| 亚洲国产成人av好男人在线观看| 亚洲成人激情av| 日本中文字幕一区| 精品一区二区三区免费毛片爱| 日韩精品视频网站| 麻豆国产91在线播放| 国产在线精品一区二区三区不卡| 精品理论电影在线观看| 日韩精品一区二区三区swag| 在线观看网站黄不卡| 美女视频第一区二区三区免费观看网站| 亚洲午夜视频在线观看| 亚洲一区二区三区中文字幕在线 | 亚洲精品v日韩精品| 国产精品区一区二区三| 玉足女爽爽91| 久草精品在线观看| 91麻豆国产福利在线观看| 欧美高清性hdvideosex| 国产女人18水真多18精品一级做| 26uuu色噜噜精品一区| 国产精品美女www爽爽爽| 亚洲午夜一二三区视频| 国产精品一区二区无线| 美日韩黄色大片| 欧美哺乳videos| 国产在线精品视频| 亚洲综合偷拍欧美一区色| 视频一区在线播放| 国产精品一区二区无线| 4438x亚洲最大成人网| 国产精品国产三级国产aⅴ中文 | 成人午夜看片网址| 欧美午夜精品理论片a级按摩| 国产三级一区二区| 亚洲国产一区二区三区青草影视| 国产成人在线影院| 日韩视频免费观看高清完整版 | 精品午夜一区二区三区在线观看| 久久99国产精品麻豆| 亚洲三级电影网站| 国产精品白丝jk白祙喷水网站| 日本高清成人免费播放| 欧美激情一区二区三区不卡| 肉丝袜脚交视频一区二区| 不卡av免费在线观看| 久久在线观看免费| 另类人妖一区二区av| 欧美日韩国产一级二级| 国产精品国产馆在线真实露脸 | 日韩一级视频免费观看在线| 国产精品不卡一区二区三区| 国产乱一区二区| 精品国产一区二区亚洲人成毛片| 亚洲免费色视频| 日韩三级高清在线| 日韩午夜激情电影| 一区二区三区免费网站| 综合色中文字幕| 国产精品69久久久久水密桃| 91精品国产综合久久久久久久久久 | 欧美三级蜜桃2在线观看| 亚洲精品写真福利| 成人三级伦理片| 国产精品欧美精品| 国产精品污www在线观看| 亚洲永久精品国产| 91精品国产aⅴ一区二区| 日韩高清在线一区| 国产精品成人免费在线| 日韩欧美成人一区| 在线一区二区观看| 成人免费观看视频| 日本韩国一区二区三区| 国产麻豆午夜三级精品| 久久久精品免费免费| 成人免费高清在线| 成人国产在线观看| 日韩电影一区二区三区| 久久精品99国产精品| 久久久不卡网国产精品一区| 国产91在线观看丝袜| 一区二区激情小说| 国产人妖乱国产精品人妖| 欧美中文字幕亚洲一区二区va在线 | 亚洲精品成a人| 中文字幕综合网| 国产精品三级av在线播放| 激情五月婷婷综合| 精品国产人成亚洲区| 国产精品一卡二| 成人午夜免费电影| 日本vs亚洲vs韩国一区三区二区| 日韩久久免费av| 91精品在线观看入口| 在线一区二区三区四区五区| 丁香一区二区三区| 精品一区二区久久久| 日日摸夜夜添夜夜添国产精品| 中文字幕欧美一| 中文字幕不卡在线| 欧美高清在线一区二区| 国产性天天综合网| 欧美激情在线一区二区| 久久你懂得1024| 国产欧美精品一区二区三区四区| 久久久久久免费毛片精品| 精品国产sm最大网站| 久久亚洲综合色| 国产日韩av一区| 日韩美女视频一区| 一二三四区精品视频| 日本va欧美va精品发布| 国内久久精品视频| 国产成人精品一区二| 国产宾馆实践打屁股91| 91在线看国产| 欧美欧美欧美欧美首页| 精品久久久久久久一区二区蜜臀| 精品国产91九色蝌蚪| 亚洲三级在线看| 高清av一区二区| 欧美日韩中文精品| 91成人免费网站| 亚洲精品一区二区精华| 亚洲婷婷国产精品电影人久久| 美腿丝袜一区二区三区| 97se亚洲国产综合自在线| 日韩精品一区二区三区swag| 中文字幕一区二区在线观看| 天天色天天操综合| 国产高清久久久| 欧美一级精品在线| 亚洲精品国产视频| 大白屁股一区二区视频| 欧美日韩视频一区二区| 国产精品久久久久一区二区三区| 亚洲精品亚洲人成人网在线播放| 麻豆精品一二三| 欧美性三三影院| 亚洲人成在线观看一区二区| 亚洲欧美一区二区三区极速播放| 天天综合网 天天综合色| 一本到不卡免费一区二区| 久久伊人中文字幕| 日韩国产欧美三级| 欧美人妖巨大在线| 中文字幕av一区 二区| 久草这里只有精品视频| 91精品国产综合久久国产大片 | 日韩欧美国产午夜精品| 亚洲一区在线电影| 波多野结衣精品在线|