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

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

?? pppsioadapter.c

?? 這是全套的PPP協議的源碼
?? C
?? 第 1 頁 / 共 5 頁
字號:
    if (pStackData->pfwRFC2233CountTest)       pfwInterfaceReferenceDelete(pStackData->pfwRFC2233CountPair.interfaceObj);    /* DONE processing stack Delete request*/    if (pStackData->callbacks && pStackData->callbacks->stackDeleteComplete)	{	(*pStackData->callbacks->stackDeleteComplete)				    (pStackData->callbacks ,pComponentState);	return OK;	}    else	return ERROR;    }/******************************************************************************** sioAdptrSend - SIO adapter send interface ** In here we lock access to the channel and start frame transmission.* sioAdptrSendOctet() drains the frame and relinquishes the channel when done*/LOCAL int sioAdptrSend    (    PFW_PLUGIN_OBJ_STATE * pComponentState, /* our state for this stack */    M_BLK_ID * pMblkId			    /* frame to send */    )    {    SIO_ADPTR_STACK_DATA * pStackData = 		    (SIO_ADPTR_STACK_DATA * )pComponentState->stackData;    SIO_ADPTR_PROFILE_DATA * pProfileData = 		    (SIO_ADPTR_PROFILE_DATA * )pComponentState->profileData;    M_BLK_ID pMblk;    int key;    BOOL raiseBlockedEvent = FALSE;    if (pMblkId == NULL || ((pMblk = *pMblkId) == NULL))        {        RFC2233_COUNTER_UPDATE(pStackData->pfwRFC2233CountTest, 				pStackData->pfwRFC2233CountPair,                               M2_ctrId_ifOutErrors, 1);        return ERROR;        }    else if (pStackData->lcpIsOpen == FALSE)        {        netMblkClChainFree(pMblk);        RFC2233_COUNTER_UPDATE(pStackData->pfwRFC2233CountTest,                                pStackData->pfwRFC2233CountPair,                               M2_ctrId_ifOutDiscards, 1);        return ERROR;        }    else if (pStackData->channelState != SIO_CHANNEL_UP)        {        netMblkClChainFree(pMblk);        RFC2233_COUNTER_UPDATE(pStackData->pfwRFC2233CountTest,                                pStackData->pfwRFC2233CountPair,                               M2_ctrId_ifOutDiscards, 1);        if (pProfileData->peerType == SIO_PEER_NT_SERVER &&	        (pStackData->reTransmitClientString ^= 0x1))	        {            /*             * If nextSendIndex = SIZEOF_CLIENT_STRING, pppConnectionOpen happened             * in INITIAL state,  lcpOpenHandler sent the first CLIENT string, and             * we need to retransmit. We send CLIENT 5 times maximum. If the channelBuf             * is zeroed out, pppConnectionOpen happened in STOPPED state which does             * not trigger an OPEN event, in which case, we start transmitting CLIENT.             */            key = intLock();            if (pStackData->nextSendIndex == SIZEOF_CLIENT_STRING ||                pStackData->channelBuf[0] == '\0')                {                pStackData->nextSendIndex = 0;                intUnlock(key);                bzero(pStackData->channelBuf, sizeof(pStackData->channelBuf));                strcpy(pStackData->channelBuf, SIO_NT_CLIENT_STRING);#ifdef PPP_DEBUG                logMsg("sioAdptr: re-sending CLIENT string: stackObj = 0x%x\n",                       (int)pComponentState->stackObj,2,3,4,5,6);#endif /* PPP_DEBUG */                /* start transmission of CLIENT string */                sioTxStartup(pStackData->pSioChan);                return ERROR;                }            else                intUnlock(key);            }        return ERROR;        }    if (semTake(pStackData->channelSem, WAIT_FOREVER) != OK)        {       	netMblkClChainFree(pMblk);        RFC2233_COUNTER_UPDATE(pStackData->pfwRFC2233CountTest,                                pStackData->pfwRFC2233CountPair,                               M2_ctrId_ifOutDiscards, 1);        return ERROR;        }    pMblk->mBlkHdr.mNextPkt = NULL;    /*     * the send queue is manipulated in interrupt context so we lock     * interrupts here     */    key = intLock();    if (pStackData->sendMblk == NULL)	{	/*	 * nothing is being transmitted right now so we start transmitting	 * this pMblk right away 	 */	pStackData->sendMblk = pMblk;	pStackData->nextSendIndex = 0;	intUnlock(key);	/* start transmission */	sioTxStartup(pStackData->pSioChan);	}    else	{	/* queue packet for transmission */	if (pStackData->sendQFull == FALSE)	    {	    if (pStackData->sendQHead == NULL)		{		pStackData->sendQHead = pMblk;		pStackData->sendQTail = pMblk;		}	    else		{		pStackData->sendQTail->mBlkHdr.mNextPkt = pMblk;		pStackData->sendQTail = pMblk;		}	    pStackData->sendQSize++;#ifdef PPP_DEBUG	    logMsg ("SIO_ADPTER Queued packet %p\n",(int)pMblk,2,3,4,5,6);#endif /* PPP_DEBUG */	    if (pStackData->sendQFull == FALSE &&		pStackData->sendQSize == pProfileData->maxSendQSize)		{		pStackData->sendQFull = TRUE;		raiseBlockedEvent = TRUE;		}	    intUnlock(key);	    }	else	    {	    intUnlock(key);	    netMblkClChainFree(pMblk);	    RFC2233_COUNTER_UPDATE(pStackData->pfwRFC2233CountTest, 				    pStackData->pfwRFC2233CountPair,				   M2_ctrId_ifOutDiscards, 1);	    semGive(pStackData->channelSem);#ifdef PPP_DEBUG	    logMsg ("SIO_ADPTER Dropped packet %p on full Q;sendQSize = %d\n",		    (int)pMblk, pStackData->sendQSize,3,4,5,6);#endif /* PPP_DEBUG */	    return ERROR;	    }	}    if (raiseBlockedEvent == TRUE)	{	if (pStackData->txBlockedEvent != NULL)            pfwEventRaise(pComponentState->stackObj,                          pStackData->txBlockedEvent, NULL);#ifdef PPP_DEBUG	logMsg ("SIO_ADPTER SendQ Full;sendQSize = %d\n", pStackData->sendQSize,		2,3,4,5,6);#endif /* PPP_DEBUG */	}    /*      * RFC 2233 counters's update will be carried in sioAdptrSendOctet     * which is indirectly called viat the sioTxStartup macro     */    pStackData->outputPackets ++;    pStackData->outputOctets += ((pMblk->mBlkHdr.mNext != NULL) ?				pMblk->mBlkPktHdr.len : pMblk->mBlkHdr.mLen);    /* release channel semaphore only if queuing is enabled */    if (pProfileData->maxSendQSize != 0)	semGive(pStackData->channelSem);    return OK;    }/******************************************************************************** sioAdptrStackDataShow - show SIO connection statistics***/LOCAL STATUS sioAdptrStackDataShow     (    PFW_PLUGIN_OBJ_STATE * pComponentState    )    {    return OK;    }/******************************************************************************** sioAdptrSendOctet - send next character in SIO interrupt context ***/LOCAL STATUS sioAdptrSendOctet     (    void * state,    char * octetBuf    )    {    PFW_PLUGIN_OBJ_STATE * pComponentState = (PFW_PLUGIN_OBJ_STATE *)state;    SIO_ADPTR_PROFILE_DATA * pProfileData;     SIO_ADPTR_STACK_DATA * pStackData;     SIO_ADPTR_COMPONENT * pSioComponent;     M_BLK_ID pMblk;    MODEM_DATA	* pModemData;    /* state or buffer cant be NULL */    if (pComponentState == NULL || octetBuf == NULL)	return ERROR;    pProfileData = (SIO_ADPTR_PROFILE_DATA * )pComponentState->profileData;    pStackData = (SIO_ADPTR_STACK_DATA * )pComponentState->stackData;    pSioComponent = (SIO_ADPTR_COMPONENT * )pComponentState->pluginObj;    pModemData = pStackData->pModemData;    /*      * send to the modem if the peer type itself is a modem, and     * the modem connection is down.     */    if (pProfileData->peerType == SIO_PEER_MODEM &&	!(pModemData->modemFlags & MODEM_UP))	return (sioAdptrModemSend(pComponentState, pStackData,                                  (UINT8 *)octetBuf));    /* we dont send anything if LCP is not open */    if  (FALSE == pStackData->lcpIsOpen) 	return ERROR;    /* check if we have to send NT "CLIENT/CLIENTSERVER" strings */    if (pStackData->channelState == SIO_CHANNEL_DOWN)	{	if (pProfileData->peerType == SIO_PEER_REGULAR)	    return ERROR;	/* send CLIENT/CLIENTSERVER string */	switch (pProfileData->peerType)	    {	    case SIO_PEER_NT_SERVER:		if (pStackData->nextSendIndex == SIZEOF_CLIENT_STRING)		    {		    bzero(pStackData->channelBuf,sizeof(pStackData->channelBuf));		    break;		    }		*octetBuf =pStackData->channelBuf[pStackData->nextSendIndex++];		RFC2233_COUNTER_UPDATE(pStackData->pfwRFC2233CountTest, 					pStackData->pfwRFC2233CountPair,                                       M2_ctrId_ifOutOctets, 1);               		RFC2233_COUNTER_UPDATE(pStackData->pfwRFC2233CountTest, 					pStackData->pfwRFC2233CountPair,                                       M2_ctrId_ifHCOutOctets, 1);		return OK;	    case SIO_PEER_NT_CLIENT:		if (pStackData->nextSendIndex == SIZEOF_CLIENTSERVER_STRING)		    {		    /* say that channel is UP and available */		    sioAdptrChannelAvailable (pComponentState); 		    break;		    }		*octetBuf =pStackData->channelBuf[pStackData->nextSendIndex++];		RFC2233_COUNTER_UPDATE(pStackData->pfwRFC2233CountTest, 				    pStackData->pfwRFC2233CountPair,                                       M2_ctrId_ifOutOctets, 1);               		RFC2233_COUNTER_UPDATE(pStackData->pfwRFC2233CountTest, 				    pStackData->pfwRFC2233CountPair,                                       M2_ctrId_ifHCOutOctets, 1);		return OK;	    default:		break;	    }	/* returning ERROR stops the serial device transmitter */	return ERROR;	}    else if (pStackData->channelState != SIO_CHANNEL_UP)	return ERROR;    /* we are now sending a frame */    if ((pMblk = pStackData->sendMblk) == NULL)	return ERROR;    if ( pStackData->nextSendIndex == pMblk->mBlkHdr.mLen )	{	/* get next mBlk for this frame */	if (pMblk->mBlkHdr.mNext == NULL)	    {	     /* done sending frame; OK to send next frame */	     SIO_FREE_PKT(pMblk);	     /*	      * if queueing is disabled release semaphore to allow sending of	      * next frame	      */	     if (pProfileData->maxSendQSize == 0)		 {		 pStackData->sendMblk = NULL;		 semGive(pStackData->channelSem);		 return ERROR;		 }	     if (pStackData->sendQHead == NULL)		 {		 /*		  * done sending all queued packets; setting sendMblk to NULL		  * will cause the next send to re-start the serial transmitter		  */		 pStackData->sendMblk = NULL;		 return ERROR;		 }	     else		 {		 /* get next frame from queue */		 pStackData->sendMblk = pStackData->sendQHead;		 if ((pStackData->sendQHead = 			     pStackData->sendQHead->mBlkHdr.mNextPkt) == NULL)		     {		     pStackData->sendQTail = NULL;		     }		 pMblk = pStackData->sendMblk;		 pStackData->nextSendIndex = 0;		 pStackData->sendQSize--;		 if (pStackData->sendQFull == TRUE &&		     pStackData->sendQSize ==			 SIO_SEND_Q_TWO_THIRDS_FULL (pProfileData->maxSendQSize))		    {		    pStackData->sendQFull = FALSE;		    /* raise unblocked event via dataTask */		    if (pStackData->txUnblockedEvent != NULL)			{			pfwDataJobAdd (pComponentState->pluginObj->pfwObj,				   sioAdptrRaiseTxUnblockedEvent, 				   &pComponentState,sizeof(pComponentState));			}		    }#ifdef PPP_DEBUG		logMsg ("SIO_ADPTER De-queued packet %p\n",(int)pMblk,2,3,4,5,6);#endif /* PPP_DEBUG */		 }	    }	 else	    {	    /* more bytes to send in this frame*/	    pStackData->sendMblk = pMblk->mBlkHdr.mNext;	    pStackData->nextSendIndex = 0;	    SIO_FREE_PKT(pMblk);	    pMblk = pStackData->sendMblk;	    }	}    *octetBuf = pMblk->mBlkHdr.mData[pStackData->nextSendIndex++];    RFC2233_COUNTER_UPDATE(pStackData->pfwRFC2233CountTest, 			    pStackData->pfwRFC2233CountPair,                           M2_ctrId_ifOutOctets, 1);    RFC2233_COUNTER_UPDATE(pStackData->pfwRFC2233CountTest, 			    pStackData->pfwRFC2233CountPair,                           M2_ctrId_ifHCOutOctets, 1);    return OK;    }/******************************************************************************** sioInterfaceBind - bind interfaces to the SIO adapter component** This routine binds the interfaces to the SIO adapter component.* * RETURNS: OK, always.*/LOCAL STATUS sioInterfaceBind    (    PFW_PLUGIN_OBJ * pluginObj    )    {    SIO_ADPTR_COMPONENT * pComponent = (SIO_ADPTR_COMPONENT *) pluginObj;    ADAPTER_COMPONENT_STATISTICS_INTERFACE * statisticsInterface;    PHY_PORT_INTERFACE * phyPortInterface;    PPP_MODEM_INTERFACE * pppModemInterfaceEntry;    int i;    PFW_OBJ * pfw = pluginObj->pfwObj;    sioAdapterInterfacesInit (pComponent);    if ((i = pfwInterfaceRegister(pfw, "PPP_MODEM_INTERFACE")) > 0)        {        pppModemInterfaceEntry = &pComponent->pppModemInterface;        pppModemInterfaceEntry->interfaceObj.id = i;        pppModemInterfaceEntry->interfaceObj.pluginObj =                                        (PFW_PLUGIN_OBJ *)pComponent;        pfwInterfaceBind (&pppModemInterfaceEntry->interfaceObj);        }    /* publish and bind our adapter component statistics interface */    if ((i = pfwInterfaceRegister(pfw,                      "ADAPTER_COMPONENT_STATISTICS_INTERFACE")) > 0)        {        statisticsInterface = &pComponent->statisticsInterface;        statisticsInterface->interfaceObj.id = i;        statisticsInterface->interfaceObj.pluginObj = pluginObj;        statisticsInterface->statisticsGet = sioAdptrStatisticsGet;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩欧美色电影| 日本精品一区二区三区四区的功能| 欧美性猛片aaaaaaa做受| 亚洲婷婷综合久久一本伊一区| jlzzjlzz亚洲日本少妇| 亚洲欧洲在线观看av| jiyouzz国产精品久久| 自拍偷拍亚洲激情| 欧美性大战久久久久久久蜜臀| 亚洲国产欧美在线人成| 这里只有精品视频在线观看| 美女在线视频一区| 国产亚洲一二三区| 91在线小视频| 日韩精品午夜视频| 精品乱人伦小说| 成人一区在线看| 一区二区不卡在线播放| 欧美日韩国产影片| 狠狠色丁香婷婷综合| 亚洲丝袜自拍清纯另类| 欧美日韩美少妇| 国产综合久久久久久久久久久久| 亚洲国产精品激情在线观看| 91精品办公室少妇高潮对白| 奇米色777欧美一区二区| 久久久国产精品不卡| 色婷婷久久综合| 乱中年女人伦av一区二区| 国产亚洲精久久久久久| 欧美在线观看视频在线| 久久精品国内一区二区三区| 欧美激情一区二区三区不卡| 欧美三级中文字幕在线观看| 国产乱码精品1区2区3区| 亚洲欧美视频一区| 日韩精品一区二区三区视频播放| 成人三级伦理片| 日韩高清一区在线| 国产精品污污网站在线观看| 欧美浪妇xxxx高跟鞋交| bt7086福利一区国产| 蜜桃精品视频在线观看| 激情文学综合插| ...av二区三区久久精品| 日韩情涩欧美日韩视频| 99国产一区二区三精品乱码| 九九九久久久精品| 亚洲第一精品在线| 亚洲天堂中文字幕| 国产校园另类小说区| 日韩亚洲欧美中文三级| 97久久超碰精品国产| 国产一区二区三区黄视频 | 日本欧美在线看| 国产精品女同互慰在线看 | 国产女人18毛片水真多成人如厕| 欧美日韩国产经典色站一区二区三区| 国产成人免费9x9x人网站视频| 日本美女一区二区| 天天色天天操综合| 夜夜嗨av一区二区三区中文字幕| 欧美激情一区二区| 久久久久久久久久久电影| 91精品国产综合久久久久久| 欧洲亚洲国产日韩| 99久久99久久综合| 99久久婷婷国产| 成人黄色网址在线观看| 国产经典欧美精品| 国内久久精品视频| 裸体健美xxxx欧美裸体表演| 日韩精品一卡二卡三卡四卡无卡| 亚洲高清一区二区三区| 怡红院av一区二区三区| 亚洲视频一区二区免费在线观看| 国产精品无人区| 国产精品动漫网站| 国产精品国产三级国产普通话99| 欧美激情一区二区| 国产精品入口麻豆九色| 欧美国产精品一区| 国产精品久久久久7777按摩 | 欧美日韩成人在线一区| 欧美日韩国产另类一区| 欧美日韩一区不卡| 91精品欧美一区二区三区综合在| 欧美午夜精品免费| 6080亚洲精品一区二区| 日韩精品一区二区三区三区免费 | 精品粉嫩超白一线天av| 精品乱码亚洲一区二区不卡| 久久久久久久久久美女| 国产精品久久久久久户外露出 | 国产亚洲欧美日韩日本| 国产色产综合色产在线视频| 国产精品午夜电影| 亚洲精品一二三| 亚洲成av人**亚洲成av**| 五月婷婷久久丁香| 九色|91porny| 国产91精品一区二区| 99国产精品久久久久| 91久久人澡人人添人人爽欧美| 在线精品视频一区二区| 日韩你懂的在线播放| 国产欧美一区二区在线| 亚洲精品午夜久久久| 亚洲第一主播视频| 国内精品免费**视频| 99久久精品国产导航| 6080日韩午夜伦伦午夜伦| www激情久久| 亚洲一区二区偷拍精品| 极品少妇一区二区| 91丝袜呻吟高潮美腿白嫩在线观看| 欧美视频在线一区二区三区| 欧美v亚洲v综合ⅴ国产v| 17c精品麻豆一区二区免费| 日韩1区2区日韩1区2区| 成人aaaa免费全部观看| 91精品国产综合久久精品性色| 国产人妖乱国产精品人妖| 一区二区三区不卡视频在线观看| 麻豆国产欧美一区二区三区| 99视频在线精品| 精品国产在天天线2019| 一区二区三区精品在线观看| 另类中文字幕网| 欧美性三三影院| 国产日产欧美精品一区二区三区| 日韩精彩视频在线观看| 成人av第一页| 欧美精品一区二区三区高清aⅴ| 亚洲三级在线播放| 国产永久精品大片wwwapp| 欧美一a一片一级一片| 国产精品视频九色porn| 日韩国产欧美在线播放| 色哟哟国产精品免费观看| 亚洲精品一区二区三区精华液 | 中文幕一区二区三区久久蜜桃| 亚洲成a人在线观看| av一区二区三区四区| 亚洲精品一区二区三区香蕉 | 日韩精品最新网址| 一卡二卡三卡日韩欧美| 成人成人成人在线视频| 亚洲精品在线观| 美女视频网站黄色亚洲| 欧美日本乱大交xxxxx| 亚洲免费观看高清完整版在线观看熊 | 久久久久久夜精品精品免费| 奇米影视一区二区三区| 欧美日韩一区二区在线视频| 日韩理论片中文av| 成人黄色在线看| 中文在线一区二区| 国产成人免费av在线| 久久亚洲精品国产精品紫薇| 美女视频一区在线观看| 欧美一级黄色录像| 日韩**一区毛片| 欧美一级片在线| 日产精品久久久久久久性色| 欧美日韩成人在线一区| 婷婷开心久久网| 欧美日本国产视频| 午夜精品久久久久久久| 欧美日韩三级一区二区| 日韩精品一二三四| 欧美岛国在线观看| 韩国av一区二区| 久久精品视频一区二区三区| 国产91丝袜在线播放0| 欧美国产欧美亚州国产日韩mv天天看完整| 国模冰冰炮一区二区| 欧美精品一区二区久久婷婷| 国产成人免费高清| 中文字幕五月欧美| 91小视频免费观看| 亚洲专区一二三| 在线综合视频播放| 精一区二区三区| 欧美国产成人精品| 91视视频在线观看入口直接观看www | 国产在线精品视频| 久久精品日产第一区二区三区高清版| 国产一区不卡在线| 综合久久久久久| 在线成人小视频| 精品一二线国产| 中文字幕不卡在线播放| aaa国产一区| 亚洲午夜电影在线观看| 日韩欧美国产综合一区| 成人免费视频视频在线观看免费| 亚洲女同女同女同女同女同69| 欧美老女人第四色| 国产精品亚洲午夜一区二区三区|