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

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

?? cli_termtelnet.c

?? 命令行在嵌入式系統(tǒng)的實現(xiàn)
?? C
?? 第 1 頁 / 共 2 頁
字號:
    fd_set SocketSet ;
    struct timeval stWait;
    _S32 ulErr = 0;

    CLI_ASSURE_OR_FAIL( G_NULL != pTermStruct );

    if ( pTermStruct->iSendLen == 0)
        return G_SUCCESS;

    stWait.tv_sec  = 10;
    stWait.tv_usec = 0 ;

    FD_ZERO ( &SocketSet ) ;
    FD_SET ( (_U32)pTermStruct->iSocket, &SocketSet ) ;

    if (TERM_SEM_P(pTermStruct))
    {
        CLI_RECORD(CLI_STAT_SEM_P);
        return G_FAILURE;
    }

    CLI_RECORD(CLI_STAT_CLIENT_GOTO_SELECT_S);
    ulErr = urp_select( (_U32)(pTermStruct->iSocket + 1), ( fd_set * ) 0, &SocketSet,  ( fd_set * ) 0, &stWait );
    CLI_RECORD(CLI_STAT_CLIENT_OVER_SELECT_S);
    if (ulErr > 0 )
    {
        FD_ZERO ( &SocketSet );

        CLI_RECORD(CLI_STAT_CLIENT_GOTO_SEND);
        ulErr = send ( pTermStruct->iSocket, pTermStruct->szSendBuf, pTermStruct->iSendLen, 0 );
        CLI_RECORD(CLI_STAT_CLIENT_OVER_SEND);

        if(TERM_SEM_V(pTermStruct))
        {
            CLI_RECORD(CLI_STAT_SEM_V);
            DBG_Out(PID_CLI, CLI_DBGOUT_ERR, "\r\n Sem_V_1 of Term %d Failed!", pTermStruct->ulTermId);
        }
        if (  ulErr>= 0 )
        {
            pTermStruct->iSendLen = 0 ;
            pTermStruct->szSendBuf[ 0 ] = '\0' ;
            return G_SUCCESS;
        }
        else
        {
            DBG_Out(PID_CLI, CLI_DBGOUT_NOTE, "\r\n CLI_SendToTelnet:: send() Failed!");
            return G_FAILURE;
        }
    }

    if(TERM_SEM_V(pTermStruct))
    {
        CLI_RECORD(CLI_STAT_SEM_V);
        DBG_Out(PID_CLI, CLI_DBGOUT_ERR, "\r\n Sem_V_2 of Term %d Failed!", pTermStruct->ulTermId);
    }

    CLI_SetTermStatus(pTermStruct, TERM_SLEEPING);
    CLI_RECORD(CLI_STAT_CLIENT_SEND_CLOSED);
    return G_FAILURE;
}

_U32 CLI_CloseSocket(PTerm_Data_S pTermStruct)
{
    urp_close (pTermStruct->iSocket);
    pTermStruct->iSocket = SOCKET_NOT_INITIAL;
    return G_SUCCESS;
}





/*********************************************************************/
/* 函數(shù)名稱 : CLI_TelnetTask()                                       */
/* 函數(shù)功能 : telnet任務體,根據(jù)狀態(tài)實現(xiàn)telnet功能                   */
/* 輸入?yún)?shù) : 無                                                     */
/* 輸出參數(shù) : 無                                                     */
/* 返回     : 無                                                     */
/* 上層函數(shù) : 任務調度函數(shù)                                           */
/* 創(chuàng)建者   :                                                        */
/* 修改記錄 :                                                        */
/*********************************************************************/
_VOID CLI_TelnetTask( _U32 ulArg1, _U32 ulArg2)
{
    PTerm_Data_S pTermStruct ;
    #if MULTI_DEVICE_SUPPORT
    _U32  ulTimeDes[5] = {0,0,0,0,0};
    #endif

    (void)ulArg2;

    if (ulArg1 >= m_ulCliMaxOnlineUser)
    {
        DBG_Out(PID_CLI, CLI_DBGOUT_ERR, "\r\n CLI: telnet task id invalid!", ulArg1);
        MT_ERRLOG(ulArg1);
        return;
    }

    pTermStruct = m_TDTable[ulArg1].pTermStruct;
    if (EOS_TaskGetSelfID(&m_TDTable[ulArg1].lTaskid) != G_SUCCESS)
    {
        CLI_RECORD(CLI_STAT_GET_TID_FAILD);
        DBG_Out(PID_CLI, CLI_DBGOUT_ERR, "\r\n CLI: Get task id of tel%d failed!", ulArg1);
        MT_ERRLOG(0);
    }

    /* 第一個創(chuàng)建的任務或由從設備創(chuàng)建的任務,均作為命令透傳處理任務 */
    if (ulArg1 == 1)
    {
        CLI_MMLTaskInit(pTermStruct);
    }
#if MULTI_DEVICE_SUPPORT
    if (m_CliIsMainDevice != G_TRUE && ulArg1 + 1 < m_ulCliMaxOnlineUser )
    {
        CLI_MMLTaskInit(pTermStruct);
    }
#endif

    for (; ;)
    {
        switch (pTermStruct->ucTermStatus)
        {
            case TERM_SLEEPING:
                CLI_DELAY(20);
                break;
            case TERM_ACTIVE:
                CLI_TelnetInit(pTermStruct);
                CLI_TermLogin(pTermStruct);
                break;
            case TERM_LOGED:
                CLI_TermTaskProc(pTermStruct);
                if (!IS_TERM_NORMAL(pTermStruct))
                {
                    CLI_TermLogout(pTermStruct);
                }
                break;
            #if MULTI_DEVICE_SUPPORT
            case TERM_WAIT_RESPONSE:
            {
                if (ulTimeDes[ulArg1 - 1] == 0)
                {
                    ulTimeDes[ulArg1 - 1] = WAIT_RESPONSE_TIME;
                }
                else if (ulTimeDes[ulArg1 - 1] == 1)
                {
                    IO_Print(CLI_WAIT_RESP_TIMEOUT);
                    CLI_SetTermStatus(pTermStruct, TERM_LOGED);
                }

                if (m_CliIsMainDevice != G_TRUE)
                {
                    CLI_SetTermStatus(pTermStruct, TERM_LOGED);
                    ulTimeDes[ulArg1 - 1] = 0;
                    continue;
                }
                if (pTermStruct->szSendBuf[0] != '\0')
                {
                    _S8 *pcPos = G_NULL;

                    ulTimeDes[ulArg1 - 1] = WAIT_RESPONSE_TIME;

                    pTermStruct->ulTimeLeft
                        = (pTermStruct->ucTimeOutFlag == TIMEOUT_ON ? DEADLINE_SHORT : DEADLINE_LONG);
                    if ((pcPos = strstr(pTermStruct->szSendBuf, CMD_RESPONED_END)) != G_NULL)
                    {
                        *pcPos = '\0';
                        CLI_SendToTerm(pTermStruct);
                        CLI_SetTermStatus(pTermStruct, TERM_LOGED);
                        ulTimeDes[ulArg1 - 1] = 0;
                    }
                    else
                        CLI_SendToTerm(pTermStruct);
                }
                else
                {
                    ulTimeDes[ulArg1 - 1]--;
                    CLI_DELAY(10);
                }
                break;
            }
            #endif
            default:
                CLI_SetTermStatus(pTermStruct, TERM_SLEEPING);
                break;
        }
    }
}


/*==================================================================*/
/*      函數(shù)名      :CLI_TelnetEditString                           */
/*      函數(shù)功能    :Telnet掃描接收緩沖區(qū),并編輯字符串編輯緩沖區(qū)    */
/*      輸入?yún)?shù)    :PTerm_Data_S pTermStruct  任務數(shù)據(jù)指針         */
/*      輸出參數(shù)    :PTerm_Data_S pTermStruct  任務數(shù)據(jù)指針         */
/*      返回值      :_U32   0:  接收到一完整命令行并準備提交該命令  */
/*                         1:  只接收到一字符并準備繼續(xù)接收字符     */
/*      調用函數(shù)    : CLI_EditString()                              */
/*      被調函數(shù)    :                                               */
/*==================================================================*/
_U32 CLI_TelnetEditString( PTerm_Data_S pTermStruct )
{
    _U32  ulTmp ;
    _U8   ucTmp ;
    _U32  jTmp;
    struct Fsm_Trans_S * pt ;

    CLI_ASSURE_OR_FAIL( G_NULL != pTermStruct );
    CLI_ASSURE_OR_FAIL ( pTermStruct->iSocket != SOCKET_FOR_SERIAL )

    /* 接收字符串來自telnet terminal client,利用telnet的有限狀態(tài)機  */
    for ( ulTmp = 0 ; ulTmp < (_U32)pTermStruct->iRecvLen ; ulTmp ++ )
    {
        ucTmp = (_U8)pTermStruct->szRecvBuf[ ulTmp ] ;
        jTmp = ucTmp ;

        jTmp = TTFsm[ pTermStruct->TelnetParam.TTState ][ jTmp ] ;

        if(jTmp != TINVALID)
        {
            pt = &TTStab[ jTmp ] ;
            pTermStruct->TelnetParam.TTState = pt->Ft_Next ;
            if ( ! ( pt->Ft_Action ) ( pTermStruct, ucTmp ) )
                return G_SUCCESS ;
        }
    }

    return G_FAILURE ;

}



#endif /* #if CLI_TELNET_SUPPORT */

/*==================================================================*/
/*      函數(shù)名      :CLI_MMLTaskInit                                */
/*      函數(shù)功能    :MML類型的終端任務數(shù)據(jù)初始化                    */
/*      輸入?yún)?shù)    :pTermStruct 終端任務結構                       */
/*      輸出參數(shù)    :無                                             */
/*      返回值      :無                                             */
/*      被調函數(shù)    :                                               */
/*==================================================================*/
_VOID CLI_MMLTaskInit(PTerm_Data_S pTermStruct)
{
    pTermStruct->iSocket = SOCKET_FOR_MML;
    pTermStruct->ucTermStatus = TERM_LOGED;
    pTermStruct->ucScroll = SCROLL_AUTO;
    pTermStruct->pWS->ulSmart = SMART_OFF;
    pTermStruct->pWS->ulLevel = CT_AL_DEBUG;
    pTermStruct->ucUserLevel =  CT_AL_DEBUG;
    return;
}

/*┏━━━━━━━━━━Telnet調試命令實現(xiàn)━━━━━━━━━┓*/
/*┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛*/
_U32 CLI_CmdTelnetDiag(_U32 Param1, _U32 Param2, _U32 Param3, _U32 Param4)
{
    extern _U32 CLI_DispStatInfo(_U32 ulTermID);

    _S8 szIpaddr[20], szMask[20] = "255.255.0.0";
    _U32 ulIpaddr, ulMask;
    _U32 ulRet = G_SUCCESS;
    PTerm_Data_S pTermStruct;
    (_VOID)Param4;

    switch(Param1)
    {
        case 0:
            DBG_Out(PID_CLI, CLI_DBGOUT_ERR,
                    "\r\n param1 -- 調試類型: 1. 打開一個telnet訪問允許(IP:param2.param3.0.0/16)"
                    "\r\n                     2. 查看telnet終端信息"
                    "\r\n                     3. 踢掉一個終端(ID = param2)"
                    "\r\n                     4. 查詢統(tǒng)計信息");
            break;
        case 1:
            EOS_Sprintf(szIpaddr, "%d.%d.0.0", Param2, Param3);
            if ((_StrToIPAddr(szIpaddr, &ulIpaddr) != G_SUCCESS)
             || (_StrToIPAddr(szMask, &ulMask) != G_SUCCESS))
                return G_FAILURE;
            ulRet = CLI_AclAdd(ulIpaddr, ulMask);
            break;
        case 2:
            break;
        case 3:
            if (!CLI_IS_TERMID_VALIDE(Param2))
                return G_FAILURE;

            //強行注銷該終端
            CLI_TermLogout(m_TDTable[Param3].pTermStruct);
            break;
        case 4:
            CLI_DispStatInfo(1);
            break;
        case 5:
            if (!CLI_IS_TERMID_VALIDE(Param2))
                return G_FAILURE;

            pTermStruct = m_TDTable[Param2 - 1].pTermStruct;

            DBG_Out(PID_CLI, CLI_DBGOUT_MUST, "\r\n Term Data: (address = 0x%x)\r\n"
                                "\r\n socket = 0x%x"
                                "\r\n username = %s"
                                "\r\n ulTimeLeft = %d"
                                "\r\n ucTermStatus = %d"
                                "\r\n ucUserLevel = %d"
                                "\r\n pWS data: (address = 0x%x)"
                                "\r\n szCmd = %s"
                                "\r\n ulLevel = %d"
                                "\r\n ulStatus = %d",
                                (_U32)pTermStruct, pTermStruct->iSocket,
                                pTermStruct->szCurUserName, pTermStruct->ulTimeLeft,
                                pTermStruct->ucTermStatus,  pTermStruct->ucUserLevel,
                                (_U32)pTermStruct->pWS,     pTermStruct->pWS->szCmdString,
                                pTermStruct->pWS->ulLevel,  pTermStruct->pWS->ulStatus);
            break;
        default:
            return G_FAILURE;
    }

    return ulRet;
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产成人精品在线看| 美女视频一区二区三区| 欧美日韩国产片| 蜜臀久久99精品久久久久久9| 久久亚洲精华国产精华液| 99精品热视频| 国产一区二区三区免费观看| 一区二区三区日韩精品视频| 日韩欧美国产成人一区二区| 不卡免费追剧大全电视剧网站| 亚洲视频资源在线| 337p亚洲精品色噜噜| 成人av在线播放网站| 日韩激情一区二区| 亚洲视频在线一区观看| 精品三级在线观看| 欧美午夜免费电影| fc2成人免费人成在线观看播放| 首页国产欧美日韩丝袜| 中文字幕成人av| 日韩欧美国产一区二区三区 | 男女男精品网站| 中文字幕一区视频| 日韩亚洲国产中文字幕欧美| 99久久精品国产导航| 床上的激情91.| 久久精品久久99精品久久| 亚洲精品v日韩精品| 久久久精品tv| 精品欧美一区二区久久| 欧美日韩中文国产| www.亚洲国产| 国产精品一区二区在线播放| 午夜免费欧美电影| 国产精品毛片无遮挡高清| 日韩视频123| 99精品视频中文字幕| 国产激情一区二区三区| 国产精品一二三区在线| 蜜桃久久久久久| 亚洲国产sm捆绑调教视频| 久久蜜桃av一区二区天堂| 久久久精品黄色| 精品久久免费看| 日韩欧美一区二区免费| 欧美日韩在线不卡| 欧美日韩久久久一区| 91免费在线视频观看| 成人av电影观看| 在线影视一区二区三区| av不卡在线观看| 成a人片国产精品| 国模大尺度一区二区三区| 国产91在线|亚洲| 国产精品小仙女| 国产精品99久| av午夜精品一区二区三区| 狠狠狠色丁香婷婷综合激情| 久久国产福利国产秒拍| 寂寞少妇一区二区三区| 亚洲国产一区二区视频| 亚洲一区二区视频在线观看| 一区二区三区久久| 国产亚洲一区二区三区| 中文字幕综合网| 亚洲免费毛片网站| 亚洲伦理在线精品| 亚洲一区二区中文在线| 天堂va蜜桃一区二区三区| 午夜精品久久久久久久久| 日韩和欧美的一区| 国产在线播精品第三| 懂色av中文字幕一区二区三区| 丁香婷婷综合五月| 91农村精品一区二区在线| 制服丝袜中文字幕一区| 久久综合中文字幕| 国产精品欧美综合在线| 国产精品第四页| 亚欧色一区w666天堂| 老司机免费视频一区二区| 国产精品一区在线观看你懂的| 丰满岳乱妇一区二区三区| 91啪亚洲精品| 在线综合亚洲欧美在线视频| 欧美久久一区二区| 国产欧美精品一区| 夜夜夜精品看看| 日本网站在线观看一区二区三区| 狠狠色丁香久久婷婷综| 99国产精品一区| 91精品欧美福利在线观看| 精品国产精品网麻豆系列| 亚洲欧美日韩国产综合在线| 天天操天天干天天综合网| 久久激情五月激情| 风间由美一区二区av101 | 国产原创一区二区三区| 日本精品一区二区三区四区的功能| 欧美日韩国产一二三| 久久先锋影音av鲁色资源网| 亚洲区小说区图片区qvod| 国产一本一道久久香蕉| 成人激情免费视频| 在线播放中文字幕一区| 国产精品美女www爽爽爽| 亚洲国产精品自拍| 成人精品一区二区三区中文字幕| 欧美亚洲免费在线一区| 久久久不卡影院| 毛片一区二区三区| 91久久精品一区二区三区| 日韩一级免费一区| 亚洲综合自拍偷拍| 不卡一区二区中文字幕| 欧美电视剧免费观看| 亚洲成人免费影院| 国产剧情一区二区三区| 69av一区二区三区| 亚洲卡通欧美制服中文| 久久国产精品72免费观看| 91精品国产综合久久香蕉的特点| 成人免费小视频| 精东粉嫩av免费一区二区三区| 日韩一级高清毛片| 亚洲18色成人| 91精品办公室少妇高潮对白| 国产精品久久二区二区| 久久成人综合网| 欧美日韩亚洲综合一区| 一区二区成人在线视频| 一本色道综合亚洲| 一区二区三区美女| 欧美视频一区二区在线观看| 亚洲午夜在线视频| 欧美日韩另类国产亚洲欧美一级| 五月综合激情网| 91精品国产一区二区| 免费观看久久久4p| 欧美成人一区二区| 久久99精品久久久久久久久久久久 | 欧美一区二区三区免费观看视频| 亚洲成人一区在线| 欧美乱妇15p| 蜜臀av性久久久久蜜臀aⅴ| 日韩午夜激情电影| 国产美女av一区二区三区| 国产欧美日韩精品a在线观看| 国产精品一区免费视频| 中文字幕+乱码+中文字幕一区| 成人看片黄a免费看在线| 亚洲女同一区二区| 欧美色图免费看| 免费一级片91| 久久奇米777| 99国产精品久久久久| 亚洲同性同志一二三专区| 在线亚洲人成电影网站色www| 一区二区激情小说| 91精品午夜视频| 国产成人超碰人人澡人人澡| 亚洲少妇30p| 884aa四虎影成人精品一区| 精品在线观看免费| 中文字幕一区二区三区四区| 欧美日韩美少妇| 国产精品亚洲午夜一区二区三区 | 国产午夜精品一区二区三区视频| 成人av在线一区二区三区| 亚洲乱码国产乱码精品精可以看| 欧美久久久久久久久久| 99国产精品99久久久久久| 亚洲精品乱码久久久久久久久 | 欧美日韩成人综合在线一区二区| 蜜臀av性久久久久蜜臀aⅴ四虎 | 欧美日韩在线三区| 狠狠色丁香久久婷婷综合_中 | 三级久久三级久久| 国产亚洲综合色| 欧美日韩精品一区二区三区蜜桃| 国内精品不卡在线| 亚洲一区二区免费视频| 久久九九全国免费| 91久久线看在观草草青青| 国产自产v一区二区三区c| 亚洲欧美日韩系列| 久久色在线视频| 欧美在线视频不卡| 成人免费视频app| 奇米精品一区二区三区四区 | 国模套图日韩精品一区二区| 一区二区免费看| 国产亚洲欧美日韩在线一区| 在线看一区二区| 成人动漫一区二区三区| 日韩在线一区二区三区| 综合av第一页| 欧美国产视频在线| 欧美一区二区成人6969| 91精品福利视频|