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

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

?? rlc.cc

?? 一個很好的LINUX底下的GPRS協(xié)議棧
?? CC
?? 第 1 頁 / 共 2 頁
字號:
/* -*-	Mode:C++; c-basic-offset:8; tab-width:8; indent-tabs-mode:t -*- *//* By Sandeep Kumar, Kopparapu Suman and Richa Jain, * Indian Institute of Technology, Bombay. * June, 2001.*/ /* Copyright (c) 2001 Indian Insitute of Technology, Bombay.   * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: *  * 1. Redistributions of source code and binary code must contain * the above copyright notice, this list of conditions and the following  * disclaimer. *  * 2. All advertising materials mentioning features or use of this software * must display the following acknowledgement:  * This product includes software developed at Indian Insitute of * Technology, Bombay.  * * 3. The name of the Institute may not be used to endorse or promote  * products derived from this software without specific prior written  * permission. * INDIAN INSTITUTE OF TECHNOLOGY, BOMBAY, MAKES NO REPRESENTATIONS  * CONCERNING EITHER THE MERCHANTABILITY OF THIS SOFTWARE OR THE  * SUITABILITY OF THIS SOFTWARE FOR ANY PARTICULAR PURPOSE.  The software  * is provided "as is" without express or implied warranty of any kind.*/#include <errmodel.h>#include <mac.h>#include <rlc.h>#include <address.h>#include <dsr/hdr_sr.h>#include <mac-gprs.h>int hdr_rlc::offset_; static class RLCHeaderClass : public PacketHeaderClass {public:	RLCHeaderClass(): PacketHeaderClass("PacketHeader/RLC",					    sizeof(hdr_rlc)) {		bind_offset(&hdr_rlc::offset_);	}} class_hdr_rlc;static class RLCClass : public TclClass {public:	RLCClass() : TclClass("RLC") {}	TclObject* create(int, const char*const*) {		return (new RLC);	}} class_rlc;int RLC::rlcverbose_ = {0};//rjRLC::RLC() : LinkDelay(), seqno_(0), ackno_(0), macDA_(0), ifq_(0),	mac_(0), lanrouter_(0), arptable_(0), varp_(0),	downtarget_(0), uptarget_(0), lhSend_(this), acSend_(this),	datacounter(0), ackcounter(0), window_(60), rackno_(-1), 	acked_(0), rlcfraged_(1), rlcfragsz_(500),inseq_(1),unackseqno_(0),numdups(0){	bind("macDA_", &macDA_);	bind("acked_", &acked_);	bind("rlcfraged_",&rlcfraged_);	bind("rlcfragsz_",&rlcfragsz_);    bind("rlcverbose_",&rlcverbose_); 		buf_= new PacketQueue();	Txbuf_ = new PacketQueue();	Rxbuf_ = new PacketQueue();}int RLC::command(int argc, const char*const* argv){	Tcl& tcl = Tcl::instance();	if (argc == 3) {		if (strcmp(argv[1], "ifq") == 0) {			ifq_ = (Queue*) TclObject::lookup(argv[2]);			return (TCL_OK);		}		if(strcmp(argv[1], "arptable") == 0) {                        arptable_ = (ARPTable*)TclObject::lookup(argv[2]);                        assert(arptable_);                        return TCL_OK;                }		if(strcmp(argv[1], "varp") == 0) {                        varp_ = (VARPTable*)TclObject::lookup(argv[2]);                        assert(varp_);                        return TCL_OK;                }		if (strcmp(argv[1], "mac") == 0) {			mac_ = (Mac*) TclObject::lookup(argv[2]);                        assert(mac_);			return (TCL_OK);		}		if (strcmp(argv[1], "down-target") == 0) {			downtarget_ = (NsObject*) TclObject::lookup(argv[2]);			return (TCL_OK);		}		if (strcmp(argv[1], "up-target") == 0) {			uptarget_ = (NsObject*) TclObject::lookup(argv[2]);			return (TCL_OK);		}		if (strcmp(argv[1], "lanrouter") == 0) {			lanrouter_ = (LanRouter*) TclObject::lookup(argv[2]);			return (TCL_OK);		}	}	else if (argc == 2) {		if (strcmp(argv[1], "ifq") == 0) {			tcl.resultf("%s", ifq_->name());			return (TCL_OK);		}		if (strcmp(argv[1], "mac") == 0) {			tcl.resultf("%s", mac_->name());			return (TCL_OK);		}		if (strcmp(argv[1], "down-target") == 0) {			tcl.resultf("%s", downtarget_->name());			return (TCL_OK);		}		if (strcmp(argv[1], "up-target") == 0) {			tcl.resultf("%s", uptarget_->name());			return (TCL_OK);		}	}	return LinkDelay::command(argc, argv);}void RLC::recv(Packet* p, Handler* /*h*/){	hdr_cmn *ch = HDR_CMN(p);	hdr_rlc *rlch = HDR_RLC(p);//sandy	hdr_ip *iph =HDR_IP(p);	if (rlcverbose_==1) fprintf(stderr,"<%d> %f RLC: recv pkt_type=%s uid=%d ipsrc=%d ipdst=%d\n",			mac_->addr(), NOW, packet_info.name(ch->ptype()), ch->uid_,			Address::instance().get_nodeaddr(iph->saddr()),			Address::instance().get_nodeaddr(iph->daddr()));// Sanity Check	assert(initialized());	if(p->incoming) {                p->incoming = 0;	}//if arp packet send to approprite place  //sandy	if(ch->direction()==hdr_cmn::UP){			if(ch->ptype_ == PT_ARP){				if (rlcverbose_==1) fprintf(stderr,"<%d> %f RLC: sent an ARP going up to arptable\n", mac_->addr(), NOW);				/* arptable_->arpinput(p, this); */				Scheduler& s = Scheduler::instance();				s.schedule(uptarget_, p, delay_);				return;			}			if(ch->ptype_ == PT_LLACK) {				if (rlcverbose_==1) fprintf(stderr,"<%d> %f RLC: sent an llack going up \n", mac_->addr(), NOW);				Scheduler& s = Scheduler::instance();				s.schedule(uptarget_, p, delay_);				return;			}	}		if(ch->direction()==hdr_cmn::DOWN){			if(ch->ptype_ == PT_ARP){				if (rlcverbose_==1) fprintf(stderr,"<%d> %f RLC: sent an ARP going down to arptable\n", mac_->addr(), NOW);				Scheduler& s = Scheduler::instance();				s.schedule(downtarget_, p, delay_);				return;			}			if(ch->ptype_ == PT_LLACK){				if (rlcverbose_==1) fprintf(stderr,"<%d> %f RLC: sent an llack going down\n", mac_->addr(), NOW);				Scheduler& s = Scheduler::instance();				s.schedule(downtarget_, p, delay_);				return;			}	}//if ack pkt or data pkt...  //sandy	if(rlch->rlctype_==RLC_ACK)		recvACK(p);	else		recvDATA(p);}void RLC::recvDATA(Packet* p){	hdr_cmn *ch = HDR_CMN(p);		if(ch->direction() == hdr_cmn::UP){		if (rlcverbose_==1) fprintf(stderr,"<%d> %f RLC: DATA on its way up. call sendupDATA\n", mac_->addr(), NOW);			sendUpDATA(p);	}else{		ch->direction() = hdr_cmn::DOWN;		if (rlcverbose_==1) fprintf(stderr,"<%d> %f RLC: DATA going down. call enqueDATA\n", mac_->addr(), NOW);		enqueDATA(p);	}}void RLC::enqueDATA(Packet* p){	hdr_cmn *ch = HDR_CMN(p);	hdr_ip *ih = HDR_IP(p);	hdr_rlc *rlch = HDR_RLC(p);		rlch->rlctype() = RLC_DATA;	//fragmenting to start here....//sandy	int psize;	if(rlcfraged_==1)		psize=rlcfragsz_;	else		psize=ch->size_;		int bopno=seqno_;		int eopno=bopno + (int)((ch->size_-1)/psize);  				if (rlcverbose_==1) fprintf(stderr,"<%d> %f RLC: eopno=%d, bopno=%d \n", mac_->addr(), NOW, eopno, bopno);				 		int i=seqno_;				for ( i = bopno; i <= eopno; i++){			Packet * sp = p->copy();			hdr_cmn *chsp = HDR_CMN(sp);			hdr_rlc *rlchsp = HDR_RLC(sp);					rlchsp->seqno_ = 0;			rlchsp->bopno_ = bopno;			rlchsp->eopno_ = eopno;			rlchsp->psize_ = chsp->size_; //hack for now to remeber uid 			chsp->size_  = psize;			chsp->uid_= i; //rj		//	chsp->next_hop_ = -1; //was a debug option for non-ack mode						if((acked_==0)||(chsp->next_hop()==-1)){				rlchsp->seqno_=i;				Scheduler& s = Scheduler::instance();				s.schedule(downtarget_, sp, delay_);				if (rlcverbose_==1) fprintf(stderr,"<%d> %f RLC: sending NON-acked down. pkt uid=%d\n",						mac_->addr(), NOW,chsp->uid_);			}else{ 				rlchsp->seqno_ =i;				seqno_++;				buf_->enque(sp);    				if (rlcverbose_==1) fprintf(stderr,"<%d> %f RLC: buffering frag. rlc_seqno=%d for pkt uid=%d buf_len=%d\n"						, mac_->addr(), NOW, rlchsp->seqno_,chsp->uid_, buf_->length());			}		}			if((acked_==1))			sendDownDATA();}void RLC::sendDownDATA(void){	Packet* sp;	if(!(sp = buf_->deque())){		if (rlcverbose_==1) fprintf(stderr,"<%d> %f RLC: que is empty. length=%d\n", mac_->addr(), NOW,buf_->length());		return;	}		hdr_rlc *rlcsp=HDR_RLC(sp);		if(Txbuf_->length()<window_){		Txbuf_->enque(sp);		pktTx_ = sp->copy();			Scheduler& s = Scheduler::instance();		s.schedule(downtarget_, sp->copy(), delay_);		lhSend_.stop();		lhSend_.start(0.4);		if (rlcverbose_==1) fprintf (stderr, "<%d> %f RLC: Txbuf not full. sending a data pkt down, rlc_seqno=%d from buffer \n", 				mac_->addr(), NOW, rlcsp->seqno_);		sendDownDATA();	}else{		buf_->enqueHead(sp);		if (rlcverbose_==1) fprintf (stderr, "<%d> %f RLC: Txbuf full. couldnt send rlc_seqno=%d \n",				mac_->addr(), NOW, rlcsp->seqno_);	}}void RLC::recvACK(Packet* p){	hdr_rlc *rlch = HDR_RLC(p);	//rj

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产大陆a不卡| 久久激情综合网| 欧美一级夜夜爽| 国产精品1024| 免费欧美高清视频| 伊人一区二区三区| 欧美经典一区二区| 日韩精品一区二区三区视频| 91电影在线观看| 夜夜精品视频一区二区 | 日韩欧美在线网站| 成人av小说网| 久久国产精品99久久人人澡| 国产精品三级久久久久三级| 日韩欧美精品三级| 欧美性视频一区二区三区| 高清不卡在线观看av| 久久99国产精品久久| 香蕉加勒比综合久久| 国产精品伦一区二区三级视频| 日韩精品一区二区三区中文精品| 欧美性色aⅴ视频一区日韩精品| 成人精品鲁一区一区二区| 国产综合色在线视频区| 另类欧美日韩国产在线| 天天av天天翘天天综合网| 亚洲精品老司机| 亚洲欧美综合色| 色天使色偷偷av一区二区| 国产一区在线看| 另类人妖一区二区av| 日韩激情中文字幕| 午夜精品影院在线观看| 亚洲黄色免费电影| 亚洲精品视频一区| 亚洲日穴在线视频| 亚洲情趣在线观看| 一区二区三区在线视频免费| 亚洲欧美另类图片小说| 亚洲免费观看在线视频| 国产精品毛片久久久久久久| 亚洲欧洲精品天堂一级 | 精品国产乱码久久久久久1区2区 | 成人福利在线看| 国产精品影音先锋| 韩国女主播一区二区三区| 九九视频精品免费| 精品一区二区av| 国产精品久久99| 日韩视频中午一区| 精品电影一区二区三区| 精品国产免费久久| 国产精品视频免费看| 亚洲欧洲无码一区二区三区| 亚洲综合激情网| 热久久国产精品| 国内外成人在线视频| 国产91在线观看丝袜| 色婷婷一区二区三区四区| 欧美最猛黑人xxxxx猛交| 欧美日韩国产综合一区二区三区| 欧美一级搡bbbb搡bbbb| 久久久亚洲精品石原莉奈| 国产精品另类一区| 亚洲影视资源网| 麻豆91在线播放免费| 国产成人欧美日韩在线电影| 91亚洲精品久久久蜜桃| 欧美日韩视频在线观看一区二区三区| 日韩免费看的电影| 国产精品欧美极品| 午夜精品福利一区二区三区av| 久久66热偷产精品| 91浏览器入口在线观看| 欧美丰满高潮xxxx喷水动漫| 久久久国产精品麻豆| 亚洲免费在线观看视频| 久久99国产精品免费| 91视频国产资源| 91精品国产福利在线观看| 欧美激情一区二区三区蜜桃视频| 亚洲激情第一区| 国产精品自在在线| 欧美亚洲国产一区在线观看网站| 精品国产一区二区三区久久久蜜月| 国产精品色呦呦| 日韩av中文字幕一区二区三区| 国产不卡在线视频| 欧美一级爆毛片| 成人免费小视频| 久久精品国产亚洲a| 欧美亚洲国产怡红院影院| 国产日韩欧美精品一区| 天堂久久一区二区三区| 97精品国产露脸对白| 久久久久久久久久看片| 天堂在线亚洲视频| 成人精品视频一区| 久久成人免费网| 欧美色图免费看| 日韩一级免费观看| 亚洲精品成人精品456| 韩国精品久久久| 欧美日韩国产在线观看| 国产精品国产三级国产a| 久久99精品国产.久久久久久| 在线视频综合导航| 国产精品福利av| 国产乱一区二区| 欧美一区二区三区在线观看视频| 亚洲综合视频在线| 91美女片黄在线观看91美女| 久久久久9999亚洲精品| 麻豆精品国产91久久久久久 | 欧美日韩精品三区| 最新高清无码专区| 成人免费毛片片v| 久久久久国产精品麻豆ai换脸| 蜜臀91精品一区二区三区| 欧美日韩精品久久久| 夜夜嗨av一区二区三区四季av | 色欲综合视频天天天| 国产精品视频一区二区三区不卡| 久久99国产精品免费网站| 日韩一区二区精品葵司在线 | 秋霞午夜鲁丝一区二区老狼| 欧洲色大大久久| 一区二区三区加勒比av| 99综合电影在线视频| 中文字幕亚洲一区二区av在线 | 国产成人av影院| 久久久久久久久久久久久夜| 国精产品一区一区三区mba视频 | 五月激情综合网| 欧美日本乱大交xxxxx| 视频在线观看91| 91精品免费在线| 日韩黄色片在线观看| 91精品在线一区二区| 亚洲成a人v欧美综合天堂下载| 91偷拍与自偷拍精品| 亚洲精品久久久蜜桃| 欧美日韩一卡二卡三卡| 亚洲va在线va天堂| 欧美高清你懂得| 日本视频中文字幕一区二区三区| 日韩一区二区免费电影| 国产在线不卡视频| 中文字幕精品一区| 一本色道久久加勒比精品| 亚洲综合一区二区三区| 69精品人人人人| 韩国av一区二区三区| 国产精品女人毛片| 色呦呦日韩精品| 日韩av电影免费观看高清完整版 | 一区免费观看视频| 91福利精品视频| 日韩国产欧美在线视频| 26uuu色噜噜精品一区| 成人精品国产免费网站| 亚洲午夜在线电影| 日韩女优av电影| 99精品在线免费| 亚洲成av人片一区二区| 欧美mv和日韩mv的网站| 播五月开心婷婷综合| 亚洲成在线观看| 久久美女艺术照精彩视频福利播放| av不卡一区二区三区| 日韩av一区二区在线影视| 国产欧美精品国产国产专区| 91久久国产最好的精华液| 看电视剧不卡顿的网站| 亚洲欧美自拍偷拍| 日韩欧美国产一二三区| 成人黄色软件下载| 蜜桃一区二区三区在线观看| 国产精品初高中害羞小美女文| 欧美日本在线看| 国产成人免费高清| 午夜精品一区在线观看| 国产清纯白嫩初高生在线观看91| 91福利区一区二区三区| 国产老肥熟一区二区三区| 亚洲小说欧美激情另类| 久久久久久久久久久99999| 在线观看日韩高清av| 国产高清一区日本| 日本中文字幕一区| 亚洲天堂av老司机| 精品三级av在线| 欧美日韩在线综合| 成人美女在线视频| 久久国产麻豆精品| 亚洲妇熟xx妇色黄| 亚洲欧美日韩一区二区 | 国产三级精品视频| 这里只有精品99re| 91丨九色丨蝌蚪富婆spa|