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

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

?? pppsioadapter.c

?? 這是全套的PPP協(xié)議的源碼
?? C
?? 第 1 頁 / 共 5 頁
字號:
        pfwInterfaceBind (&statisticsInterface->interfaceObj);        }    /* publish and bind our physical port interface */    if ((i = pfwInterfaceRegister(pfw, "PHY_PORT_INTERFACE")) > 0)        {        phyPortInterface = &pComponent->phyPortInterface;        phyPortInterface->interfaceObj.id = i;        phyPortInterface->interfaceObj.pluginObj = pluginObj;        phyPortInterface->portNumberGet = sioAdptrPortNumberGet;        phyPortInterface->portTypeGet = sioAdptrPortTypeGet;        pfwInterfaceBind (&phyPortInterface->interfaceObj);        }    return (OK);    }/***************************************************************************** sioAdapterInterfacesInit - initialize the interfaces for the SIO adapter* * This routine initializes the interfaces for the SIO adapter.** RETURNS: N/A.*/LOCAL void sioAdapterInterfacesInit    (    SIO_ADPTR_COMPONENT * sioComponent    )    {    PPP_MODEM_INTERFACE * pModemInterface;    pModemInterface = &sioComponent->pppModemInterface;    pModemInterface->modemRead = pppSioAdapterModemRead;    pModemInterface->modemWrite = pppSioAdapterModemWrite;    pModemInterface->modemIoctl = pppSioAdapterModemIoctl;    pModemInterface->modemOpen = pppSioAdapterModemOpen;    pModemInterface->modemClose = pppSioAdapterModemClose;    return;    }/***************************************************************************** sioAdptrModemReceive - receive a string from a modem** This routine receives a string from a modem.** RETURNS: OK on success, ERROR otherwise*/LOCAL STATUS sioAdptrModemReceive    (    SIO_ADPTR_STACK_DATA	* pStackData,    UINT8			octet    )    {    MODEM_DATA	* pModemData = pStackData->pModemData;    if (pModemData->inBufCount >= MODEM_MAX_RX_STR_LEN)	{	logMsg ("modem: too many characters \n",		0, 0, 0, 0, 0, 0);	pModemData->inBufCount = 0;	return (ERROR);	}    pModemData->inBuf [pModemData->inBufCount++] = octet;    MODEM_READ_SEM_GIVE;    return (OK);    }/***************************************************************************** sioAdptrModemSend - receive a string from a modem** This routine receives a string from a modem.** RETURNS: OK on success, ERROR otherwise*/LOCAL STATUS sioAdptrModemSend    (    PFW_PLUGIN_OBJ_STATE * state,    SIO_ADPTR_STACK_DATA	* pStackData,    UINT8			* octet    )    {    MODEM_DATA	* pModemData = pStackData->pModemData;    if (pModemData->outBufLen <= pModemData->outBufCount)	{	return (ERROR);	}    *octet = pModemData->outBuf [pModemData->outBufCount++];    return (OK);    }/******************************************************************************** sioAdptrReceiveOctet - Receive next character in SIO interrupt context ***/LOCAL STATUS sioAdptrReceiveOctet     (    void * state,    UINT8 octet    )    {    PFW_PLUGIN_OBJ_STATE * pComponentState = (PFW_PLUGIN_OBJ_STATE *)state;    SIO_ADPTR_PROFILE_DATA * pProfileData;     SIO_ADPTR_STACK_DATA * pStackData;     SIO_RECEIVE_JOB receiveJob;    M_BLK_ID pMblk;    MODEM_DATA	* pModemData = NULL;   if (pComponentState == NULL)       return ERROR;   pProfileData = (SIO_ADPTR_PROFILE_DATA *)pComponentState->profileData;   pStackData = (SIO_ADPTR_STACK_DATA *)pComponentState->stackData;   RFC2233_COUNTER_UPDATE(pStackData->pfwRFC2233CountTest, 			   pStackData->pfwRFC2233CountPair,                           M2_ctrId_ifInOctets, 1);   RFC2233_COUNTER_UPDATE(pStackData->pfwRFC2233CountTest, 			   pStackData->pfwRFC2233CountPair,                           M2_ctrId_ifHCInOctets, 1);   pModemData = pStackData->pModemData;    /*      * receive from 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 (sioAdptrModemReceive (pStackData, octet));    /* we dont receive anything if LCP is not open */    if  (FALSE == pStackData->lcpIsOpen) 	return ERROR;    /* if the link is not UP yet we need to check for CLIENT/SERVER handshaking*/    if (pStackData->channelState == SIO_CHANNEL_DOWN)        {        if (pProfileData->peerType == SIO_PEER_REGULAR)	    return ERROR;        /* Receive CLIENT/CLIENTSERVER string */        switch (pProfileData->peerType)            {            case SIO_PEER_NT_SERVER:                if (pStackData->nextReceiveIndex == 					    (SIZEOF_CLIENTSERVER_STRING - 1))                    {                    pStackData->channelBuf[pStackData->nextReceiveIndex] =octet;                    if (strncmp(pStackData->channelBuf,SIO_NT_CLIENTSERVER_STRING,                                SIZEOF_CLIENTSERVER_STRING))                        {                        bzero(pStackData->channelBuf,sizeof(pStackData->channelBuf));                        pStackData->nextReceiveIndex = 0;                        return ERROR;                        }                    pStackData->nextReceiveIndex++;                    /* say that channel is UP and available */                    sioAdptrChannelAvailable (pComponentState);                     return OK;                    }                else if (pStackData->nextReceiveIndex > SIZEOF_CLIENTSERVER_STRING)                    {                    return OK;                    }                break;            case SIO_PEER_NT_CLIENT:                if (pStackData->nextReceiveIndex == (SIZEOF_CLIENT_STRING - 1))                    {                    pStackData->channelBuf[pStackData->nextReceiveIndex] = octet;                    if (strncmp (pStackData->channelBuf,SIO_NT_CLIENT_STRING,                                 SIZEOF_CLIENT_STRING))                        {                        bzero(pStackData->channelBuf,sizeof(pStackData->channelBuf));                        pStackData->nextReceiveIndex = 0;                        return ERROR;                        }                    pStackData->nextReceiveIndex++;                    /* initiate sending of CLIENTSERVER string */                    SIO_SEND_NT_CLIENTSERVER_STRING(pStackData);                    return OK;                    }                else if (pStackData->nextReceiveIndex > SIZEOF_CLIENT_STRING)                    {                    return OK;                    }                break;            default:                return ERROR;            }        pStackData->channelBuf[pStackData->nextReceiveIndex++] = octet;        /* we are looking for CLIENT or CLIENTSERVER, drop extraneous characters */        if (pStackData->channelBuf[0] != 'C')            pStackData->nextReceiveIndex = 0;        return OK;        }    /* link is UP and we are receiving frames */    /*     * check for buffer overflow; always accept frames of length less than     * or equal to twice SIO_DEFAULT_MAX_MRU i.e.; 2 x 1500.     * if frame length is greater than ( 2 x 1500) then use negotiated     * local MRU times two as the upper limit     */    if ((pStackData->nextReceiveIndex > (SIO_DEFAULT_MAX_MRU << 1)) && 	(pStackData->nextReceiveIndex > (pStackData->localMru << 1)))	{	SIO_DROP_RCV_FRAME(pStackData);	/* this discards the remainder of large frame */	pStackData->nextReceiveIndex = 0;	return OK;	}    /* check if we have a buffer */    if (pStackData->receiveChain == NULL)	{	if (octet != SIO_FRAME_FLAG)	    {	    /* in mid-frame: don't try to get a new mbuf just yet */	    return ERROR;	    }	/* try to get a buffer now */	SIO_GET_FIRST_RCV_BUF(pStackData);	}    /* get current receive buffer */    if ((pMblk = pStackData->receiveMblk) == NULL)	{	return ERROR;	}    /* check for very first frame start flag (0x7e)*/    if (octet != SIO_FRAME_FLAG && pStackData->nextReceiveIndex == 0)        return ERROR;    /* received first 0x7e */    if (octet == SIO_FRAME_FLAG && pStackData->nextReceiveIndex == 0)	{	pStackData->nextReceiveIndex = 1;	return OK;	}    /* drop redundant 0x7e s */    if (octet == SIO_FRAME_FLAG && pStackData->nextReceiveIndex == 1)	{	return OK;	}    /* check if we need another mBlk-clBlk-cluster (mbuf) */    if (pMblk->mBlkHdr.mLen == SIO_CLUSTER_SIZE)	{	M_BLK_ID pNextMblk;	if ((pNextMblk = netTupleGet(pStackData->netPoolId,SIO_CLUSTER_SIZE,				    M_DONTWAIT, MT_DATA ,TRUE)) == NULL)	    {	    logMsg("sioAdptrReceiveOctet:Failed to get next receive mBlk for Stack Id %d\n", pfwStackIdGet(pComponentState->stackObj),2,3,4,5,6);	    SIO_DROP_RCV_FRAME(pStackData);	    return ERROR;	    }	pNextMblk->mBlkHdr.mLen = 0;	pNextMblk->mBlkHdr.mFlags &= ~M_PKTHDR;	pNextMblk->mBlkPktHdr.len = 0;	pStackData->receiveMblk = pNextMblk;	pMblk->mBlkHdr.mNext = pNextMblk;	pMblk = pMblk->mBlkHdr.mNext;	}    if (octet == SIO_FRAME_FLAG)	{	if ((pStackData->nextReceiveIndex > 1) &&	        (pStackData->nextReceiveIndex < SIO_MIN_FRAME_LEN))	    {            logMsg ("sioAdptrReceiveOctet: dropping tiny frame (%d bytes)\n",                    pStackData->nextReceiveIndex, 0, 0, 0, 0, 0);	    /* invalid frame */	    SIO_DROP_RCV_FRAME(pStackData);	    return OK;	    }	if (pStackData->nextReceiveIndex >= SIO_MIN_FRAME_LEN)	    {	    /* save last octet */	    pMblk->mBlkHdr.mData[pMblk->mBlkHdr.mLen++] = octet;	    /* end of frame; set up receive job */	    receiveJob.state = pComponentState;	    receiveJob.pMblk = pStackData->receiveChain;	    /* set packet length (used by sioAdptrFrameReceive) */	    receiveJob.pMblk->mBlkPktHdr.len=++pStackData->nextReceiveIndex;	    /* check for chain of mBlks */	    if (receiveJob.pMblk->mBlkHdr.mNext != NULL)		{		/* update packet chain length */		receiveJob.pMblk->mBlkHdr.mFlags |= M_PKTHDR;		}	    /* get initial buffer for next frame */	    SIO_GET_FIRST_RCV_BUF(pStackData);	    pStackData->nextReceiveIndex = 1;	    /* send frame up */	    if (pfwDataJobAdd (pComponentState->pluginObj->pfwObj,		sioAdptrFrameReceive, &receiveJob,sizeof(receiveJob)) != OK)		{                logMsg ("sioAdptrReceiveOctet: pfwDataJobAdd failed.\n",                        0, 0, 0, 0, 0, 0);		SIO_FREE_PKT_CHAIN (receiveJob.pMblk);		}	    return OK;	    }	#if 0	/* else begining of frame */	pMblk->mBlkHdr.mLen = 0;	pStackData->nextReceiveIndex = 0;	#endif	}    /* save octet */    pMblk->mBlkHdr.mData[pMblk->mBlkHdr.mLen++] = octet;    pStackData->nextReceiveIndex++;    return OK;    }/******************************************************************************** sioAdptrChannelAvailable - mark channel available***/LOCAL void sioAdptrChannelAvailable    (    PFW_PLUGIN_OBJ_STATE * pComponentState    )    {    SIO_ADPTR_STACK_DATA * pStackData;     SIO_ADPTR_PROFILE_DATA *pProfileData;    if (pComponentState == NULL)	return;    pStackData = (SIO_ADPTR_STACK_DATA * )pComponentState->stackData;    pProfileData = (SIO_ADPTR_PROFILE_DATA * )pComponentState->profileData;    /* get an initial receive buffer */    if (pStackData->receiveChain == NULL)        SIO_GET_FIRST_RCV_BUF(pStackData);    /* channel is now available */    pStackData->channelState = SIO_CHANNEL_UP;    pStackData->nextSendIndex = 0;    pStackData->nextReceiveIndex = 0;    semGive(pStackData->channelSem);#ifdef PPP_DEBUG	logMsg("sioAdptr: CHANNEL %d AVAILABLE: stackObj = 0x%x\n",	    pProfileData->channelNum,(int)pComponentState->stackObj,3,4,5,6);#endif /* PPP_DEBUG */    }/******************************************************************************** sioAdptrRaiseTxUnblockedEvent - say that we have space on the send queue** Raises the PPP_SUB_LAYER_TX_UNBLOCKED event*/LOCAL void sioAdptrRaiseTxUnblockedEvent    (    void * data    )    {    PFW_PLUGIN_OBJ_STATE ** ppComponentState = data;    PFW_PLUGIN_OBJ_STATE * pComponentState = *ppComponentState;    SIO_ADPTR_STACK_DATA * pStackData; #ifdef PPP_DEBUG    logMsg ("sioAdptrRaiseTxUnblockedEvent:pComponentState = %p\n",	(int)pComponentState,2,3,4,5,6);#endif /* PPP_DEBUG */    if (pComponentState == NULL)	return;

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国v精品久久久网| 91在线看国产| 波多野结衣中文字幕一区| 99久久er热在这里只有精品15| 欧美日韩免费视频| 中文字幕一区在线观看| 秋霞午夜av一区二区三区| 91啪亚洲精品| 国产精品免费看片| 久久99国产精品免费| 欧美日韩亚洲综合在线 | 国产精品1区二区.| 欧美嫩在线观看| 最新久久zyz资源站| 国产在线国偷精品产拍免费yy| 欧美伦理电影网| 亚洲激情中文1区| 99久久精品国产一区| 久久久91精品国产一区二区三区| 午夜日韩在线电影| 欧美视频一区二区三区在线观看| 国产精品久久久久久妇女6080| 国产一区二区不卡在线| 日韩一区二区三区三四区视频在线观看| 一区二区三区小说| 91黄色激情网站| 一区二区三区在线观看动漫| 99久久精品一区| 国产精品免费久久| av激情亚洲男人天堂| 国产精品传媒入口麻豆| 成人激情开心网| 亚洲国产精品高清| 93久久精品日日躁夜夜躁欧美| 中文字幕一区二区三中文字幕| 国产成人高清在线| 国产精品理论在线观看| 一本一本大道香蕉久在线精品| 亚洲人成网站色在线观看| 99久久精品国产精品久久| 日韩理论电影院| 欧美天天综合网| 午夜视黄欧洲亚洲| 欧美mv日韩mv亚洲| 从欧美一区二区三区| 亚洲欧洲一区二区三区| 色婷婷久久久综合中文字幕| 亚洲综合在线视频| 欧美日韩久久久久久| 男男gaygay亚洲| 国产亚洲精品免费| 97aⅴ精品视频一二三区| 亚洲小说春色综合另类电影| 91精品国产品国语在线不卡| 极品销魂美女一区二区三区| 欧美国产97人人爽人人喊| 91偷拍与自偷拍精品| 日韩高清不卡一区二区| 久久精品一区二区三区不卡 | 欧美亚洲精品一区| 日韩精品成人一区二区在线| xfplay精品久久| 91视频www| 日韩在线一区二区| 国产欧美精品一区二区色综合 | 性欧美疯狂xxxxbbbb| 精品乱码亚洲一区二区不卡| 波多野结衣一区二区三区| 偷拍与自拍一区| 欧美激情一区在线| 欧美麻豆精品久久久久久| 国产麻豆精品一区二区| 一区二区三区在线观看动漫| 欧美sm极限捆绑bd| 91高清视频在线| 狠狠色狠狠色综合| 亚洲一区二区三区中文字幕在线| 日韩欧美在线不卡| 91浏览器入口在线观看| 精品一区二区三区的国产在线播放 | 色丁香久综合在线久综合在线观看| 喷水一区二区三区| 玉足女爽爽91| 国产精品系列在线| 欧美一级午夜免费电影| www.日韩在线| 国产河南妇女毛片精品久久久| 亚洲高清视频的网址| 中文字幕一区av| 亚洲激情一二三区| 精品福利二区三区| 欧美日韩国产片| 91视频在线观看| 国产91精品入口| 国产综合色产在线精品| 日韩一区精品视频| 一卡二卡欧美日韩| 亚洲日本中文字幕区| 国产日韩亚洲欧美综合| 欧美电影免费观看高清完整版在线| 欧亚一区二区三区| 色婷婷综合激情| 91丨九色丨蝌蚪丨老版| 不卡一二三区首页| 成人免费看视频| 国产iv一区二区三区| 国产精品综合二区| 国产呦精品一区二区三区网站| 日本不卡免费在线视频| 午夜一区二区三区视频| 亚洲一卡二卡三卡四卡| 亚洲精品欧美专区| 亚洲在线视频一区| 亚洲综合免费观看高清在线观看| 亚洲视频1区2区| 洋洋av久久久久久久一区| 亚洲欧美激情小说另类| 亚洲免费观看高清| 一区二区三区欧美日| 亚洲一区二区三区四区不卡| 亚洲一区二区美女| 日韩avvvv在线播放| 欧美aaa在线| 韩国午夜理伦三级不卡影院| 国产一区二区三区黄视频| 国产精品一区久久久久| 成人午夜免费视频| 91福利在线免费观看| 69堂成人精品免费视频| 精品91自产拍在线观看一区| 久久九九影视网| 亚洲色图欧洲色图婷婷| 亚洲大片在线观看| 久久草av在线| 99精品久久久久久| 欧美日韩综合一区| 日韩视频免费观看高清完整版| 精品国产一区二区三区久久影院| 中文字幕国产精品一区二区| 亚洲免费在线观看视频| 一区二区三区四区蜜桃| 蜜桃av一区二区三区电影| 国产在线国偷精品产拍免费yy| 99久久er热在这里只有精品15| 欧美日韩一区中文字幕| 久久综合视频网| 亚洲人成亚洲人成在线观看图片| 天堂av在线一区| 成人午夜视频福利| 欧美精品日韩一区| 中文字幕欧美国产| 亚洲成人手机在线| 国产凹凸在线观看一区二区| 91国产免费看| 久久网站热最新地址| 一区二区三国产精华液| 狠狠色2019综合网| 欧美三级电影在线看| 久久精品一区八戒影视| 天天综合网 天天综合色| 国产成人av一区二区| 69久久99精品久久久久婷婷| 国产精品亲子乱子伦xxxx裸| 免费在线欧美视频| 色88888久久久久久影院野外| 日韩视频免费观看高清完整版 | 日韩欧美自拍偷拍| 中文字幕人成不卡一区| 韩国成人在线视频| 欧美日韩精品一区视频| 亚洲欧洲成人自拍| 国产成人在线免费观看| 91精品国产一区二区人妖| 亚洲同性gay激情无套| 国产精品自在欧美一区| 日韩一区二区三区视频在线| 亚洲精品乱码久久久久久 | 欧美精品久久天天躁| 中文字幕亚洲不卡| 国产精品中文欧美| 精品国产a毛片| 免费亚洲电影在线| 欧美精品 日韩| 亚洲午夜电影网| 色哦色哦哦色天天综合| 国产精品久久久久久久久免费樱桃| 久久激情五月激情| 欧美变态tickling挠脚心| 亚洲a一区二区| 欧美吞精做爰啪啪高潮| 亚洲欧美日韩在线不卡| 99久久精品国产一区| 亚洲天天做日日做天天谢日日欢| 国产一区二区福利视频| 2020国产成人综合网| 激情综合色播五月| 日韩精品专区在线影院重磅| 天天色天天爱天天射综合| 欧美日韩日本视频| 日本在线不卡视频|