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

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

?? pppasyncframing.c

?? 這是全套的PPP協議的源碼
?? C
?? 第 1 頁 / 共 3 頁
字號:
	netMblkClChainFree(inFrame);        RFC2233_COUNTER_UPDATE(stackData->pfwRFC2233CountTest, 				stackData->pfwRFC2233CountPair,                               M2_ctrId_ifInDiscards, 1);	return ERROR;	}    else	{	/* netTupleGet will not clear mLen */	outPacket->mBlkHdr.mLen    = 0;        outPacket->mBlkHdr.mFlags &= ~M_PKTHDR;        outPacket->mBlkPktHdr.len  = 0;	}    if (stackData->peerToLocalACCompression == TRUE)	outPacket->mBlkHdr.mData += 2;    if (stackData->peerToLocalProtocolCompression == TRUE)	outPacket->mBlkHdr.mData += 1;    /* decode the packet by removing all the stuffed AHDLC's escape chars */    if (convertAsynchronousDataToNormalData(state,inFrame,outPacket)	== ERROR)	{#ifdef PPP_DEBUG	    printf ("PPP: Error: Bad data on asynchronous port \n");#endif /* PPP_DEBUG */	netMblkClChainFree(inFrame);	netMblkClChainFree(outPacket);	return ERROR;	}    /* free received Frame */    netMblkClChainFree(inFrame);      if (stackData->receiveFcsSize == PPP_16BIT_FCS)	{	/* find the end of the decoded packet chain; use inFrame as temp store*/	inFrame = outPacket;	while(inFrame->mBlkHdr.mNext != NULL)	    inFrame = inFrame->mBlkHdr.mNext;	/* Check the FCS */	calculated16BitCkSum = calculate16BitFcs(PPPINITFCS16, outPacket);	if (calculated16BitCkSum != PPPGOODFCS16)	    {	    (counterInterface->pppLinkStatusBadFCSsIncrement)(				    stackData->pppLinkCounterInterface.state);#ifdef PPP_DEBUG	    printf ("PPP: Error: Bad 16 Bit Checksum on Asynchronous port \n");#endif /* PPP_DEBUG */	    netMblkClChainFree(outPacket);	    RFC2233_COUNTER_UPDATE(stackData->pfwRFC2233CountTest, 				    stackData->pfwRFC2233CountPair,                                   M2_ctrId_ifInErrors, 1);	    return (ERROR);	    }	/* delete 16-bit FCS from end of frame */        m_adj(outPacket, -2);	}    else if (stackData->receiveFcsSize == PPP_32BIT_FCS)	{	/* find the end of the decoded packet chain; use inFrame as temp store*/	inFrame = outPacket;	while(inFrame->mBlkHdr.mNext != NULL)	    inFrame = inFrame->mBlkHdr.mNext;	/* Check the FCS */	calculated32BitCkSum = calculate32BitFcs(PPPINITFCS32, outPacket);	if (calculated32BitCkSum != PPPGOODFCS32)	    {	    (counterInterface->pppLinkStatusBadFCSsIncrement)(				    stackData->pppLinkCounterInterface.state);#ifdef PPP_DEBUG	    printf ("PPP: Error: Bad 32 Bit Checksum on Asynchronous port \n");#endif /* PPP_DEBUG */	    netMblkClChainFree(outPacket);	    RFC2233_COUNTER_UPDATE(stackData->pfwRFC2233CountTest, 				    stackData->pfwRFC2233CountPair,                                   M2_ctrId_ifInErrors, 1);	    return (ERROR);	    }	/* delete 32-bit FCS from end of frame */        m_adj(outPacket, -4);	}    else if (stackData->receiveFcsSize != PPP_NULL_FCS) /* NULL FCS */	{	netMblkClChainFree(outPacket);        RFC2233_COUNTER_UPDATE(stackData->pfwRFC2233CountTest, 				stackData->pfwRFC2233CountPair,                               M2_ctrId_ifInErrors, 1);	return ERROR;	}    if (decompress_ppp_header(state,outPacket) == ERROR)	{	netMblkClChainFree(outPacket);	return ERROR;	}    /* strip HDLC header */    outPacket->mBlkHdr.mData +=2;    outPacket->mBlkHdr.mLen -=2;    outPacket->mBlkPktHdr.len -= 2;    /* Check if total packet length - protocol field exceeds local MRU */    if (outPacket->mBlkPktHdr.len - sizeof (PPP_HEADER) >        max (stackData->localMru,DEFAULT_MAXIMUM_MRU))        {        (counterInterface->pppLinkStatusPacketTooLongsIncrement)(                                    stackData->pppLinkStatusInterface.state);#ifdef PPP_DEBUG            printf ("PPP: Error: Packet Too Long: Information  Field = %d \n",                    outPacket->mBlkPktHdr.len - 2);#endif /* PPP_DEBUG */        RFC2233_COUNTER_UPDATE(stackData->pfwRFC2233CountTest,                               stackData->pfwRFC2233CountPair,                               M2_ctrId_ifInErrors, 1);        netMblkClChainFree(outPacket);        return (ERROR);        }    *packet = outPacket;    return (OK);    }/********************************************************************************* convertAsynchronousDataToNormalData - convert asynchronous data to normal** RETURNS: OK or ERROR*/LOCAL STATUS convertAsynchronousDataToNormalData     (    PFW_PLUGIN_OBJ_STATE * state,    M_BLK_ID	           inFrame,    M_BLK_ID	           outPacket    )    {    BYTE	actualByte = 0;    USHORT	byteCounter;    USHORT	numberOfBytes = 0;    char	* pData = NULL;    int		byteCount = 0;    int		totalBytesDecoded = 0;    BOOL        escape;    M_BLK_ID	outPacketChainHead = outPacket;    ASYNC_FRAMING_STACK_DATA *stackData = state->stackData;    escape = FALSE;    do	{	numberOfBytes = inFrame->mBlkHdr.mLen;	pData = inFrame->mBlkHdr.mData; 	for (byteCounter = 0; byteCounter < numberOfBytes; 	     ++byteCounter)	    {	    actualByte = *((BYTE *) ((ULONG) pData + byteCounter));            switch (actualByte)                {                case HDLC_FLAG_SEQUENCE:                    /*                     *  Flags should only ever occur at the end of the frame                     *  (otherwise something is wrong with the SIO adapter).                     *                     *  According to RFC1662, a control escape'd FLAG indicates                     *  an aborted frame, which should be silently discarded.                     *                     *  In any case, FLAGs are never copied to the output mbuf.                     */                    if (escape)                        {                        printf ("PPP: flag after control escape.\n");                        return (ERROR); /* escaped FLAG: discard frame */                        }                    else if ((byteCounter == numberOfBytes - 1) &&                             (inFrame->mBlkHdr.mNext == NULL))                        {		        ;               /* elide end-of-frame FLAG */                        }                    else                        {                        printf ("PPP: Error: Flag in mid-frame.\n");                        return (ERROR);                        }                    break;	        case ASYNC_CONTROL_ESCAPE_SEQUENCE:                    /*                     *  Set the 'escape' state so the next byte is decoded.                     *  Do not copy the control escape to the output mbuf.                     *                     *  It is an error for the control escape character to                     *  appear in an escaped state.                     */                    if (escape)                        {		        printf ("PPP: Error: Consecutive control escape "                                "sequences found in packet on Async port\n");                        return (ERROR);                        }                    escape = TRUE;                    break;                default:                    /*                     *  Any other character: decode if it's escaped, and copy                     *  to the output mbuf.                     */                    if ((actualByte < 0x20) &&                        (stackData->peerToLocalACCMap & (1 << actualByte)))                        {                        continue;  /* ugh! (continue 'for' loop) */                        }                                            if (escape)                        {                        actualByte ^= ASYNC_SIXTH_BIT_COMPLEMENT;                        escape = FALSE;                        }	            outPacket->mBlkHdr.mData [byteCount++] = actualByte;	            outPacket->mBlkHdr.mLen++;	            totalBytesDecoded++;                    /*                     *  If at the end of the current output mbuf, add another                     *  one to the chain.                     */	            if ((outPacket->mBlkHdr.mData + byteCount) ==		        (outPacket->pClBlk->clNode.pClBuf +                          outPacket->pClBlk->clSize))		        {		        M_BLK_ID pNextMblk;		        if ((pNextMblk = netTupleGet (stackData->netPoolId,                                                      outPacket->mBlkHdr.mLen,					              M_DONTWAIT,                                                      MT_DATA,                                                      TRUE)) == NULL)		            {		            printf ("AsyncFraming:Failed to get another mBlk "                                   "for decoded frame:Stack 0x%x\n",			           (UINT32) state->stackObj);		            return ERROR;		            }			/* netTupleGet will not clear mLen */			pNextMblk->mBlkHdr.mLen  = 0;			pNextMblk->mBlkHdr.mFlags  &= ~M_PKTHDR;			pNextMblk->mBlkPktHdr.len  = 0;		        outPacket->mBlkHdr.mNext = pNextMblk;		        outPacket = outPacket->mBlkHdr.mNext;		        byteCount = 0;                        }                    break;		}	    }	} while ((inFrame = inFrame->mBlkHdr.mNext) != NULL);    /*     *  Check that the last byte seen was a FLAG - if not, the frame is     *  damaged (i.e. the SIO adapter is broken).     */    if (actualByte != HDLC_FLAG_SEQUENCE)        {        printf ("PPP: Error: frame ends with non-FLAG.\n");        return (ERROR);        }    outPacketChainHead->mBlkHdr.mFlags |= M_PKTHDR;    outPacketChainHead->mBlkPktHdr.len = totalBytesDecoded;    return (OK);    }/********************************************************************************* decompress_ppp_header - decompress the PPP header** RETURNS: OK or ERROR*/LOCAL STATUS decompress_ppp_header     (    PFW_PLUGIN_OBJ_STATE *state,    M_BLK_ID	packet    )    {    UCHAR protocol_type_in_bytes[sizeof (USHORT_ENUM (PPP_PROTOCOL_TYPE))];    BOOL address_and_control_fields_are_compressed;    BOOL protocol_field_is_compressed;    _PPP_HEADER ppp_header;    ASYNC_FRAMING_STACK_DATA *stackData = state->stackData;    _PPP_PACKET *sptr_rxed_packet = (_PPP_PACKET *)packet->mBlkHdr.mData;    int lengthAdj;    USHORT_ENUM (PPP_PROTOCOL_TYPE) protocol_type;        PPP_LINK_STATUS_COUNTER_INCREMENT_INTERFACE * counterInterface =                    (PPP_LINK_STATUS_COUNTER_INCREMENT_INTERFACE*)                                stackData->pppLinkCounterInterface.interfaceObj;    if ((sptr_rxed_packet->header.hdlc_address == HDLC_ADDRESS) &&	(sptr_rxed_packet->header.hdlc_control == UNNUMBERED_INFORMATION) &&	(sptr_rxed_packet->header.protocol_type == LCP_PROTOCOL))	{	return (OK);	}    address_and_control_fields_are_compressed = FALSE;    protocol_field_is_compressed = FALSE;    ppp_header.hdlc_address = HDLC_ADDRESS;    ppp_header.hdlc_control = UNNUMBERED_INFORMATION;    if (stackData->peerToLocalACCompression == TRUE)	{	if (sptr_rxed_packet->header.hdlc_address != HDLC_ADDRESS) 	    {	    address_and_control_fields_are_compressed = TRUE;	    memcpy (&protocol_type_in_bytes[0],(char *)sptr_rxed_packet,		    sizeof (USHORT_ENUM (PPP_PROTOCOL_TYPE)));	    }    	else	    {            USHORT protocol_type = sptr_rxed_packet->header.protocol_type;	    memcpy (&protocol_type_in_bytes[0],                     &protocol_type,                    sizeof (USHORT_ENUM (PPP_PROTOCOL_TYPE)));	    }	}    else	{        /* Check address and control fields */        if (sptr_rxed_packet->header.hdlc_address != HDLC_ADDRESS)            {            (counterInterface->pppLinkStatusBadAddressesIncrement)(                                    stackData->pppLinkStatusInterface.state);#ifdef PPP_DEBUG            printf ("PPP: Error: Bad Address Field on Asynchronous port \n");#endif /* PPP_DEBUG */            RFC2233_COUNTER_UPDATE(stackData->pfwRFC2233CountTest,                               stackData->pfwRFC2233CountPair,                               M2_ctrId_ifInErrors, 1);            return (ERROR); /* Discard frame */            }        if (sptr_rxed_packet->header.hdlc_control != UNNUMBERED_INFORMATION)            {            (counterInterface->pppLinkStatusBadControlsIncrement)(                                    stackData->pppLinkStatusInterface.state);#ifdef PPP_DEBUG            printf ("PPP: Error: Bad Control Field on Asynchronous port \n");#endif /* PPP_DEBUG */            RFC2233_COUNTER_UPDATE(stackData->pfwRFC2233CountTest,                               stackData->pfwRFC2233CountPair,                               M2_ctrId_ifInErrors, 1);            return (ERROR); /* Discard frame */            }        protocol_type = sptr_rxed_packet->header.protocol_type; 	memcpy (&protocol_type_in_bytes[0],			&protocol_type,			sizeof (USHORT_ENUM (PPP_PROTOCOL_TYPE)));	}    if ((protocol_type_in_bytes[0] & 0x1) == 0)	{	memcpy (&protocol_type,                (void *)&protocol_type_in_bytes[0],		sizeof (USHORT_ENUM (PPP_PROTOCOL_TYPE)));        ppp_header.protocol_type = protocol_type;	}    else	{	if (stackData->peerToLocalProtocolCompression != TRUE)            {	    RFC2233_COUNTER_UPDATE(stackData->pfwRFC2233CountTest, 				    stackData->pfwRFC2233CountPair,                                   M2_ctrId_ifInErrors, 1);	    RFC2233_COUNTER_UPDATE(stackData->pfwRFC2233CountTest, 				    stackData->pfwRFC2233CountPair,                                   M2_ctrId_ifInUnknownProtos, 1);            	    return (ERROR);		/* Discard frame */            }	protocol_field_is_compressed = TRUE;	*((char *) &ppp_header.protocol_type) = 0x00;	*(((char *) &ppp_header.protocol_type) + 1) = protocol_type_in_bytes[0];	}    if (address_and_control_fields_are_compressed == TRUE)	{	sptr_rxed_packet = (_PPP_PACKET *) (((ULONG) sptr_rxed_packet) -	(sizeof (ppp_header.hdlc_address) + sizeof (ppp_header.hdlc_control)));        lengthAdj = (USHORT) (sizeof (ppp_header.hdlc_address) +                     sizeof (ppp_header.hdlc_control));        packet->mBlkHdr.mLen += lengthAdj;        packet->mBlkPktHdr.len += lengthAdj;	}    if (protocol_field_is_compressed == TRUE)	{	sptr_rxed_packet = (_PPP_PACKET *) (((ULONG) sptr_rxed_packet) -                                             sizeof (char));	packet->mBlkHdr.mLen += (USHORT) sizeof (char);        packet->mBlkPktHdr.len += (USHORT) sizeof (char);	}    memcpy ((char *)sptr_rxed_packet,&ppp_header,sizeof (_PPP_HEADER));    packet->mBlkHdr.mData = (char *)sptr_rxed_packet;    return (OK);    }/******************************************************************************** AsyncFrameEventHandler -** This routine collects ppp attributes**/LOCAL STATUS AsyncFrameEventHandler    (    PFW_PLUGIN_OBJ_STATE * state,    void *eventData    )    {    PPP_ATTRIBUTES *p_ppp_attr_data = (PPP_ATTRIBUTES *)eventData;    p_ppp_attr_data->framingType = PPP_ASYNC_FRAMING;    return OK;    }

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲精品日韩一| 91黄色免费版| 日本不卡1234视频| 亚洲电影一级黄| 亚洲一二三区在线观看| 一二三四社区欧美黄| 亚洲一区二区四区蜜桃| 亚洲综合色网站| 亚洲国产另类av| 午夜伊人狠狠久久| 日韩福利视频网| 日本丰满少妇一区二区三区| 紧缚奴在线一区二区三区| 精品在线播放免费| 国产成人小视频| 成人午夜av电影| 成av人片一区二区| 久久久国产午夜精品| 91久久国产最好的精华液| 粉嫩aⅴ一区二区三区四区 | 久久国产三级精品| 中文字幕国产精品一区二区| 免费的成人av| 国产成人免费在线视频| 色婷婷av一区二区三区大白胸| 午夜日韩在线观看| 中文av字幕一区| 蜜臀久久99精品久久久久宅男 | 欧美激情在线一区二区三区| 亚洲激情在线播放| 国模冰冰炮一区二区| eeuss影院一区二区三区 | 91精品国产综合久久精品性色| 国产99久久久国产精品免费看| 欧美aa在线视频| 欧美一区二区三区视频在线| 暴力调教一区二区三区| 国产乱子伦一区二区三区国色天香 | 国产高清不卡一区| 91女人视频在线观看| 在线91免费看| 国产丝袜在线精品| 亚洲香蕉伊在人在线观| 老司机精品视频在线| 成a人片亚洲日本久久| 91.com视频| 国产精品网站导航| 日本亚洲天堂网| 亚洲色图清纯唯美| 日韩精品乱码免费| 国产成人免费高清| 欧美日韩日日摸| 国产欧美日本一区视频| 亚洲www啪成人一区二区麻豆| 欧美在线观看视频在线| 欧美天天综合网| 国产日产欧美一区二区三区| 亚洲一区二区四区蜜桃| 成人综合在线观看| 欧美一区在线视频| 亚洲色图第一区| 国产一区二区女| 精品视频一区三区九区| 中文字幕国产一区二区| 美女视频免费一区| 欧美在线影院一区二区| 精品久久国产字幕高潮| 99亚偷拍自图区亚洲| 成人激情开心网| 另类调教123区| av电影在线观看完整版一区二区| 欧美日韩黄色影视| 免费亚洲电影在线| 欧美无砖专区一中文字| 污片在线观看一区二区| 亚洲理论在线观看| 日本国产一区二区| 久久精品视频在线看| 奇米精品一区二区三区在线观看| 不卡在线视频中文字幕| 久久天天做天天爱综合色| 日韩精品一二三区| 欧美亚洲国产一卡| 中文字幕+乱码+中文字幕一区| 蜜桃在线一区二区三区| 欧美高清dvd| 成人精品免费网站| 国产精品一区二区三区99| 不卡av电影在线播放| 色综合久久综合网| 亚洲同性gay激情无套| 国产精品一线二线三线精华| 精品亚洲欧美一区| 日韩一区二区电影网| 久久99国产精品久久99| 国产亚洲一区二区在线观看| 国产精品一区不卡| 成人黄页在线观看| 日韩一区二区三区视频在线| 天堂va蜜桃一区二区三区| 日韩天堂在线观看| 国产精品一区二区三区四区| 中文字幕欧美激情| 91久久免费观看| 日韩av一区二区三区| 国产精品免费av| 欧美精品日韩精品| 午夜婷婷国产麻豆精品| 国产精品美女久久久久久久久久久| 国产91精品精华液一区二区三区 | 国产精品小仙女| 日本大胆欧美人术艺术动态| 日本欧洲一区二区| 精品制服美女久久| 4438x亚洲最大成人网| 视频一区二区中文字幕| 91.成人天堂一区| 男女男精品网站| 精品久久久网站| 国产精品资源在线观看| 久久婷婷国产综合国色天香| 国产成人av电影在线| 亚洲欧美怡红院| 91免费看片在线观看| 亚洲韩国精品一区| 欧美一级视频精品观看| 久久精品国产99久久6| 久久婷婷成人综合色| 成人教育av在线| 一区二区三区电影在线播| 欧美日韩国产天堂| 激情五月婷婷综合| 中文字幕视频一区| 欧美三级午夜理伦三级中视频| 日韩电影在线观看一区| 久久亚洲综合av| 99久久久国产精品| 午夜免费久久看| 国产精品久久久久天堂| 日韩久久一区二区| 欧美精品久久久久久久多人混战| 蜜臀av国产精品久久久久| 中文字幕乱码日本亚洲一区二区| 色香蕉久久蜜桃| 美国十次综合导航| 国产精品理论在线观看| 欧美在线|欧美| 韩国av一区二区三区四区| 亚洲色图自拍偷拍美腿丝袜制服诱惑麻豆 | 中文字幕精品一区| 欧美日韩二区三区| 国产精品1区2区3区在线观看| 亚洲乱码国产乱码精品精98午夜 | 欧美日韩色一区| 国产在线精品一区在线观看麻豆| 1000精品久久久久久久久| 欧美日韩美少妇| 成人av中文字幕| 日本欧美一区二区三区| 中文字幕永久在线不卡| 日韩欧美一区二区在线视频| proumb性欧美在线观看| 男人的j进女人的j一区| 亚洲另类在线制服丝袜| 久久亚洲精华国产精华液 | 亚洲三级电影全部在线观看高清| 337p亚洲精品色噜噜噜| 成人激情文学综合网| 精品系列免费在线观看| 亚洲午夜免费电影| 国产精品国产三级国产专播品爱网| 91.xcao| 欧洲亚洲国产日韩| 国产成人在线色| 日韩电影免费在线| 亚洲色图欧美偷拍| 国产欧美一区二区精品仙草咪| 这里只有精品电影| 91激情五月电影| a美女胸又www黄视频久久| 精品中文字幕一区二区小辣椒| 午夜精品久久久久久久99樱桃| 中文字幕在线不卡| 国产精品免费久久久久| 2023国产精品自拍| 日韩一卡二卡三卡四卡| 欧美午夜精品久久久久久超碰| 成人国产一区二区三区精品| 国产在线精品一区在线观看麻豆| 日韩激情一二三区| 亚洲无线码一区二区三区| 亚洲视频一区在线观看| 国产精品久久久一区麻豆最新章节| 精品国免费一区二区三区| 51久久夜色精品国产麻豆| 欧美日韩在线三区| 成人在线视频首页| 国产精品影音先锋| 激情综合网最新| 黄一区二区三区|