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

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

?? mpreassemble.c

?? 這是全套的PPP協(xié)議的源碼
?? C
?? 第 1 頁(yè) / 共 5 頁(yè)
字號(hào):
		/* 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);			firstMBlkId->mBlkHdr.mFlags &= (~M_PKTHDR);			}		else			{			firstMBlkId->mBlkHdr.mData += sizeof 											(LONG_SEQUENCE_NUMBER_MP_HEADER);			firstMBlkId->mBlkHdr.mLen -= sizeof 											(LONG_SEQUENCE_NUMBER_MP_HEADER);			firstMBlkId->mBlkHdr.mFlags &= (~M_PKTHDR);			}		/* F...................Max */		endMBlkId = firstMBlkId;		/*		 * goto the next fragment, 		 * coz, first fragment is already with the chain 		 */			first_mp_fragment = (MP_FRAGMENT_CLASS *) SLL_NEXT 											((SL_NODE *) first_mp_fragment);		while (first_mp_fragment != NULL)			{			if (first_mp_fragment->mblk_fragment != NULL)				{				tempMBlkId = first_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 = first_mp_fragment->mblk_fragment;				endMBlkId = tempMBlkId;				}			else				{				/*				 * discard from 0 to L and F to Max and pass TRUE so that				 * MBLK-CLBLK-Cluster chain also is freed				 */				discard_fragment_range (pMpFramingLayerState, 					first_fragment_index, pStackData->bundle.receiving_end.					buffer.number_of_ppp_fragments_buffered - 1, TRUE);				discard_fragment_range (pMpFramingLayerState, 0, 												last_fragment_index, TRUE);				return (FAIL);				}			first_mp_fragment = (MP_FRAGMENT_CLASS *) SLL_NEXT 												((SL_NODE *) first_mp_fragment);			}		/* Now - 0......L */		/* 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 last_mp_fragment, 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);			}				while (first_mp_fragment != last_mp_fragment)			{			/* check if the fragment is NULL */			if (first_mp_fragment->mblk_fragment != NULL)				{				tempMBlkId = first_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 = first_mp_fragment->mblk_fragment;				endMBlkId = tempMBlkId;				}			else				{				/*				 * discard from F....Max and 0....L, pass TRUE so that				 * MBLK-CLBLK-Cluster chain is also freed 				 */				discard_fragment_range (pMpFramingLayerState, 					first_fragment_index, pStackData->bundle.receiving_end.					buffer.number_of_ppp_fragments_buffered - 1, TRUE);				discard_fragment_range (pMpFramingLayerState, 0, 										last_fragment_index, TRUE);				return (FAIL);				}					first_mp_fragment = (MP_FRAGMENT_CLASS *) SLL_NEXT 									((SL_NODE *) first_mp_fragment);			}						/* 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 from 0 to L and F to Max, but pass FLASE so that		 * MBLK-CLBLK-Cluster chain is not freed		 */		discard_fragment_range (pMpFramingLayerState, first_fragment_index,					pStackData->bundle.receiving_end.buffer.						number_of_ppp_fragments_buffered - 1, FALSE);		discard_fragment_range (pMpFramingLayerState, 0, 								last_fragment_index, FALSE);		}	/* now firstMBlkId is the chain, to be passed UP in the stack */	*packet_to_be_passed_up = firstMBlkId;	return (PASS);	}/********************************************************************************* mp_reassemble_fragments_to_ppp_packet - reassemble the received fragments into* a PPP packet.* * This function reassembles fragments to ppp packet. It computes the length of the* PPP packet and allocates memory for the ppp packet. It checks for the reception * of a non RFC-compliant packet using the adjust_reassembled_ppp_packet function* and returns the pointer to the PPP packet.** RETURNS: PPP_PACKET * or NULL*/M_BLK_ID mp_reassemble_fragments_to_ppp_packet 	( 	PFW_PLUGIN_OBJ_STATE 	*pMpFramingLayerState,	ULONG 					first_fragment_index,	ULONG 					last_fragment_index,	USHORT 					*usptr_ppp_packet_length	)	{	BYTE 		*bptr_second_byte_of_ppp_protocol_type_field = NULL;	M_BLK_ID	packet_to_be_passed_up = NULL;	char 		*pTemp = NULL;	M_BLK_ID	pTempMBlk = NULL;	if ((pMpFramingLayerState == NULL) || (usptr_ppp_packet_length == NULL))		return NULL;	/* get the length of all the fragments that are buffered */	*usptr_ppp_packet_length = (USHORT) mp_reassemble_fragments_length 									(pMpFramingLayerState, first_fragment_index,													    last_fragment_index);	if (*usptr_ppp_packet_length == 0x0000)		{		return (NULL);		}		/* add the actual length with length of HALF_SIZE_OF_PPP_PROTOCOL_FIELD */	/* PFC should have been applied by the other end of the bundle */	/* assemble received fragment to packet in the range first to last */	if (mp_assemble_received_packet_from_fragments(pMpFramingLayerState, 						first_fragment_index, last_fragment_index, 						&packet_to_be_passed_up) == FAIL)		{		pfwPrintError (__FILE__, "mp_reassemble_fragments_to_ppp_packet",						__LINE__, NULL, pMpFramingLayerState->stackObj,						"PPP packet reassembly FAILED");				return (NULL);		}	if (packet_to_be_passed_up->mBlkHdr.mNext != NULL)		{		packet_to_be_passed_up->mBlkHdr.mFlags |= M_PKTHDR;		pTempMBlk = packet_to_be_passed_up->mBlkHdr.mNext;		while (pTempMBlk != NULL)			{			pTempMBlk->mBlkHdr.mFlags &= (~M_PKTHDR);			pTempMBlk = pTempMBlk->mBlkHdr.mNext;			}		}	/* make place for protocol field uncompress */	packet_to_be_passed_up->mBlkHdr.mData -= 1;	pTemp = (char *)packet_to_be_passed_up->mBlkHdr.mData;	pTemp [0] = 0;	bptr_second_byte_of_ppp_protocol_type_field = (BYTE *) &pTemp[1];	adjust_reassembled_ppp_packet (pMpFramingLayerState, 			bptr_second_byte_of_ppp_protocol_type_field, 			usptr_ppp_packet_length, packet_to_be_passed_up);	packet_to_be_passed_up->mBlkHdr.mLen += HALF_SIZE_OF_PPP_PROTOCOL_FIELD;	*usptr_ppp_packet_length = (USHORT) (*usptr_ppp_packet_length + 										 HALF_SIZE_OF_PPP_PROTOCOL_FIELD);	/* assign the length here...*/	if ((packet_to_be_passed_up->mBlkHdr.mFlags & M_PKTHDR)  && 			(packet_to_be_passed_up->mBlkHdr.mNext != NULL))		{		packet_to_be_passed_up->mBlkPktHdr.len = *usptr_ppp_packet_length;		}    else		{		packet_to_be_passed_up->mBlkHdr.mLen = *usptr_ppp_packet_length;		}#ifdef PPP_DEBUG	printf ("MP: PPP packet of length %hu reassembled on bundle 0x%x\n",             (int) *usptr_ppp_packet_length, (int) pMpFramingLayerState->stackObj);#endif /* PPP_DEBUG */				return packet_to_be_passed_up;}/********************************************************************************* adjust_reassembled_ppp_packet - adjust the reassembled PPP packet.* * This function checks if a non RFC-compliant packet is received. It it is* received, it adjust the PPP packet and also the size of the PPP packet.** RETURNS: N/A*/LOCAL void adjust_reassembled_ppp_packet    ( 	PFW_PLUGIN_OBJ_STATE	*pMpFramingLayerState,	BYTE 					*bptr_second_byte_of_ppp_protocol_type_field,	USHORT 					*usptr_ppp_packet_length,	M_BLK_ID				packet_to_be_passed_up	)	{	if ((pMpFramingLayerState == NULL) || 		(bptr_second_byte_of_ppp_protocol_type_field == NULL) ||		(usptr_ppp_packet_length == NULL) ||		(packet_to_be_passed_up == NULL))		return;	if ((bptr_second_byte_of_ppp_protocol_type_field[0] == 												HDLC_ADDRESS) && 		 (bptr_second_byte_of_ppp_protocol_type_field[1] == 												UNNUMBERED_INFORMATION))		{		*usptr_ppp_packet_length -= SIZE_OF_PPP_CONTROL_AND_ADDRESS_FIELDS;		packet_to_be_passed_up->mBlkHdr.mLen -= 									SIZE_OF_PPP_CONTROL_AND_ADDRESS_FIELDS;				memmove ((void *) &bptr_second_byte_of_ppp_protocol_type_field[0], 				 (void *) &bptr_second_byte_of_ppp_protocol_type_field[2],				 packet_to_be_passed_up->mBlkHdr.mLen); 		}			if ((*bptr_second_byte_of_ppp_protocol_type_field & 0x01) == 0x00)		{		memmove ((void *) 				 (bptr_second_byte_of_ppp_protocol_type_field - 0x0001),				 (void *) 				 bptr_second_byte_of_ppp_protocol_type_field, 				 packet_to_be_passed_up->mBlkHdr.mLen);				--(*usptr_ppp_packet_length); 		packet_to_be_passed_up->mBlkHdr.mLen--; 		}	}/********************************************************************************* mp_search_packet_with_all_fragments_received - check if all the fragments* between the BEGIN and END packet are received for the packet.** RETURNS: N/A*/TEST mp_search_packet_with_all_fragments_received    ( 	PFW_PLUGIN_OBJ_STATE 	*pMpFramingLayerState,	ULONG 					*begin_fragment_index,	ULONG 					*end_fragment_index,	ULONG 					current_fragment_index	)	{	ULONG 				end_fragment_sequence_number = 0;	ULONG 				beginning_fragment_sequence_number = 0;	ULONG 				number_of_fragments_expected = 0;	ULONG 				number_of_fragments_received = 0;	ULONG 				last_node_sequence_number = 0;	MP_FRAGMENT_CLASS 	*last_fragment = NULL;	USHORT				no_of_dup_entries = 0;	MP_FRAMING_LAYER_STACK_DATA *pStackData = (MP_FRAMING_LAYER_STACK_DATA *) 												pMpFramingLayerState->stackData;	if ((begin_fragment_index == NULL) || (end_fragment_index == NULL))		return FAIL;	/* to see if all fragments are received between start and end fragment */	if (current_fragment_index == 0xFFFFFFFFL)		{		current_fragment_index = 0x00000000L;		}				if ((search_for_beginning_fragment (pMpFramingLayerState, current_fragment_index,								begin_fragment_index,                                 &beginning_fragment_sequence_number) == PASS) &&		(search_for_end_fragment (pMpFramingLayerState, current_fragment_index, 								end_fragment_index, 								&end_fragment_sequence_number) == PASS))		{		if (*end_fragment_index >= *begin_fragment_index) /* ...B..C..E.... */			{			number_of_fragments_expected = end_fragment_sequence_number - 										beginning_fragment_sequence_number + 1;			/* checking for dup seq no. entries, if found discard them */			no_of_dup_entries = search_for_duplicate_entries 							(pMpFramingLayerState, begin_fragment_index, end_fragment_index);			/* number_of_fragments_expected += no_of_dup_entries; */			number_of_fragments_received = *end_fragment_index - 								*begin_fragment_index + 1;			}

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
精品盗摄一区二区三区| 日本精品免费观看高清观看| 国产精品久久久久久久久图文区| 在线观看一区二区视频| 国内精品写真在线观看| 一区二区三区成人| 久久久久久久久蜜桃| 欧美午夜视频网站| 风间由美性色一区二区三区| 人妖欧美一区二区| 亚洲啪啪综合av一区二区三区| 精品剧情v国产在线观看在线| 色呦呦日韩精品| 国产精品中文字幕欧美| 日韩av电影免费观看高清完整版在线观看 | 一本到三区不卡视频| 精品一区在线看| 亚洲在线免费播放| 国产香蕉久久精品综合网| 欧美日本一区二区| 色综合天天综合网国产成人综合天 | 91精品国产入口| 色婷婷综合在线| 成人av在线播放网址| 蜜臀精品一区二区三区在线观看| 亚洲一区精品在线| 亚洲日本青草视频在线怡红院 | 久久综合av免费| 日韩一区二区在线免费观看| 欧美性一二三区| 色婷婷久久99综合精品jk白丝| 国产经典欧美精品| 国产一区欧美一区| 美女视频黄频大全不卡视频在线播放| 亚洲mv大片欧洲mv大片精品| 亚洲欧美激情一区二区| 中文av一区二区| 国产片一区二区| 久久影音资源网| 久久综合国产精品| 26uuu久久天堂性欧美| 久久综合久久综合九色| 久久精品一级爱片| 国产亚洲欧美色| 久久久久久久久久美女| 国产亚洲婷婷免费| 欧美国产一区二区在线观看| 欧美国产精品v| 中文字幕在线观看不卡| 中文字幕制服丝袜成人av| 国产精品久久久久久久蜜臀| 中文字幕人成不卡一区| 一区二区三区av电影| 亚洲午夜在线电影| 五月婷婷激情综合| 日韩视频中午一区| 欧美日本视频在线| 欧美日韩国产高清一区二区| 亚洲超碰精品一区二区| 一区二区三区四区在线| 久久久久久影视| 欧美成人国产一区二区| 色综合一个色综合亚洲| 在线观看免费一区| 成人午夜精品一区二区三区| 久久国产尿小便嘘嘘| 国产一区不卡精品| 亚洲丝袜美腿综合| 亚洲成人精品一区| 国产一区欧美一区| 91婷婷韩国欧美一区二区| 欧美亚洲另类激情小说| 日韩欧美一区在线| 国产喷白浆一区二区三区| 亚洲另类在线制服丝袜| 日韩av电影免费观看高清完整版在线观看 | 国产亚洲欧美日韩在线一区| 一区在线观看免费| 午夜精品福利一区二区三区av| 麻豆精品在线看| 成人久久久精品乱码一区二区三区| 成人av在线播放网址| 欧美高清一级片在线| 久久精品夜色噜噜亚洲aⅴ| 亚洲男人天堂av| 免费在线一区观看| 99久久国产综合精品色伊| 欧美一个色资源| 国产精品成人在线观看| 日本不卡高清视频| 加勒比av一区二区| 欧美久久久久久蜜桃| 久久精品一区二区三区不卡| 亚洲乱码国产乱码精品精的特点| 亚洲风情在线资源站| 91小视频在线观看| 国产**成人网毛片九色 | 欧美日韩一区二区在线视频| 欧美高清视频在线高清观看mv色露露十八| 777奇米成人网| 欧美国产禁国产网站cc| 久久超碰97中文字幕| av不卡一区二区三区| 久久亚洲免费视频| 香蕉成人伊视频在线观看| 成人综合激情网| 国产色综合久久| 蜜臀av亚洲一区中文字幕| 91在线国产福利| 欧美国产日韩精品免费观看| 国产乱码精品1区2区3区| 欧美精品一级二级| 亚洲一区二区在线观看视频| 91丝袜美女网| 国产精品对白交换视频| 国产成人一级电影| 久久影院午夜片一区| 国产一区三区三区| 国产精品精品国产色婷婷| 国产一区二区三区在线看麻豆| 国产精品久久久久永久免费观看| 亚洲精品一区二区三区99| 悠悠色在线精品| 国产xxx精品视频大全| 精品国产三级a在线观看| 99久久精品国产麻豆演员表| 成人一区二区三区视频| 成人综合在线观看| 精品一区二区精品| 91精品欧美一区二区三区综合在| 亚洲女厕所小便bbb| 91影视在线播放| 国产精品高潮久久久久无| 国产福利91精品一区二区三区| 欧美v国产在线一区二区三区| 日韩国产精品久久| 欧美日韩电影在线| 天天色天天操综合| 日韩女优av电影| 精品一区二区三区免费播放| 亚洲国产激情av| 欧美唯美清纯偷拍| 国产成人免费在线视频| 亚洲日本青草视频在线怡红院 | 亚洲精品视频一区二区| 亚洲国产成人av网| 欧美午夜免费电影| 午夜精品福利视频网站| 欧美乱妇15p| 日韩和欧美的一区| 日韩久久久久久| 国产精品一区二区视频| 国产女主播在线一区二区| 懂色av一区二区三区免费看| 日韩一区中文字幕| 欧美熟乱第一页| 蜜桃av噜噜一区| 久久久久综合网| 欧美一区二区三区男人的天堂| 激情欧美日韩一区二区| 国产欧美精品一区二区三区四区| 成人av资源在线| 一区2区3区在线看| 欧美一区二区在线免费观看| 国产自产高清不卡| 亚洲视频在线观看三级| 欧美亚洲一区二区在线观看| 免费视频一区二区| 久久蜜桃av一区精品变态类天堂 | 日韩国产高清影视| 久久久精品免费网站| 97久久精品人人澡人人爽| 亚洲综合999| 欧美va亚洲va在线观看蝴蝶网| 国产成人免费在线| 亚洲男人天堂av| 精品国产麻豆免费人成网站| 丁香啪啪综合成人亚洲小说| 一区二区三区在线观看动漫 | 亚洲色图在线播放| 欧美日韩一区不卡| 国产一区视频在线看| 一区2区3区在线看| 久久女同精品一区二区| 欧洲精品一区二区| 国产一区二区在线电影| 一区二区三区中文字幕| 久久久亚洲精华液精华液精华液| 91蜜桃婷婷狠狠久久综合9色| 日韩成人一级大片| 亚洲欧美中日韩| 日韩精品一区二区三区蜜臀| 91小宝寻花一区二区三区| 久久99日本精品| 亚洲卡通欧美制服中文| 久久久久国产精品人| 欧美福利电影网| 97aⅴ精品视频一二三区| 黄色资源网久久资源365| 亚洲午夜日本在线观看|