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

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

?? mpreassemble.c

?? 這是全套的PPP協議的源碼
?? C
?? 第 1 頁 / 共 5 頁
字號:
* mp_reassemble_fragments_length - Find the length of reassembled packet.* * This function computes the packet length of the reassembled mp fragments.** RETURNS: packet_length*/LOCAL int mp_reassemble_fragments_length    ( 	PFW_PLUGIN_OBJ_STATE 	*pMpFramingLayerState,	ULONG 					first_fragment_index,	ULONG 					last_fragment_index	)	{	int 				packet_length = 0;	MP_FRAGMENT_CLASS	*first_mp_fragment = NULL;	MP_FRAGMENT_CLASS	*last_mp_fragment = NULL;	MP_FRAGMENT_CLASS	*temp_mp_fragment = NULL;	MP_FRAMING_LAYER_STACK_DATA *pStackData = (MP_FRAMING_LAYER_STACK_DATA *)											pMpFramingLayerState->stackData;	/* intialize packet length to 0 */	packet_length = 0;	/* Buffer - F.......L */	if (first_fragment_index <= last_fragment_index)		{		/* get the first node in the list */		first_mp_fragment = (MP_FRAGMENT_CLASS *) SLL_FIRST 					(&(pStackData->bundle.receiving_end.buffer.ppp_fragments));		/* get the first node in the list */		last_mp_fragment = (MP_FRAGMENT_CLASS *) SLL_FIRST 					(&(pStackData->bundle.receiving_end.buffer.ppp_fragments));				/*		 * traverse upto the first_fragment_index in the list, 		 * to get its pointer 		 */		while (first_fragment_index != first_mp_fragment->indexInList)			first_mp_fragment = (MP_FRAGMENT_CLASS *) SLL_NEXT 												(first_mp_fragment);		/*		 * traverse upto the last_fragment_index in the list, 		 * to get its pointer 		 */		while (last_fragment_index != last_mp_fragment->indexInList)			last_mp_fragment = (MP_FRAGMENT_CLASS *) SLL_NEXT 												(last_mp_fragment);		/*		 * add all the lengths from first fragment 		 * to last fragment, i.e., F.....L		 */		while (first_mp_fragment != last_mp_fragment)			{			packet_length = packet_length + first_mp_fragment->length;			first_mp_fragment = (MP_FRAGMENT_CLASS *) SLL_NEXT 												(first_mp_fragment);			}						/*			 * last fragment's length was not added in the loop,			 *	so add it explicitly here 			 */			packet_length = packet_length + last_mp_fragment->length;		}	else /* ROLL OVER - 0.....L - F.....Max */		{				/* get the first node in the list */		first_mp_fragment = (MP_FRAGMENT_CLASS *) SLL_FIRST 					(&(pStackData->bundle.receiving_end.buffer.ppp_fragments));		/* get the first node in the list */		last_mp_fragment = (MP_FRAGMENT_CLASS *) SLL_FIRST 					(&(pStackData->bundle.receiving_end.buffer.ppp_fragments));				/*		 * traverse upto the first_fragment_index in the list, 		 * to get its pointer 		 */		while (first_fragment_index != first_mp_fragment->indexInList)			first_mp_fragment = (MP_FRAGMENT_CLASS *) SLL_NEXT (first_mp_fragment);		/*		 * traverse upto the last_fragment_index in the list, 		 * to get its pointer		 */				while (last_fragment_index != last_mp_fragment->indexInList)			last_mp_fragment = (MP_FRAGMENT_CLASS *) SLL_NEXT (last_mp_fragment);		temp_mp_fragment = (MP_FRAGMENT_CLASS *) SLL_FIRST (&(pStackData->bundle.					receiving_end.buffer.ppp_fragments));		/* 0.........L */		while (temp_mp_fragment != last_mp_fragment)			{			packet_length = packet_length + temp_mp_fragment->length;			temp_mp_fragment = (MP_FRAGMENT_CLASS *) SLL_NEXT (temp_mp_fragment);			}				/*		 * last fragments length was not added in the loop,		 * so add it explicitly here		 */		packet_length = packet_length + last_mp_fragment->length;		/* F.........Max */		while (first_mp_fragment->next != NULL)			{			packet_length = packet_length + first_mp_fragment->length;			first_mp_fragment = (MP_FRAGMENT_CLASS *) SLL_NEXT (first_mp_fragment);			}		/*		 * last fragments length was not added in the loop,		 * so add it explicitly here		 */		packet_length = packet_length + first_mp_fragment->length;						}		return packet_length;	}/********************************************************************************* mp_assemble_received_packet_from_fragments - Reassemble the received packet* from the bufered fragments.* * This function assembles the received packet from the fragments.** RETURNS: PASS or FAIL.*/LOCAL TEST mp_assemble_received_packet_from_fragments    ( 	PFW_PLUGIN_OBJ_STATE	*pMpFramingLayerState,	ULONG 					first_fragment_index,	ULONG 					last_fragment_index,	M_BLK_ID				*packet_to_be_passed_up	)	{	M_BLK_ID			firstMBlkId = NULL;	M_BLK_ID			tempMBlkId = NULL;	M_BLK_ID			endMBlkId = NULL;	MP_FRAGMENT_CLASS 	*first_mp_fragment = NULL;	MP_FRAGMENT_CLASS 	*mp_fragment = NULL;	MP_FRAGMENT_CLASS 	*last_mp_fragment = NULL;		MP_FRAMING_LAYER_STACK_DATA *pStackData = (MP_FRAMING_LAYER_STACK_DATA *)												pMpFramingLayerState->stackData;	if (packet_to_be_passed_up == NULL)		return FAIL;	/* ONLY fragment */		if (first_fragment_index == last_fragment_index)		{		mp_fragment = (MP_FRAGMENT_CLASS *) SLL_FIRST 					(&(pStackData->bundle.receiving_end.buffer.ppp_fragments));		if (mp_fragment->mblk_fragment != NULL)			{						/* traverse upto the first_fragment_index to get its pointer */			while (mp_fragment->indexInList != first_fragment_index)				mp_fragment = (MP_FRAGMENT_CLASS *) SLL_NEXT 													((SL_NODE *) mp_fragment);			firstMBlkId = mp_fragment->mblk_fragment;			if (pStackData->bundle.receiving_end.					use_short_sequence_number == TRUE)				{				firstMBlkId->mBlkHdr.mData += sizeof 										(SHORT_SEQUENCE_NUMBER_MP_HEADER);				firstMBlkId->mBlkHdr.mLen -= sizeof 										(SHORT_SEQUENCE_NUMBER_MP_HEADER);			    if ((firstMBlkId->mBlkHdr.mFlags & M_PKTHDR)  && 						(firstMBlkId->mBlkHdr.mNext != NULL))					{					firstMBlkId->mBlkPktHdr.len -= sizeof 										(SHORT_SEQUENCE_NUMBER_MP_HEADER);					}				discard_fragment_range (pMpFramingLayerState, 							first_fragment_index, last_fragment_index, FALSE);				}			else				{				firstMBlkId->mBlkHdr.mData += sizeof 											(LONG_SEQUENCE_NUMBER_MP_HEADER);				firstMBlkId->mBlkHdr.mLen -= sizeof 											(LONG_SEQUENCE_NUMBER_MP_HEADER);			    if ((firstMBlkId->mBlkHdr.mFlags & M_PKTHDR)  && 										(firstMBlkId->mBlkHdr.mNext != NULL))					{					firstMBlkId->mBlkPktHdr.len -= sizeof 											(LONG_SEQUENCE_NUMBER_MP_HEADER);					}				discard_fragment_range (pMpFramingLayerState, 							first_fragment_index, last_fragment_index, FALSE);				}						*packet_to_be_passed_up = firstMBlkId;				return PASS;				}			else				{				discard_fragment_range (pMpFramingLayerState,							first_fragment_index, last_fragment_index, TRUE);						}		}	/* Buffer - F......L */	if (first_fragment_index < last_fragment_index)	/* changed <= to < */		{		/* get the first node in the list */		mp_fragment = (MP_FRAGMENT_CLASS *) SLL_FIRST 					(&(pStackData->bundle.receiving_end.buffer.ppp_fragments));		/* traverse upto the first_fragment_index to get its pointer */		while (mp_fragment->indexInList != first_fragment_index)			{			mp_fragment = (MP_FRAGMENT_CLASS *) SLL_NEXT 												((SL_NODE *) mp_fragment);			}		/* this is the first M_BLK_ID, chain it from here */		firstMBlkId = mp_fragment->mblk_fragment;		/* skip the MP header - check SSNHF or LSNHF */		if (pStackData->bundle.receiving_end.				use_short_sequence_number == TRUE)			{			firstMBlkId->mBlkHdr.mData += sizeof 										(SHORT_SEQUENCE_NUMBER_MP_HEADER);			firstMBlkId->mBlkHdr.mLen -= sizeof 										(SHORT_SEQUENCE_NUMBER_MP_HEADER);		    if ((firstMBlkId->mBlkHdr.mFlags & M_PKTHDR)  && 					(firstMBlkId->mBlkHdr.mNext != NULL))				{				firstMBlkId->mBlkPktHdr.len -= sizeof 										(SHORT_SEQUENCE_NUMBER_MP_HEADER);				}			}		else			{			firstMBlkId->mBlkHdr.mData += sizeof 											(LONG_SEQUENCE_NUMBER_MP_HEADER);			firstMBlkId->mBlkHdr.mLen -= sizeof 											(LONG_SEQUENCE_NUMBER_MP_HEADER);		    if ((firstMBlkId->mBlkHdr.mFlags & M_PKTHDR)  && 							(firstMBlkId->mBlkHdr.mNext != NULL))				{				firstMBlkId->mBlkPktHdr.len -= sizeof 											(LONG_SEQUENCE_NUMBER_MP_HEADER);				}					}		/* get the first node in the list */		first_mp_fragment = (MP_FRAGMENT_CLASS *) SLL_FIRST 						(&(pStackData->bundle.receiving_end.buffer.ppp_fragments));		/* get the first node in the list */		last_mp_fragment = (MP_FRAGMENT_CLASS *) SLL_FIRST 						(&(pStackData->bundle.receiving_end.buffer.ppp_fragments));		/*		 * traverse upto the first_fragment_index + 1, to get its pointer +1,		 * coz, first fragment is already with the chain		 */		while ((first_mp_fragment->indexInList != first_fragment_index + 1) && 				(first_mp_fragment != NULL))			first_mp_fragment = (MP_FRAGMENT_CLASS *) SLL_NEXT 									((SL_NODE *) first_mp_fragment);		/* traverse upto the last_fragment_index, to get its pointer */		while (last_mp_fragment->indexInList != last_fragment_index)			{			last_mp_fragment = (MP_FRAGMENT_CLASS *) SLL_NEXT 												((SL_NODE *)last_mp_fragment);			}		/* Buffer - F......L */		endMBlkId = firstMBlkId;		while (first_mp_fragment != last_mp_fragment)			{						/* check if it is fragment is NULL */			if (first_mp_fragment->mblk_fragment != NULL)				{				tempMBlkId = first_mp_fragment->mblk_fragment;								/* skip the MP Header - check SSNHF or LSNHF */				if (pStackData->bundle.receiving_end.						use_short_sequence_number == TRUE)					{					tempMBlkId->mBlkHdr.mData += sizeof 										(SHORT_SEQUENCE_NUMBER_MP_HEADER);					tempMBlkId->mBlkHdr.mLen -= sizeof 										(SHORT_SEQUENCE_NUMBER_MP_HEADER);					tempMBlkId->mBlkHdr.mFlags &= (~M_PKTHDR);					}				else					{				    tempMBlkId->mBlkHdr.mData += sizeof 										(LONG_SEQUENCE_NUMBER_MP_HEADER);					tempMBlkId->mBlkHdr.mLen -= sizeof 										(LONG_SEQUENCE_NUMBER_MP_HEADER);					tempMBlkId->mBlkHdr.mFlags &= (~M_PKTHDR);					}				/* check if the MBLK contains more than one cluster in it */				 while (endMBlkId->mBlkHdr.mNext != NULL)					{					endMBlkId = endMBlkId->mBlkHdr.mNext;					}				/* attach the new fragment */				 endMBlkId->mBlkHdr.mNext = tempMBlkId;				 endMBlkId = tempMBlkId;								}			else				{				/*				 * discard if it is NULL - from first to last fragments				 * pass TRUE here, so that the MBLK-CLBLK-Cluster chain is also 				 * freed 				 */				discard_fragment_range (pMpFramingLayerState, 							first_fragment_index, last_fragment_index, TRUE);				return (FAIL);				}			/* move to the next fragment in the list */			first_mp_fragment = (MP_FRAGMENT_CLASS *) SLL_NEXT 										((SL_NODE *)first_mp_fragment);			}	/* End of while */			/* we have not added the last fragment, so explicitly do it here */			tempMBlkId = last_mp_fragment->mblk_fragment;			if (pStackData->bundle.receiving_end.					use_short_sequence_number == TRUE)				{				tempMBlkId->mBlkHdr.mData += sizeof 										(SHORT_SEQUENCE_NUMBER_MP_HEADER);				tempMBlkId->mBlkHdr.mLen -= sizeof 										(SHORT_SEQUENCE_NUMBER_MP_HEADER);				tempMBlkId->mBlkHdr.mFlags &= (~M_PKTHDR);				}			else				{				tempMBlkId->mBlkHdr.mData += sizeof 										(LONG_SEQUENCE_NUMBER_MP_HEADER);				tempMBlkId->mBlkHdr.mLen -= sizeof 										(LONG_SEQUENCE_NUMBER_MP_HEADER);				tempMBlkId->mBlkHdr.mFlags &= (~M_PKTHDR);				}						 while (endMBlkId->mBlkHdr.mNext != NULL)				{				endMBlkId = endMBlkId->mBlkHdr.mNext;				}			 endMBlkId->mBlkHdr.mNext = tempMBlkId;	     	 endMBlkId = tempMBlkId;		/*		 * discard the fragments, pass FALSE so that 		 * MBLK-CLBLK-Cluster chain is not freed		 */		discard_fragment_range (pMpFramingLayerState, 								first_fragment_index, 								last_fragment_index, FALSE);		}	else /* ROLL OVER - 0......L and F.....Max */		{		/* Buffer F......... Max */		/* get first node in the list */		first_mp_fragment = (MP_FRAGMENT_CLASS *) SLL_FIRST 					(&(pStackData->bundle.receiving_end.buffer.ppp_fragments));			/* traverse upto first_mp_fragment in the list, to get its pointer */		while (first_mp_fragment->indexInList != first_fragment_index)			{			first_mp_fragment = (MP_FRAGMENT_CLASS *) SLL_NEXT 												((SL_NODE *)first_mp_fragment);			}		firstMBlkId = first_mp_fragment->mblk_fragment;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美性大战久久久| 国产农村妇女毛片精品久久麻豆| 欧美一级理论性理论a| 亚洲国产成人私人影院tom| 视频一区二区三区在线| 国产凹凸在线观看一区二区| 欧美一区二区三区四区在线观看| 亚洲欧洲日韩一区二区三区| 精品在线播放免费| 欧美人妇做爰xxxⅹ性高电影| 亚洲天堂福利av| 成人午夜看片网址| 久久久久久久久久电影| 欧美aⅴ一区二区三区视频| 91久久精品午夜一区二区| 久久久久高清精品| 精品一区二区日韩| 欧美精品三级日韩久久| 亚洲在线成人精品| 色婷婷综合久久久久中文| 国产精品视频免费看| 国产麻豆视频精品| 久久久精品免费网站| 国产一区高清在线| 久久先锋影音av| 久久99精品久久久久久动态图| 欧美日韩aaaaaa| 日本特黄久久久高潮| 777a∨成人精品桃花网| 蜜臀av性久久久久蜜臀aⅴ四虎 | 亚洲图片一区二区| 色哟哟精品一区| 亚洲毛片av在线| 日本福利一区二区| 午夜精品久久久久| 91精品婷婷国产综合久久 | 国产成人免费视频网站| 成人国产精品视频| 天涯成人国产亚洲精品一区av| 久久99久国产精品黄毛片色诱| 99久久免费国产| 最近中文字幕一区二区三区| 91在线porny国产在线看| 中文字幕中文字幕中文字幕亚洲无线| 国产传媒日韩欧美成人| 亚洲欧洲日韩在线| 欧美日韩久久一区| 国产精品久久午夜| 国产主播一区二区三区| 欧美日韩美女一区二区| 亚洲视频电影在线| 国产精品亚洲一区二区三区在线| 欧美视频一区二区| 亚洲欧美中日韩| 国产在线播精品第三| 在线播放亚洲一区| 一区二区三区日韩| 99麻豆久久久国产精品免费 | 色婷婷综合久久久久中文一区二区| 91精品国产综合久久福利软件| ...xxx性欧美| 国产成人av电影在线| 日韩午夜激情免费电影| 婷婷国产在线综合| 欧美色综合影院| 亚洲激情图片小说视频| 91色乱码一区二区三区| 最好看的中文字幕久久| fc2成人免费人成在线观看播放| 久久久久久9999| 激情都市一区二区| 久久久久亚洲蜜桃| 另类综合日韩欧美亚洲| 91.com在线观看| 日本不卡免费在线视频| 制服丝袜在线91| 首页国产欧美日韩丝袜| 在线播放亚洲一区| 久久精品噜噜噜成人88aⅴ| 日韩精品一区二区三区视频 | 日韩中文字幕不卡| 日韩一区二区在线观看| 麻豆久久一区二区| www国产成人| 成人小视频免费在线观看| 中文字幕电影一区| 91麻豆视频网站| 亚洲成人av电影在线| 欧美一区二区三区四区高清| 久久国产人妖系列| 中文字幕乱码日本亚洲一区二区| 丁香桃色午夜亚洲一区二区三区| 欧美国产国产综合| 一本色道久久综合亚洲91| 亚洲第一狼人社区| 欧美精品一区二区三区四区| 丁香婷婷综合激情五月色| 一级特黄大欧美久久久| 欧美一区二区三区思思人| 国产精品1区2区| 一区二区久久久| 日韩一级免费一区| 成人高清免费观看| 亚洲午夜视频在线观看| 日韩欧美中文字幕精品| 国产高清久久久| 亚洲午夜三级在线| 久久蜜臀精品av| 欧美色网站导航| 精品一二线国产| 亚洲精品日韩一| 日韩欧美www| 色婷婷综合在线| 国产乱码精品1区2区3区| 一个色在线综合| 国产欧美精品一区二区色综合朱莉| 色噜噜狠狠成人中文综合| 久久精品噜噜噜成人88aⅴ| 日产国产欧美视频一区精品| 久久精品亚洲麻豆av一区二区| 欧美综合一区二区三区| 国产精品自拍三区| 三级久久三级久久久| 亚洲欧美欧美一区二区三区| 久久新电视剧免费观看| 欧美二区三区的天堂| 色中色一区二区| 成人精品在线视频观看| 久久99热狠狠色一区二区| 香蕉影视欧美成人| 亚洲欧美日韩综合aⅴ视频| 亚洲精品在线观看网站| 欧美日韩国产高清一区二区| 91毛片在线观看| 成人一级视频在线观看| 国产麻豆欧美日韩一区| 久久aⅴ国产欧美74aaa| 免费在线看一区| 日本欧美一区二区三区乱码| 亚洲午夜在线电影| 一区二区三区av电影| 亚洲欧美日韩国产综合在线| 国产精品免费人成网站| 久久久99精品免费观看| 久久综合色之久久综合| 欧美大胆一级视频| 欧美va亚洲va香蕉在线| 日韩精品一区二区三区三区免费| 欧美日韩国产小视频| 欧美电影在哪看比较好| 欧美放荡的少妇| 日韩欧美成人午夜| 2017欧美狠狠色| 久久亚洲一区二区三区明星换脸| 日韩精品一区二区三区视频播放 | 狠狠久久亚洲欧美| 久久国产精品72免费观看| 久国产精品韩国三级视频| 久久爱www久久做| 国产精品白丝jk黑袜喷水| 懂色中文一区二区在线播放| 波波电影院一区二区三区| 99久久综合99久久综合网站| 色综合久久六月婷婷中文字幕| 91免费观看视频在线| 在线视频一区二区三| 欧美久久一二区| 精品美女一区二区三区| 日本一区二区三区电影| 亚洲图片你懂的| 亚洲尤物在线视频观看| 五月天欧美精品| 国产在线精品一区在线观看麻豆| 国产成人在线观看免费网站| 91丨porny丨国产入口| 欧美伊人久久久久久久久影院| 欧美男男青年gay1069videost| 欧美一级久久久久久久大片| 国产亚洲精品资源在线26u| 亚洲图片欧美激情| 日韩精品欧美精品| 成人精品视频一区二区三区 | 视频一区在线播放| 国产麻豆一精品一av一免费| 91偷拍与自偷拍精品| 5566中文字幕一区二区电影 | 色婷婷综合久久久久中文| 91精品久久久久久蜜臀| 国产女同性恋一区二区| 亚洲一区二区在线免费看| 麻豆91在线播放| 一本色道久久综合亚洲aⅴ蜜桃 | 国产精品无圣光一区二区| 亚洲国产一区二区在线播放| 国产在线麻豆精品观看| 91久久奴性调教| 久久精品一区二区三区不卡| 婷婷久久综合九色综合伊人色| kk眼镜猥琐国模调教系列一区二区| 欧美日韩成人激情|