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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? mac-802_11.cc

?? 在網(wǎng)絡(luò)仿真模擬工具下實現(xiàn)MAC層802.11DCF協(xié)議
?? CC
?? 第 1 頁 / 共 4 頁
字號:
	transmit(pktRTS_, timeout);  	return 0;}intMac802_11::check_pktTx(){	struct hdr_mac802_11 *mh;	double timeout;		assert(mhBackoff_.busy() == 0);	if(pktTx_ == 0)		return -1;	mh = HDR_MAC802_11(pktTx_);       	//int len = HDR_CMN(pktTx_)->size();//-ak-----------//	printf("chckpkt TX \n");	switch(mh->dh_fc.fc_subtype) {	case MAC_Subtype_Data:		if(! is_idle()) {			// change wrt Mike's code			//sendRTS(ETHER_ADDR(mh->dh_da));			sendRTS(ETHER_ADDR(mh->dh_ra));			inc_cw();			mhBackoff_.start(cw_, is_idle());			return 0;		}		// change wrt Mike's code		//SET_TX_STATE(MAC_SEND);		/*if((u_int32_t)ETHER_ADDR(mh->dh_da) != MAC_BROADCAST)			timeout = txtime(pktTx_)				+ DSSS_MaxPropagationDelay		// XXX				+ sifs_				+ txtime(ETHER_ACK_LEN, basicRate_)				+ DSSS_MaxPropagationDelay;		*/// XXX		setTxState(MAC_SEND);               if((u_int32_t)ETHER_ADDR(mh->dh_ra) != MAC_BROADCAST)                        timeout = txtime(pktTx_)                                + DSSS_MaxPropagationDelay              // XXX                               + phymib_.getSIFS()                               + txtime(phymib_.getACKlen(), basicRate_)                               + DSSS_MaxPropagationDelay;             // XXX		else			timeout = txtime(pktTx_);		break;	default:		fprintf(stderr, "check_pktTx:Invalid MAC Control subtype\n");		//printf("pktRTS:%x, pktCTS/ACK:%x, pktTx:%x\n",pktRTS_, pktCTRL_,pktTx_);		exit(1);	}	// change wrt Mike's code        //TRANSMIT(pktTx_, timeout);	transmit(pktTx_, timeout);	return 0;}/*void  Mac802_11::sendSCANREQ(int dst)  {  Packet *p = Packet::alloc();  hdr_cmn* ch = HDR_CMN(p);  struct probereq_frame *pbr = (struct probereq_frame*)p->access(hdr_mac::offset_);  assert(pktTx_);  assert(pktRTS_ == 0);      ch->uid() = 0;  ch->ptype() = PT_MAC;  // change wrt Mike's code  //ch->size() = ETHER_RTS_LEN;  ch->size() = phymib_.getRTSlen();  ch->iface() = -2;  ch->error() = 0;    bzero(srf, MAC_HDR_LEN);    pbr->preq_fc.fc_protocol_version = MAC_ProtocolVersion;  pbr->preq_fc.fc_type       = MAC_Type_Management;  pbr->preq_fc.fc_subtype    = MAC_Subtype_ProbeReq;  pbr->preq_fc.fc_to_ds      = 0;  pbr->preq_fc.fc_from_ds    = 0;  pbr->preq_fc.fc_more_frag  = 0;  pbr->preq_fc.fc_retry      = 0;  pbr->preq_fc.fc_pwr_mgt    = 0;    //rf->rf_duration = RTS_DURATION(pktTx_);  STORE4BYTE(&dst, (srf->rf_ra));    /*  store rts tx time *//*      ch->txtime() = txtime(ch->size(), basicRate_);	STORE4BYTE(&index_, (srf->rf_ta));*//* calculate rts duration field */// change wrt Mike's code/*  pbr->rf_duration = usec(sifs_  + txtime(ETHER_CTS_LEN, basicRate_)  + sifs_  + txtime(pktTx_)  + sifs_  + txtime(ETHER_ACK_LEN, basicRate_));*//*  pbr->preq_duration = usec(phymib_.getSIFS()  + txtime(phymib_.getCTSlen(), basicRate_)  + phymib_.getSIFS()  + txtime(pktTx_)  + phymib_.getSIFS()  + txtime(phymib_.getACKlen(), basicRate_));    pktRTS_ = p;    }*//* * Low-level transmit functions that actually place the packet onto * the channel. */voidMac802_11::sendRTS(int dst){	Packet *p = Packet::alloc();	hdr_cmn* ch = HDR_CMN(p);	struct rts_frame *rf = (struct rts_frame*)p->access(hdr_mac::offset_);		assert(pktTx_);	assert(pktRTS_ == 0);	/*	 *  If the size of the packet is larger than the	 *  RTSThreshold, then perform the RTS/CTS exchange.	 *	 *  XXX: also skip if destination is a broadcast	 */	// change wrt Mike's code	/*if( (u_int32_t) HDR_CMN(pktTx_)->size() < macmib_->RTSThreshold ||	    (u_int32_t) dst == MAC_BROADCAST) {*/	if( (u_int32_t) HDR_CMN(pktTx_)->size() < macmib_.getRTSThreshold() ||            (u_int32_t) dst == MAC_BROADCAST) {		Packet::free(p);		//p = 0;		return;	}	ch->uid() = 0;	ch->ptype() = PT_MAC;	// change wrt Mike's code	//ch->size() = ETHER_RTS_LEN;	ch->size() = phymib_.getRTSlen();	ch->iface() = -2;	ch->error() = 0;	bzero(rf, MAC_HDR_LEN);	rf->rf_fc.fc_protocol_version = MAC_ProtocolVersion; 	rf->rf_fc.fc_type	= MAC_Type_Control; 	rf->rf_fc.fc_subtype	= MAC_Subtype_RTS; 	rf->rf_fc.fc_to_ds	= 0; 	rf->rf_fc.fc_from_ds	= 0; 	rf->rf_fc.fc_more_frag	= 0; 	rf->rf_fc.fc_retry	= 0; 	rf->rf_fc.fc_pwr_mgt	= 0; 	rf->rf_fc.fc_more_data	= 0; 	rf->rf_fc.fc_wep	= 0; 	rf->rf_fc.fc_order	= 0;	//rf->rf_duration = RTS_DURATION(pktTx_);	STORE4BYTE(&dst, (rf->rf_ra));		/* store rts tx time */ 	ch->txtime() = txtime(ch->size(), basicRate_);		STORE4BYTE(&index_, (rf->rf_ta));			/* calculate rts duration field */		// change wrt Mike's code	/*	rf->rf_duration = usec(sifs_			       + txtime(ETHER_CTS_LEN, basicRate_)			       + sifs_			       + txtime(pktTx_)			       + sifs_			       + txtime(ETHER_ACK_LEN, basicRate_));	*/	   rf->rf_duration = usec(phymib_.getSIFS()                              + txtime(phymib_.getCTSlen(), basicRate_)                              + phymib_.getSIFS()                               + txtime(pktTx_)                              + phymib_.getSIFS()                              + txtime(phymib_.getACKlen(), basicRate_));	pktRTS_ = p;}voidMac802_11::sendCTS(int dst, double rts_duration){	Packet *p = Packet::alloc();	hdr_cmn* ch = HDR_CMN(p);	struct cts_frame *cf = (struct cts_frame*)p->access(hdr_mac::offset_);	assert(pktCTRL_ == 0);	ch->uid() = 0;	ch->ptype() = PT_MAC;	// change wrt Mike's code	//ch->size() = ETHER_CTS_LEN;	ch->size() = phymib_.getCTSlen();	ch->iface() = -2;	ch->error() = 0;	//ch->direction() = hdr_cmn::DOWN;	bzero(cf, MAC_HDR_LEN);	cf->cf_fc.fc_protocol_version = MAC_ProtocolVersion;	cf->cf_fc.fc_type	= MAC_Type_Control;	cf->cf_fc.fc_subtype	= MAC_Subtype_CTS; 	cf->cf_fc.fc_to_ds	= 0; 	cf->cf_fc.fc_from_ds	= 0; 	cf->cf_fc.fc_more_frag	= 0; 	cf->cf_fc.fc_retry	= 0; 	cf->cf_fc.fc_pwr_mgt	= 0; 	cf->cf_fc.fc_more_data	= 0; 	cf->cf_fc.fc_wep	= 0; 	cf->cf_fc.fc_order	= 0;		//cf->cf_duration = CTS_DURATION(rts_duration);	STORE4BYTE(&dst, (cf->cf_ra));		/* store cts tx time */	ch->txtime() = txtime(ch->size(), basicRate_);		/* calculate cts duration */	// change wrt Mike's code	/*cf->cf_duration = usec(sec(rts_duration)			       - sifs_			       - txtime(ETHER_CTS_LEN, basicRate_));*/	cf->cf_duration = usec(sec(rts_duration)                              - phymib_.getSIFS()                              - txtime(phymib_.getCTSlen(), basicRate_));		pktCTRL_ = p;	}voidMac802_11::sendACK(int dst){	Packet *p = Packet::alloc();	hdr_cmn* ch = HDR_CMN(p);	struct ack_frame *af = (struct ack_frame*)p->access(hdr_mac::offset_);	assert(pktCTRL_ == 0);	ch->uid() = 0;	ch->ptype() = PT_MAC;	// CHANGE WRT Mike's code	//ch->size() = ETHER_ACK_LEN;	ch->size() = phymib_.getACKlen();	ch->iface() = -2;	ch->error() = 0;		bzero(af, MAC_HDR_LEN);	af->af_fc.fc_protocol_version = MAC_ProtocolVersion; 	af->af_fc.fc_type	= MAC_Type_Control; 	af->af_fc.fc_subtype	= MAC_Subtype_ACK; 	af->af_fc.fc_to_ds	= 0; 	af->af_fc.fc_from_ds	= 0; 	af->af_fc.fc_more_frag	= 0; 	af->af_fc.fc_retry	= 0; 	af->af_fc.fc_pwr_mgt	= 0; 	af->af_fc.fc_more_data	= 0; 	af->af_fc.fc_wep	= 0; 	af->af_fc.fc_order	= 0;	//af->af_duration = ACK_DURATION();	STORE4BYTE(&dst, (af->af_ra));	/* store ack tx time */ 	ch->txtime() = txtime(ch->size(), basicRate_);		/* calculate ack duration */ 	af->af_duration = 0;			pktCTRL_ = p;}voidMac802_11::sendDATA(Packet *p){	hdr_cmn* ch = HDR_CMN(p);	struct hdr_mac802_11* dh = HDR_MAC802_11(p);	assert(pktTx_ == 0);	/*	 * Update the MAC header	 */	// change wrt Mike's code	//ch->size() += ETHER_HDR_LEN11;	ch->size() += phymib_.getHdrLen11();	dh->dh_fc.fc_protocol_version = MAC_ProtocolVersion;	dh->dh_fc.fc_type       = MAC_Type_Data;	dh->dh_fc.fc_subtype    = MAC_Subtype_Data;	//printf(".....p = %x, mac-subtype-%d\n",p,dh->dh_fc.fc_subtype);		dh->dh_fc.fc_to_ds      = 0;	dh->dh_fc.fc_from_ds    = 0;	dh->dh_fc.fc_more_frag  = 0;	dh->dh_fc.fc_retry      = 0;	dh->dh_fc.fc_pwr_mgt    = 0;	dh->dh_fc.fc_more_data  = 0;	dh->dh_fc.fc_wep        = 0;	dh->dh_fc.fc_order      = 0;	/* store data tx time */ 	ch->txtime() = txtime(ch->size(), dataRate_);// change wrt Mike's code//	if((u_int32_t)ETHER_ADDR(dh->dh_da) != MAC_BROADCAST) {	if((u_int32_t)ETHER_ADDR(dh->dh_ra) != MAC_BROADCAST) {		/* store data tx time for unicast packets */		ch->txtime() = txtime(ch->size(), dataRate_);				//dh->dh_duration = DATA_DURATION();		// chnage wrt Mike's code		//dh->dh_duration = usec(txtime(ETHER_ACK_LEN, basicRate_) 				       //+ sifs_);		dh->dh_duration = usec(txtime(phymib_.getACKlen(), basicRate_)                                      + phymib_.getSIFS());	} else {		/* store data tx time for broadcast packets (see 9.6) */		ch->txtime() = txtime(ch->size(), basicRate_);				dh->dh_duration = 0;	}	pktTx_ = p;}/* ======================================================================   Retransmission Routines   ====================================================================== */voidMac802_11::RetransmitRTS(){	assert(pktTx_);	assert(pktRTS_);	assert(mhBackoff_.busy() == 0);// change wrt Mike's code//	macmib_->RTSFailureCount++;	macmib_.RTSFailureCount++;	ssrc_ += 1;			// STA Short Retry Count// change wrt Mike's code//	if(ssrc_ >= macmib_->ShortRetryLimit) {			if(ssrc_ >= macmib_.getShortRetryLimit()) {		discard(pktRTS_, DROP_MAC_RETRY_COUNT_EXCEEDED); pktRTS_ = 0;		/* tell the callback the send operation failed 		   before discarding the packet */		hdr_cmn *ch = HDR_CMN(pktTx_);		if (ch->xmit_failure_) {                        /*                         *  Need to remove the MAC header so that                          *  re-cycled packets don't keep getting                         *  bigger.                         */			// change wrt Mike's code                        //ch->size() -= ETHER_HDR_LEN11;			ch->size() -= phymib_.getHdrLen11();                        ch->xmit_reason_ = XMIT_REASON_RTS;                        ch->xmit_failure_(pktTx_->copy(),                                          ch->xmit_failure_data_);                }		//printf("(%d)....discarding RTS:%x\n",index_,pktRTS_);		discard(pktTx_, DROP_MAC_RETRY_COUNT_EXCEEDED); pktTx_ = 0;		ssrc_ = 0;		rst_cw();	} else {		//printf("(%d)...retxing RTS:%x\n",index_,pktRTS_);		struct rts_frame *rf;		rf = (struct rts_frame*)pktRTS_->access(hdr_mac::offset_);		rf->rf_fc.fc_retry = 1;		inc_cw();		mhBackoff_.start(cw_, is_idle());	}}voidMac802_11::RetransmitDATA(){	struct hdr_cmn *ch;	struct hdr_mac802_11 *mh;// change wrt Mike's code//	u_int32_t *rcount, *thresh;	u_int32_t *rcount, thresh;	assert(mhBackoff_.busy() == 0);	assert(pktTx_);	assert(pktRTS_ == 0);	ch = HDR_CMN(pktTx_);	mh = HDR_MAC802_11(pktTx_);	/*	 *  Broadcast packets don't get ACKed and therefore	 *  are never retransmitted.	 */// change wrt Mike's code//	if((u_int32_t)ETHER_ADDR(mh->dh_da) == MAC_BROADCAST) {			if((u_int32_t)ETHER_ADDR(mh->dh_ra) == MAC_BROADCAST) {		Packet::free(pktTx_); pktTx_ = 0;		/*		 * Backoff at end of TX.		 */		rst_cw();		mhBackoff_.start(cw_, is_idle());		return;	}// change wrt Mike's code//	macmib_->ACKFailureCount++;	macmib_.ACKFailureCount++;	// chnage wrt Mike's code	/*	if((u_int32_t) ch->size() <= macmib_->RTSThreshold) {		rcount = &ssrc_;		thresh = &macmib_->ShortRetryLimit;	}	else {		rcount = &slrc_;		thresh = &macmib_->LongRetryLimit;	}*/	if((u_int32_t) ch->size() <= macmib_.getRTSThreshold()) {                rcount = &ssrc_;               thresh = macmib_.getShortRetryLimit();        }        else {                rcount = &slrc_;               thresh = macmib_.getLongRetryLimit();        }	(*rcount)++;// change wrt Mike's code	//if(*rcount > *thresh) {	//	macmib_->FailedCount++;	if(*rcount >= thresh) {		/* IEEE Spec section 9.2.3.5 says this should be greater than		   or equal */		macmib_.FailedCount++;		/* tell the callback the send operation failed 		   before discarding the packet */		hdr_cmn *ch = HDR_CMN(pktTx_);		if (ch->xmit_failure_) {			// change wrt Mike's code                        //ch->size() -= ETHER_HDR_LEN11;                        ch->size() -= phymib_.getHdrLen11();			ch->xmit_reason_ = XMIT_REASON_ACK;                        ch->xmit_failure_(pktTx_->copy(),                                          ch->xmit_failure_data_);                }		discard(pktTx_, DROP_MAC_RETRY_COUNT_EXCEEDED); pktTx_ = 0;		//printf("(%d)DATA discarded: count exceeded\n",index_);		*rcount = 0;		rst_cw();	}	else {		struct hdr_mac802_11 *dh;		dh = HDR_MAC802_11(pktTx_);		dh->dh_fc.fc_retry = 1;// change wrt Mike's code		//sendRTS(ETHER_ADDR(mh->dh_da));		sendRTS(ETHER_ADDR(mh->dh_ra));		//printf("(%d)retxing data:%x..sendRTS..\n",index_,pktTx_);		inc_cw();		mhBackoff_.start(cw_, is_idle());	}}/* ======================================================================   Incoming Packet Routines   ====================================================================== */voidMac802_11::send(Packet *p, Handler *h){	double rTime;	struct hdr_mac802_11* dh = HDR_MAC802_11(p);	/* 	 * drop the packet if the node is in sleep mode	 XXX sleep mode can't stop node from sending packets	 */	EnergyModel *em = netif_->node()->energy_model();	if (em && em->sleep()) {		em->set_node_sleep(0);		em->set_node_state(EnergyModel::INROUTE);	}		callback_ = h;	sendDATA(p);// change wrt Mike's code	//sendRTS(ETHER_ADDR(dh->dh_da));	sendRTS(ETHER_ADDR(dh->dh_ra));

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲精品在线网站| 加勒比av一区二区| 亚洲免费毛片网站| 国产精品国产三级国产aⅴ中文| 精品乱码亚洲一区二区不卡| 欧美一区二区三级| 日韩精品最新网址| 精品国产亚洲在线| 中文字幕第一页久久| 中文字幕在线不卡| 亚洲在线成人精品| 日韩国产在线观看| 韩国v欧美v亚洲v日本v| 国产福利视频一区二区三区| 成人黄色大片在线观看| 色狠狠一区二区| 4438x亚洲最大成人网| 日韩视频在线一区二区| 久久久久亚洲蜜桃| 亚洲视频一二三区| 日韩精品乱码免费| 国产美女娇喘av呻吟久久 | 一本色道久久综合亚洲91 | 国产精品网友自拍| **性色生活片久久毛片| 亚洲一区国产视频| 奇米精品一区二区三区在线观看| 国产精品一区二区在线看| 成人综合在线视频| 在线观看欧美精品| 日韩免费福利电影在线观看| 久久九九久久九九| 亚洲乱码国产乱码精品精98午夜 | 国产精品亚洲午夜一区二区三区| 成人免费观看av| 欧美日韩国产系列| 亚洲精品在线网站| 亚洲乱码中文字幕综合| 捆绑紧缚一区二区三区视频| 不卡电影一区二区三区| 精品视频在线免费观看| 久久伊人蜜桃av一区二区| 亚洲三级在线播放| 日韩**一区毛片| www.日韩精品| 欧美zozo另类异族| 一区二区三区加勒比av| 国产美女在线精品| 欧美猛男男办公室激情| 国产亚洲精品bt天堂精选| 亚洲18色成人| av中文字幕不卡| 日韩精品中文字幕一区二区三区 | 免费精品99久久国产综合精品| 从欧美一区二区三区| 制服丝袜亚洲网站| 中文字幕视频一区二区三区久| 日本人妖一区二区| 91女人视频在线观看| 精品少妇一区二区三区免费观看| 日韩美女视频19| 国产精品88888| 91精品福利在线一区二区三区 | 麻豆精品蜜桃视频网站| 一本大道久久a久久精二百| 久久久久久夜精品精品免费| 五月天中文字幕一区二区| 丁香桃色午夜亚洲一区二区三区| 欧美日韩在线免费视频| 国产精品理论片| 国模少妇一区二区三区| 7777精品伊人久久久大香线蕉经典版下载 | 国产亚洲欧洲997久久综合| 午夜精品福利一区二区三区av| 东方欧美亚洲色图在线| 精品三级av在线| 亚洲一区二区三区四区在线 | 久久久蜜桃精品| 免费人成在线不卡| 欧美视频你懂的| 国产精品成人午夜| 国产精品88av| 久久久精品黄色| 极品少妇一区二区| 欧美一区二区免费视频| 亚洲www啪成人一区二区麻豆 | 日韩一区在线免费观看| 国产精品18久久久久久久久久久久 | 美女在线视频一区| 欧美日本在线观看| 亚洲国产精品一区二区尤物区| 91网站最新网址| 中文字幕视频一区| a4yy欧美一区二区三区| 国产精品视频一区二区三区不卡| 国产精品中文字幕日韩精品 | 国产精品妹子av| 国产福利91精品一区| 久久精品一级爱片| 国产乱码精品一区二区三| 久久综合国产精品| 色丁香久综合在线久综合在线观看| 中文字幕亚洲视频| 91蜜桃网址入口| 亚洲欧美另类在线| 欧美探花视频资源| 香蕉久久一区二区不卡无毒影院| 欧美午夜精品一区二区蜜桃| 午夜精品视频一区| 欧美一区二区网站| 国产在线精品不卡| 久久精品夜色噜噜亚洲aⅴ| 国产精品99久久久久久宅男| 欧美—级在线免费片| 91一区在线观看| 亚洲一级二级在线| 91精品国产综合久久福利| 蜜臀av性久久久久蜜臀aⅴ流畅| 日韩欧美国产系列| 国产成人午夜电影网| 亚洲男帅同性gay1069| 欧美日韩国产一级片| 六月丁香综合在线视频| 久久色视频免费观看| 白白色亚洲国产精品| 一区二区三区视频在线看| 制服丝袜亚洲网站| 国产高清久久久久| 亚洲精品中文字幕乱码三区| 欧美日韩亚洲综合| 黄色日韩三级电影| 亚洲欧美日韩国产成人精品影院| 欧美亚日韩国产aⅴ精品中极品| 蜜桃一区二区三区四区| 国产精品美女久久久久aⅴ国产馆| 91污片在线观看| 蜜桃视频一区二区三区| 中文字幕成人网| 884aa四虎影成人精品一区| 韩国v欧美v日本v亚洲v| 亚洲伦理在线免费看| 日韩天堂在线观看| 白白色亚洲国产精品| 偷拍日韩校园综合在线| 国产视频一区不卡| 欧美色区777第一页| 国产成人精品免费看| 婷婷六月综合亚洲| 中文字幕免费不卡| 6080亚洲精品一区二区| 成人精品小蝌蚪| 丝袜亚洲另类欧美| 亚洲欧洲韩国日本视频| 欧美一级久久久久久久大片| 成人av电影在线观看| 日韩专区欧美专区| 亚洲丝袜美腿综合| 精品国产一区二区精华| 欧美色老头old∨ideo| 国产91精品久久久久久久网曝门| 性久久久久久久久| √…a在线天堂一区| 精品剧情v国产在线观看在线| 色欲综合视频天天天| 国产美女精品在线| 日本不卡中文字幕| 亚洲制服欧美中文字幕中文字幕| 国产午夜精品在线观看| 欧美福利视频一区| 99精品视频一区二区三区| 激情综合五月婷婷| 亚洲第一在线综合网站| 1区2区3区欧美| 久久精品在这里| 日韩一区二区三区在线视频| 色综合天天综合网天天看片| 国产高清亚洲一区| 久草中文综合在线| 日韩成人一级大片| 亚洲bt欧美bt精品| 亚洲国产人成综合网站| 亚洲色图19p| 亚洲人午夜精品天堂一二香蕉| 2020国产精品| 日韩久久精品一区| 日韩欧美久久久| 久久久久免费观看| 欧美精品一区二区在线播放 | 亚洲视频免费观看| 欧美国产日本视频| 国产色综合久久| 久久久久久久免费视频了| 欧美va在线播放| 日韩精品一区二区三区三区免费| 欧美日韩亚洲国产综合| 欧美日韩一区高清| 欧美理论在线播放| 欧美美女视频在线观看| 欧美日韩国产综合草草| 欧美男女性生活在线直播观看|