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

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

?? mpreassemble.c

?? 這是全套的PPP協議的源碼
?? C
?? 第 1 頁 / 共 5 頁
字號:
/* mpReassemble.c - MP re-assemble related source file *//* Copyright 2003 Wind River Systems, Inc. */#include "copyright_wrs.h"/*modification history--------------------02k,14may03,ijm fixed diab build warnings02j,23jan03,ijm removed redundant settings of MT_DATA as part of SPR#85876,                changed logMsg to printf02i,06aug02,jr  fixed build warnings 01h,23feb02.as  storing next pointer while deleting a ppp fragment                 in funtion discard_fragment_range                 storing next pointer while deleting a ppp fragment                 in funtion discard_fragments_up_to_index 01g,19feb02.ak	input parameter validation in all the functions01f,08oct01,ak  removed unwanted debug messages in                 adjust_reassembled_ppp_packet()01e,19sep01,ak  bug fixing in setting mflags in the MBLKs in the re-assembled                packet01d,21apr01,nts code clean-up01c,04apr01,nts changed fragments array to fragment list and made associated                 changes in all the related functions01b,02apr01,nts changed fragments from flat memory to MBLK-CLBLK-clusters01a,21feb01,nts created from routerware source base*//**$Log:: /Rtrware/devdrvrs/Mp/mpreassm $ *  * 5     3/12/99 11:24a Nishit * Mofidication in reassembly *  * 4     11/18/98 7:50a Nishit * -1 is now 0xffffffffL *  * 3     4/30/98 3:02p Alex * Mp v4.2.0 check in *  * 1     4/24/98 12:56a Release Engineer * code cleanup, code style changes, * linted, system level test * MP v4.2.0*//*DESCRIPTIONThis module implements the MP re-assemble related functions. When ever anMP fragment is received on a bundle, the fragments are buffered into a bufferwhich is maintined for each bundle in the MP system.This file contains functions which are used to buffer the fragments into thebuffer and then re-assemble the fragments into a PPP packet, using the methodproposed by the RFC 1717 and RFC 1990.INCLUDES : mpFramingLayerP.h		   vpppstr.h*//* includes */#include "vxWorks.h"#include "stdio.h"#include "stdlib.h"#include "private/ppp/mpFramingLayerP.h"#include "private/ppp/vpppstr.h"#include "netBufLib.h"#include "logLib.h"/* defines */#define		HALF_SIZE_OF_PPP_PROTOCOL_FIELD			1#define		SIZE_OF_PPP_CONTROL_AND_ADDRESS_FIELDS	2/* externs */IMPORT TEST mp_reassemble_ppp_packet (PFW_PLUGIN_OBJ_STATE *, ULONG);/* locals & forwards */TEST mp_buffer_ppp_fragment (PFW_PLUGIN_OBJ_STATE *, M_BLK_ID, USHORT,							 enum FRAGMENT_FLAG, ULONG, ULONG *);TEST mp_search_packet_with_all_fragments_received (PFW_PLUGIN_OBJ_STATE *,							 		ULONG *, ULONG *, ULONG);ULONG mp_get_M (PFW_PLUGIN_OBJ_STATE *);void mp_check_and_handle_frame_lost (PFW_PLUGIN_OBJ_STATE *, ULONG);M_BLK_ID mp_reassemble_fragments_to_ppp_packet (PFW_PLUGIN_OBJ_STATE *, 												ULONG, ULONG, USHORT *);LOCAL TEST mp_assemble_received_packet_from_fragments (PFW_PLUGIN_OBJ_STATE	*,												ULONG, ULONG, M_BLK_ID *);LOCAL void adjust_reassembled_ppp_packet (PFW_PLUGIN_OBJ_STATE *, 										  BYTE *, USHORT *, M_BLK_ID);#if 0 LOCAL BYTE *get_handle_of_mp_data (PFW_PLUGIN_OBJ_STATE *, UNION_MP_PACKET *, 								   USHORT, USHORT *);#endifLOCAL MP_FRAGMENT_CLASS * fill_ppp_fragment_array (PFW_PLUGIN_OBJ_STATE *, 								 M_BLK_ID, USHORT, enum FRAGMENT_FLAG, ULONG);LOCAL int mp_reassemble_fragments_length (PFW_PLUGIN_OBJ_STATE *, ULONG, ULONG);LOCAL TEST search_for_beginning_fragment (PFW_PLUGIN_OBJ_STATE *, ULONG,							 			  ULONG *, ULONG *);LOCAL TEST search_for_end_fragment (PFW_PLUGIN_OBJ_STATE *, ULONG, ULONG *,							 		ULONG *);LOCAL USHORT get_index_of_M (PFW_PLUGIN_OBJ_STATE *, ULONG);LOCAL USHORT get_index_of_first_ending_fragment (PFW_PLUGIN_OBJ_STATE	*);LOCAL BOOL does_fragment_bear_beginning_bit (MP_FRAGMENT_CLASS *);LOCAL BOOL does_fragment_bear_ending_bit (MP_FRAGMENT_CLASS *);LOCAL void discard_fragment_range (PFW_PLUGIN_OBJ_STATE *, ULONG, ULONG, BOOL);LOCAL void discard_fragments_up_to_index (PFW_PLUGIN_OBJ_STATE *, USHORT, BOOL);LOCAL void discard_a_ppp_fragment (PFW_PLUGIN_OBJ_STATE *, 								   MP_FRAGMENT_CLASS *, BOOL);LOCAL USHORT search_for_duplicate_entries (PFW_PLUGIN_OBJ_STATE *, ULONG *, ULONG *);#if 0LOCAL void ppp_buffer_print (PFW_PLUGIN_OBJ_STATE	*pMpFramingLayerState);#endif/********************************************************************************* mp_buffer_ppp_fragment - Add the PPP fragment into the buffer.* * This function ppp fragment into the buffer, using the insertion sort algorithm** RETURNS: PASS or FAIL*/TEST mp_buffer_ppp_fragment    ( 	PFW_PLUGIN_OBJ_STATE	*pMpFramingLayerState,	M_BLK_ID				fragment,	USHORT 					mp_packet_length,	enum FRAGMENT_FLAG 		fragment_flag,	ULONG 					sequence_number,	ULONG 					*uptr_current_fragment_index	)	{	USHORT 				mp_data_length = 0;	MP_FRAGMENT_CLASS 	*mp_fragment = NULL;	MP_FRAGMENT_CLASS 	*temp_fragment = NULL;	MP_FRAGMENT_CLASS 	*prev_fragment = NULL;	MP_FRAGMENT_CLASS 	*temporary_fragment = NULL;	BOOL				last_in_list = FALSE;	MP_PACKET_WITH_LONG_SEQUENCE_NUMBER *mpPacketWithLongSequenceNumber;	MP_PACKET_WITH_SHORT_SEQUENCE_NUMBER *mpPacketWithShortSequenceNumber;	MP_FRAMING_LAYER_STACK_DATA *pStackData = (MP_FRAMING_LAYER_STACK_DATA *)												pMpFramingLayerState->stackData;	if ((pMpFramingLayerState == NULL) || (fragment == NULL) || 		(uptr_current_fragment_index == NULL))		return FAIL;	if (pStackData->bundle.receiving_end.use_short_sequence_number == FALSE)		{		/*		 * support RFC 1990 section 3 page 9 - 		 * discard the packets with Reserved Bits SET		 */		mpPacketWithLongSequenceNumber = mtod (fragment, 										MP_PACKET_WITH_LONG_SEQUENCE_NUMBER *);		if (mpPacketWithLongSequenceNumber->header.reserved_field > 0)			{			pfwPrintError (__FILE__, "mp_buffer_ppp_fragment",							__LINE__, NULL, pMpFramingLayerState->stackObj,							"Invalid LSNHF Packet: Reserved Bits are SET");			return (FALSE);			}		/* decrement the length here */		mp_data_length = (USHORT) (mp_packet_length - 									sizeof (LONG_SEQUENCE_NUMBER_MP_HEADER));		}		else		{		/*		 * support RFC 1990 section 3 page 9 - 		 * discard the packets with Reserved Bits SET		 */		mpPacketWithShortSequenceNumber = mtod (fragment, 									   MP_PACKET_WITH_SHORT_SEQUENCE_NUMBER *);		if (mpPacketWithShortSequenceNumber->header.reserved_field > 0)			{			pfwPrintError (__FILE__, "mp_buffer_ppp_fragment",							__LINE__, NULL, pMpFramingLayerState->stackObj,							"Invalid SSNHF Packet: Reserved Bits are SET");			return (FALSE);			}		/* decrement the length here */		mp_data_length = (USHORT) (mp_packet_length - 							sizeof (SHORT_SEQUENCE_NUMBER_MP_HEADER));		}	/*	 * special case - no fragments buffered, so, use sllInit and put the new     * node at the tail	 */	if (pStackData->bundle.receiving_end.buffer.			number_of_ppp_fragments_buffered == 0x0000)	/* special case */		{		sllInit (&(pStackData->bundle.receiving_end.buffer.ppp_fragments));		mp_fragment = fill_ppp_fragment_array (pMpFramingLayerState, 							fragment, mp_data_length, fragment_flag, 							sequence_number);		sllPutAtTail (&(pStackData->bundle.receiving_end.buffer.ppp_fragments),						(SL_NODE *) (mp_fragment));		mp_fragment->indexInList = 0;		*uptr_current_fragment_index = 0;	 		return (PASS);		}	temp_fragment = (MP_FRAGMENT_CLASS *) SLL_FIRST 					(&(pStackData->bundle.receiving_end.buffer.ppp_fragments));	 /*	  * check if there is only one node and to insert it 	  * at the start node itself 	  */	if (temp_fragment->next == NULL)		{		/* check the sequence number and insert */		if (sequence_number < (temp_fragment->sequence_number))			{			mp_fragment = fill_ppp_fragment_array (pMpFramingLayerState, 							fragment, mp_data_length, fragment_flag, 							sequence_number);			sllPutAtHead (&(pStackData->bundle.receiving_end.buffer.ppp_fragments), 						(SL_NODE *) (mp_fragment));			*uptr_current_fragment_index = 0;						mp_fragment->indexInList = 0;				mp_fragment->next->indexInList = 1;			}		else			{			mp_fragment = fill_ppp_fragment_array (pMpFramingLayerState, 							fragment, mp_data_length, fragment_flag, 							sequence_number);			sllPutAtTail (&(pStackData->bundle.receiving_end.buffer.ppp_fragments), 						(SL_NODE *) (mp_fragment));					*uptr_current_fragment_index = 1;			mp_fragment->indexInList = 1;			}		}	else /* traverse the list and insert it according to 			the ascending order of sequence number */		{		while (temp_fragment != NULL)			{						if (sequence_number < (temp_fragment->sequence_number))				{								prev_fragment = (MP_FRAGMENT_CLASS *) sllPrevious 					(&(pStackData->bundle.receiving_end.buffer.ppp_fragments),					(SL_NODE *)temp_fragment);				if (prev_fragment == NULL)					{										mp_fragment = fill_ppp_fragment_array (pMpFramingLayerState,								fragment, mp_data_length, fragment_flag, 								sequence_number);					mp_fragment->indexInList = 0;					sllPutAtHead 						(&(pStackData->bundle.receiving_end.buffer.ppp_fragments), 								(SL_NODE *) (mp_fragment));					*uptr_current_fragment_index = 0;					/*					 * to update the index inforamtion of other 					 *  fragments after adding new fragment					 */					temporary_fragment = (MP_FRAGMENT_CLASS *) SLL_FIRST 					(&(pStackData->bundle.receiving_end.buffer.ppp_fragments));					temporary_fragment = (MP_FRAGMENT_CLASS *) SLL_NEXT 											((SL_NODE *)temporary_fragment);					while (temporary_fragment != NULL)						{						last_in_list = TRUE;						temporary_fragment->indexInList = 								(temporary_fragment->indexInList) + 1;						temporary_fragment = (MP_FRAGMENT_CLASS *) SLL_NEXT 												((SL_NODE *)temporary_fragment);						}					break;					}				else					{					mp_fragment = fill_ppp_fragment_array (pMpFramingLayerState, 									fragment, mp_data_length, fragment_flag, 									sequence_number);					prev_fragment->next = mp_fragment;					mp_fragment->next = temp_fragment;					*uptr_current_fragment_index = 									(prev_fragment->indexInList) + 1;					mp_fragment->indexInList = 									(prev_fragment->indexInList) + 1;										/*					 * to update the index inforamtion of other 					 *  fragments after adding new fragment					 */					while (temp_fragment != NULL)						{						last_in_list = TRUE;						temp_fragment->indexInList = 									temp_fragment->indexInList + 1;						temp_fragment = (MP_FRAGMENT_CLASS *) SLL_NEXT 												((SL_NODE *)temp_fragment);						}										break;						}				}				temp_fragment = (MP_FRAGMENT_CLASS *) SLL_NEXT 										((SL_NODE *)temp_fragment);			}		if (last_in_list == FALSE)			{			mp_fragment = fill_ppp_fragment_array (pMpFramingLayerState, 									fragment, mp_data_length, fragment_flag, 									sequence_number);			temp_fragment = (MP_FRAGMENT_CLASS *) SLL_LAST 					(&(pStackData->bundle.receiving_end.buffer.ppp_fragments));			mp_fragment->indexInList = temp_fragment->indexInList + 1;			sllPutAtTail 				(&(pStackData->bundle.receiving_end.buffer.ppp_fragments), 						((SL_NODE *) mp_fragment));				*uptr_current_fragment_index = mp_fragment->indexInList;			}		}	return (PASS);	}/********************************************************************************* fill_ppp_fragment_array - Populate the PPP fragment array.* * This function populates the PPP fragment array element with the information* like the sequence number, fragment_flag, pointer to the ppp fragment and * increments the count, the number of fragments buffered.** RETURNS: N/A*/LOCAL MP_FRAGMENT_CLASS * fill_ppp_fragment_array    ( 	PFW_PLUGIN_OBJ_STATE 	*pMpFramingLayerState,	M_BLK_ID				fragment,	USHORT 					ppp_fragment_length, 	enum FRAGMENT_FLAG 		fragment_flag,	ULONG 					sequence_number	)	{	MP_FRAGMENT_CLASS 	* mp_fragment = NULL;	PFW_OBJ 			* pfwObj = NULL;	MP_FRAMING_LAYER_STACK_DATA *pStackData = (MP_FRAMING_LAYER_STACK_DATA *)												pMpFramingLayerState->stackData;	if (fragment == NULL)		return NULL;	/* get the framework obj, for usage with pfwMalloc */	pfwObj = pfwStackObjPfwGet (pMpFramingLayerState->stackObj);	/* allocate memory for the fragment class, to be added the list */	mp_fragment = (MP_FRAGMENT_CLASS *) pfwMalloc (pfwObj, 											sizeof (MP_FRAGMENT_CLASS));	if (mp_fragment == NULL)		{		pfwPrintError (__FILE__, "fill_ppp_fragment_array",						__LINE__, NULL, pMpFramingLayerState->stackObj,						"Could not allocate memory for the incoming packet");				return NULL;			}	/* populate the fragment */	mp_fragment->sequence_number = sequence_number;	mp_fragment->fragment_flag = fragment_flag;	mp_fragment->mblk_fragment = fragment;	mp_fragment->length = ppp_fragment_length;	/* increment the number of fragments buffered */	++pStackData->bundle.receiving_end.buffer.number_of_ppp_fragments_buffered;	return (mp_fragment);	}/********************************************************************************

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩欧美亚洲另类制服综合在线| 国产最新精品精品你懂的| 大白屁股一区二区视频| 欧美成人a∨高清免费观看| 久88久久88久久久| 欧美精彩视频一区二区三区| 国产精品99久久不卡二区| 国产精品免费视频网站| 91小视频免费看| 亚洲影视在线观看| 91精品欧美综合在线观看最新| 日本最新不卡在线| 精品成人一区二区| 波多野结衣精品在线| 一区二区在线观看av| 69久久99精品久久久久婷婷| 国产一区二区网址| 亚洲日穴在线视频| 欧美一区午夜视频在线观看 | 亚洲天堂福利av| 欧美性大战久久久久久久| 麻豆91免费观看| 国产精品传媒入口麻豆| 欧美欧美午夜aⅴ在线观看| 另类人妖一区二区av| 亚洲欧洲国产专区| 26uuu国产在线精品一区二区| 久久se精品一区精品二区| 中文字幕一区二区三区四区| 欧美精选一区二区| 粗大黑人巨茎大战欧美成人| 亚洲成人av一区二区三区| 亚洲精品一区二区三区福利| 色综合久久久网| 国产在线精品国自产拍免费| 尤物在线观看一区| 2020日本不卡一区二区视频| 在线观看日韩国产| 国产精品亚洲一区二区三区妖精| 亚洲激情网站免费观看| 久久久不卡网国产精品二区| 在线精品视频免费观看| 国产伦理精品不卡| 日日摸夜夜添夜夜添精品视频| 国产人妖乱国产精品人妖| 欧美日韩免费电影| 99精品热视频| 国产一区二区中文字幕| 日韩影院精彩在线| 亚洲乱码国产乱码精品精小说 | 精品无人码麻豆乱码1区2区| 亚洲毛片av在线| 国产欧美精品国产国产专区 | 欧美精品一区二区在线观看| 97精品国产露脸对白| 国产一区二区三区不卡在线观看| 亚洲成人精品影院| 亚洲色图欧美激情| 国产精品美女视频| 久久久国产一区二区三区四区小说| 91麻豆精品国产综合久久久久久| 91久久线看在观草草青青| 成人午夜碰碰视频| 国产成人日日夜夜| 国产精品一区二区在线看| 日产国产欧美视频一区精品| 午夜伦理一区二区| 亚洲国产精品一区二区久久 | 日韩精品一二三| 亚洲自拍欧美精品| 一区二区三区四区五区视频在线观看| 亚洲国产成人私人影院tom| 2024国产精品| 精品久久人人做人人爰| 日韩亚洲欧美中文三级| 欧美一区二区三区免费观看视频| 欧美日韩你懂得| 欧美日韩免费在线视频| 欧美网站一区二区| 欧美乱妇15p| 欧美色图一区二区三区| 欧美日韩久久久| 欧美一区二区福利在线| 日韩精品一区二区三区视频| 2023国产精华国产精品| 国产午夜精品一区二区三区嫩草| 丝袜美腿高跟呻吟高潮一区| 亚洲福利视频导航| 五月天欧美精品| 日韩成人dvd| 久久福利视频一区二区| 国产曰批免费观看久久久| 国产精品中文字幕欧美| 成人免费黄色大片| 91视视频在线观看入口直接观看www | 亚洲激情网站免费观看| 亚洲午夜一二三区视频| 热久久久久久久| 国产一区亚洲一区| 91丨porny丨首页| 欧美日产在线观看| 欧美精品一区二区三区四区| 中文子幕无线码一区tr| 依依成人精品视频| 欧美aaa在线| 从欧美一区二区三区| 91福利在线播放| 日韩一卡二卡三卡| 欧美激情在线看| 亚洲一二三四在线观看| 精品亚洲porn| jlzzjlzz欧美大全| 91麻豆精品国产自产在线| 国产日产精品一区| 亚洲国产成人高清精品| 韩国三级电影一区二区| 91久久国产最好的精华液| 欧美一级一区二区| 亚洲欧洲精品天堂一级| 免费视频最近日韩| 99精品久久只有精品| 538在线一区二区精品国产| 国产精品色哟哟网站| 天堂蜜桃一区二区三区 | 成人精品视频一区| 欧美精品亚洲二区| 日本一区二区三区在线不卡 | 精品入口麻豆88视频| 亚洲精品欧美综合四区| 久久精品国产免费| 色999日韩国产欧美一区二区| 精品国精品国产| 亚洲影院久久精品| 成人免费福利片| 欧美成人免费网站| 亚洲超丰满肉感bbw| 成人黄色免费短视频| 欧美tk—视频vk| 亚洲超碰97人人做人人爱| 91蜜桃在线免费视频| 欧美国产在线观看| 麻豆高清免费国产一区| 欧美日韩国产免费一区二区| 亚洲欧洲精品成人久久奇米网| 国产一区二区调教| 欧美一区二区三区四区在线观看 | 91精品国产一区二区人妖| 国产精品久久综合| 国产一区美女在线| 欧美大片一区二区| 日产精品久久久久久久性色| 欧美私人免费视频| 一区二区免费在线| 成人激情av网| 国产精品欧美经典| 国产成人av福利| 久久久蜜桃精品| 精品一区二区av| 欧美不卡一区二区三区四区| 日本网站在线观看一区二区三区 | 亚洲色图视频网站| 99国内精品久久| 国产精品久久久久一区二区三区| 国产欧美视频在线观看| 老司机精品视频在线| 精品久久五月天| 成人性生交大片免费看中文| 亚洲天堂网中文字| 欧美三级视频在线| 国模无码大尺度一区二区三区| 精品国产91洋老外米糕| 国产精品88av| 视频一区中文字幕国产| 久久婷婷色综合| 日韩国产在线一| 91天堂素人约啪| 自拍偷拍亚洲综合| fc2成人免费人成在线观看播放| 欧美成人伊人久久综合网| 日韩av电影免费观看高清完整版| 91国偷自产一区二区三区观看| 亚洲激情av在线| 91女厕偷拍女厕偷拍高清| 国产欧美日韩亚州综合| 国产成人欧美日韩在线电影| 欧美国产亚洲另类动漫| 一本大道久久a久久精品综合| 亚洲裸体xxx| 欧美日本国产视频| 久久精品免费观看| 国产喷白浆一区二区三区| 91免费版pro下载短视频| 亚洲成人激情自拍| 欧美r级在线观看| 99精品黄色片免费大全| 亚洲福利视频导航| 久久精品一区二区三区不卡| av福利精品导航| 日韩av一区二| 国产精品久久久久久久裸模|