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

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

?? ospf_mib_envoy_api.c

?? vxworks下ospf協議棧
?? C
?? 第 1 頁 / 共 3 頁
字號:
/************************************************************************************* ospf_envoy_snmpdTreeAdd - dynamically add a subtree to the SNMP agent MIB tree** This routine adds the specified MIB subtree, located in memory at the address* <pTreeAddr>, to the agent's MIB data tree at the node with the object identifier* specified by <pTreeOidStr>.** RETURNS: OK or ERROR.** ERRNO: N/A*/STATUS  ospf_envoy_snmpdTreeAdd( char *pTreeOidStr, MIBNODE_T *pTreeAddr,                                 SEM_ID ospf_envoyBSem ){    int        status = 0;    MIBNODE_T  *pReplacedNode;    OBJ_ID_T   treeOid;    OIDC_T     oidArray [MAX_OSPF_OID_LEN];   treeOid.num_components = ospf_envoy_oidStrToArray(pTreeOidStr, oidArray);   if (treeOid.num_components > 0)   {       treeOid.component_list = oidArray;       semTake( ospf_envoyBSem, WAIT_FOREVER );       status = Add_Node_From_Root (NULL,  &treeOid, pTreeAddr, &pReplacedNode);       semGive( ospf_envoyBSem );       if ( status == 0 )       {           ospfEnvoyPrintf(("ospf_envoy_snmpdTreeAdd:%s successful\n", pTreeOidStr));       }       else       {           ospfEnvoyPrintf(("ospf_envoy_snmpdTreeAdd:%s failed\n", pTreeOidStr));       }   }   return ((status == 0) ? OK : ERROR);}/**************************************************************************************** ospfEnvoy_undo - undo routine for ospf method routines.** This is the generic undo routine that will be invoked by Envoy SNMP if failure occured* within the testproc or setproc.** NOTE: The MIB API doesn't support undo. The undo capability will be provided in the*       next release. For now, this generic undo routine is used to satisfy Envoy*       SNMP.** RETURNS: N/A** NOMANUAL*/void ospfEnvoy_undo( OIDC_T lastmatch, int tcount, OIDC_T *tlist,                     SNMP_PKT_T *pktp, VB_T *vbp ){    /* tell envoy snmp that the undo process has just begun */    undoproc_started( pktp, vbp );    undoproc_error( pktp, vbp, UNDO_FAILED );  /* always failed for now... */    return;}/**************************************************************************************** ospf_envoy_setGenError - set varbinds with Envoy SNMP GEN_ERR error** This routine sets the varbind with the Envoy SNMP GEN_ERR.** RETURNS: N/A*/void ospf_envoy_setGenError( SNMP_PKT_T *pktp, VB_T *vbp, mApiReqType_t reqType ){    for ( ; vbp ; vbp = vbp->vb_link )    {        if ( reqType == MAPI_GET_NEXT )            nextproc_error(pktp, vbp, GEN_ERR );        else  if ( reqType == MAPI_GET )            getproc_error( pktp, vbp, GEN_ERR );        else if ( reqType == MAPI_TEST )        {            vbp->vb_priv = NULL;            testproc_error( pktp, vbp, GEN_ERR );        }        else if ( reqType == MAPI_COMMIT )        {            vbp->vb_priv = NULL;            setproc_error( pktp, vbp, GEN_ERR );        }    }    return;}/**************************************************************************************** ospf_envoy_setNoSuchNameError - set varbinds with Envoy SNMP NO_SUCH_NAME error** This routine sets the varbinds with the Envoy SNMP NO_SUCH_NAME error** RETURNS: N/A*/void ospf_envoy_setNoSuchNameError( SNMP_PKT_T *pktp, VB_T *vbp, mApiReqType_t reqType ){    for ( ; vbp != NULL; vbp = vbp->vb_link )    {        if ( reqType == MAPI_TEST )        {            vbp->vb_priv = NULL;            testproc_error( pktp, vbp, NO_SUCH_NAME );        }        else if ( reqType == MAPI_COMMIT )        {            vbp->vb_priv = NULL;            setproc_error( pktp, vbp, NO_SUCH_NAME );        }    }    return;}/***************************************************************************************** ospf_envoy_processGetRespError - process MIB API response error** This routine process the MIB API response error and set the varbinds with the* appropriate Envoy SNMP error code.** RETURNS: N/A*/void ospf_envoy_processGetRespError( SNMP_PKT_T *pktp, VB_T *vbp, mApiReqType_t reqType,                                     int mApiErr ){    for ( ; vbp ; vbp = vbp->vb_link )    {        if ( mApiErr == MAPI_INVALID_INSTANCE )        {            if ( reqType == MAPI_GET_NEXT )                nextproc_no_next( pktp, vbp );            else                getproc_nosuchins( pktp, vbp );        }        else        {            if ( reqType == MAPI_GET_NEXT )                nextproc_error( pktp, vbp, mApi2EnvoyErrorGet( (mApiError_t)mApiErr) );            else                getproc_error( pktp, vbp, mApi2EnvoyErrorGet( (mApiError_t)mApiErr) );        }    }    return;}/************************************************************************************** ospf_envoy_buildSetReq - build MIB API TEST/COMMIT request** This routine build the MIB API request message for testproc, setproc and/or undoproc.* The routine copy the data from varbind to the pointer pointed to by the pValueBuf* array if the data type is VT_NUMBER, VT_COUNTER, VT_GAUGE or VT_IPADDRESS. For* VT_STRING and VT_OPAQUE, data is copied into memory that is dynamically allocated using* SNMP_memory_alloc() and the pOctetBuf pointer  will be initialized to pointed to the* allocated memory. It is the caller responsibility to call ospf_envoy_clearBuffer()* to reinitialize the memory pointed to by the pValueBuf pointer and to free the* dynamically allocated memory if the <dynamic> boolean flag is set.** RETURNS: OK or ERROR** ERRNO: N/A*/STATUS ospf_envoy_buildSetReq( int tcount, OIDC_T *tlist, SNMP_PKT_T *pktp, VB_T *vbp,                               envoyRequest_t *pEnvoyReq, mApiRequest_t *pRequest,                               mApiReqType_t reqType, int mApiOidOffset ){    VB_T *group_vbp = vbp;    mApiObject_t *pObject;    unsigned char         *envBuffer;    int          vbcount;    int          bufCnt;    if ( pEnvoyReq == NULL || pRequest == NULL )    {        ospfEnvoyPrintf(("ospf_envoy_getVbBuf:bogus pointer\n"));        return ERROR;    }    /* find all the varbinds that share the same getproc and instance and group     * them together. Although the varbinds don't change in any significant way between     * the calling of the testproc, setproc and undoproc (the flag field may changed),     * it is still necessary to call group_by_getproc_and_instance to group all     * varbinds that share the same instance each time this routine is invoked. This     * is because the pointer to the pValueBuf envoyReqest_t may have been reused     * especially if there have been multiple testprocs before the setprocs.     */    group_by_getproc_and_instance(pktp, vbp, tcount, tlist);    /* retrive the cookie stash by the testproc if tcount is not 1 (scalar objects).     * The varbinds don't change in any signification way between the calling of the      * testproc, setproc and undoproc ( the flags field may change). The important      * thing is the sequence of varbinds as arranged in the linked list remains the      * same. Although the cookie is stashed in each varbinds during testproc, we      * just need to retrieve the cookie that is is available in the first varbind      * (don't need to go thru every varbind). MIB API only allow one cookie per      * request anyhow...     */    if ( (reqType == MAPI_COMMIT) && (tcount != 1 ) )    {        if ( vbp->vb_priv == NULL )        {            ospfEnvoyPrintf(("ospf_envoy_buildSetReq:No cookie found!\n"));            return ERROR;        }        pRequest->pReqCookie = vbp->vb_priv;    }    /* get number of varbinds */    pRequest->numObjects = ospf_envoy_getVbCount( vbp );    /* if number of varbinds are more than what we can handle, return ERROR */    if ( pRequest->numObjects > pEnvoyReq->numValueBuf )    {        ospfEnvoyPrintf(("ospf_build_mApiSetRequest: vbcount(%i) exceed max(%i)\n",                         pRequest->numObjects, pEnvoyReq->numValueBuf));        return ERROR;    }    /* build the mApiRequest_t structure */    pRequest->pInstance = (ulong_t *)tlist;    pRequest->instanceLen = (ushort_t)tcount;    pRequest->pObjectList = pEnvoyReq->pObjectList;    /* get the data from varbinds. Ideally we want to be able to use the data     * from varbinds directly without first copying to a local buffer. Because     * of future compatibility concern, we discard that idea...     */    for ( bufCnt = 0, vbcount = 0; group_vbp != NULL && vbcount < pRequest->numObjects          && bufCnt < pEnvoyReq->numValueBuf; vbcount++, group_vbp = group_vbp->vb_link )    {        pObject = &pRequest->pObjectList[vbcount];        pObject->oidPrefixEnum = group_vbp->vb_ml.ml_last_match + mApiOidOffset;        pObject->pObjCookie = &pEnvoyReq->pObjCookie[vbcount];        /* set the object cookie in the envoyRequest_t to true if this is the last          * object in the varbind list. This is needed so that the rowStatus library         * used by the MIB API will know when to manipulate the rowStatus object for         * the row instance. Since vbcount is zero-based, it is necessary to decrement         * the numObjects by 1 in order to determine if this is the last object in         * the varbind list.         */         if ( vbcount == (pRequest->numObjects - 1) )            pEnvoyReq->pObjCookie[vbcount] = TRUE;         else            pEnvoyReq->pObjCookie[vbcount] = FALSE;        switch( group_vbp->vb_ml.ml_leaf->expected_tag)        {            case VT_NUMBER:            case VT_COUNTER:            case VT_GAUGE:                pEnvoyReq->pValueBuf[bufCnt] = VB_GET_INT32(group_vbp);                pObject->pValueBuf = &pEnvoyReq->pValueBuf[bufCnt];                pObject->valueLen = sizeof(VB_GET_INT32(group_vbp));                bufCnt++;                break;            case VT_STRING:            case VT_OPAQUE:                envBuffer = EBufferStart(VB_GET_STRING(group_vbp));                pEnvoyReq->octetBufLen = EBufferUsed(VB_GET_STRING(group_vbp));                pEnvoyReq->pOctetBuf = SNMP_memory_alloc( pEnvoyReq->octetBufLen );                if ( pEnvoyReq->pOctetBuf == NULL )                {                    ospfEnvoyPrintf(("ospf_envoy_buildSetReq:octetBuf calloc failed\n"));                    return ERROR;                }                /* mark this buffer as dynamic so the caller knows to free it later */                pEnvoyReq->dynamic = TRUE;                /* copy data from varbind */                memcpy(  pEnvoyReq->pOctetBuf, envBuffer, pEnvoyReq->octetBufLen );                pObject->pValueBuf = pEnvoyReq->pOctetBuf;                pObject->valueLen = pEnvoyReq->octetBufLen ;                break;            case VT_IPADDRESS:                pObject->valueLen = 4;                memcpy( (char *)&pEnvoyReq->pValueBuf[bufCnt],                        VB_GET_IP_ADDRESS(group_vbp), pObject->valueLen );                pObject->pValueBuf = &pEnvoyReq->pValueBuf[bufCnt];                bufCnt++;                break;            case VT_COUNTER64:            case VT_OBJECT:            case VT_EMPTY:            default:                return ERROR;        }    }    return OK;}/**************************************************************************************** ospf_envoy_markVarbind - mark the varbind with the appropriate status** This routine mark the varbind as being done base on the request type. This routine* must be called before each testproc() and setproc() exit.** RETURNS: N/A** ERRNO: N/A*/void ospf_envoy_markVarbind( VB_T *vbp, SNMP_PKT_T *pktp,                             mApiRequest_t *pRequest, mApiReqType_t reqType ){    VB_T *group_vbp;    mApiObject_t *pObj;    int vbcount = 0;    for ( group_vbp = vbp; group_vbp != NULL && vbcount < pRequest->numObjects;          vbcount++, group_vbp = group_vbp->vb_link )    {        pObj = &pRequest->pObjectList[vbcount];        if ( pObj->exception == MAPI_NO_EXCEPTION )        {            /* tell 'em that this varbind has been processed */            if ( reqType == MAPI_TEST )                testproc_good( pktp, group_vbp );            if ( reqType == MAPI_COMMIT )                setproc_good( pktp, group_vbp );            if ( reqType == MAPI_UNDO )                undoproc_good( pktp, group_vbp );        }        else        {            if ( pObj->exception == MAPI_NO_SUCH_OBJECT )                getproc_nosuchobj( pktp, group_vbp );            if ( pObj->exception == MAPI_NO_SUCH_INSTANCE )                getproc_nosuchins (pktp, group_vbp );        }    }}/***************************************************************************************** ospf_envoy_processScalarGetResp - process MIB API GET/GET NEXT scalar objects response** This is a generic routine to process all the MIB API GET/GET_NEXT response for the* scalar objects. It is invoked by getproc or nextproc after retreiving the values of* requested objects from the MIB API. The value of the objects will be copied into the* appropriate varbind. If exceptions reported by MIB API, the appropriate envoy snmp* exception will be raised. This routine should not be used to process the GET/GET_NEXT* response for table rows. This is because the nextproc_next_instance() needs to be* treated differently for scalar objects.** RETURNS: N/A** ERRNO: N/A*/void ospf_envoy_processScalarGetResp( VB_T *vbp, SNMP_PKT_T *pktp,                                      envoyRequest_t *pEnvoyReq, mApiRequest_t *pRequest,                                      mApiReqType_t reqType, int mApiOidOffset ){    mApiObject_t   *pObject;    STATUS         rc;    int            vbcount;    OIDC_T         instance;    vbcount = 0;    instance = 0;    for ( ; vbp != NULL && vbcount < pRequest->numObjects; vbp = vbp->vb_link, vbcount++ )    {        pObject = &pRequest->pObjectList[vbcount];        /* assumed the varbind is serailize with the request message */        if ( vbp->vb_ml.ml_last_match != pObject->oidPrefixEnum - mApiOidOffset )

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
精品99一区二区三区| 国产综合色精品一区二区三区| 精品三级av在线| 制服丝袜日韩国产| 在线不卡中文字幕播放| 欧美日韩情趣电影| 欧美丰满嫩嫩电影| 欧美日韩国产一级| 欧美少妇bbb| 欧美性感一区二区三区| 欧美日韩一区二区三区在线看| 欧美图片一区二区三区| 欧美系列在线观看| 精品视频在线视频| 欧美精选在线播放| 精品国产一区二区三区忘忧草| 精品999久久久| 国产精品伦一区| 亚洲男人电影天堂| 亚洲成人自拍一区| 久久99精品久久只有精品| 国产福利一区在线| 91丝袜呻吟高潮美腿白嫩在线观看| 91一区在线观看| 欧美日本韩国一区| 久久精品一级爱片| 一区二区三区精品视频在线| 免费精品视频在线| 国产sm精品调教视频网站| 日本精品一级二级| 精品理论电影在线观看| 中文字幕制服丝袜一区二区三区 | 亚洲女性喷水在线观看一区| 亚洲电影第三页| 精久久久久久久久久久| 成人免费的视频| 欧美日韩免费电影| 国产欧美日韩综合精品一区二区 | 欧美三级在线播放| 久久久亚洲精品石原莉奈| 国产精品美女www爽爽爽| 天天色图综合网| 国产高清成人在线| 欧美一区二区三区在线观看视频| 国产精品亲子伦对白| 石原莉奈一区二区三区在线观看| 国产成人精品免费| 91精品国产一区二区| 亚洲欧洲日韩在线| 激情小说亚洲一区| 欧美日韩亚洲综合在线| 国产精品无圣光一区二区| 青青草97国产精品免费观看 | 亚洲第一福利一区| 成人动漫在线一区| 久久亚洲精华国产精华液| 亚洲综合色丁香婷婷六月图片| 国产精品综合二区| 欧美一级免费观看| 香蕉加勒比综合久久| 色悠久久久久综合欧美99| 国产精品丝袜黑色高跟| 国产精品一区免费视频| 欧美成人午夜电影| 丝袜脚交一区二区| 精品1区2区3区| 亚洲一区二区三区免费视频| jizzjizzjizz欧美| 国产精品妹子av| 高清不卡一二三区| 久久亚洲综合色一区二区三区| 日韩和欧美一区二区三区| 欧美日精品一区视频| 一区二区三区视频在线看| 色综合中文字幕国产| 国产日产欧产精品推荐色 | 欧美日韩精品专区| 亚洲影院在线观看| 欧美午夜精品久久久久久孕妇 | 偷拍一区二区三区四区| 欧美日韩在线直播| 图片区小说区区亚洲影院| 欧美精品第一页| 日韩和欧美一区二区三区| 日韩一级黄色片| 国产在线播精品第三| 久久亚洲精品小早川怜子| 国产传媒欧美日韩成人| 中文字幕免费观看一区| 99re视频精品| 亚洲国产欧美日韩另类综合| 欧美肥妇bbw| 激情综合色综合久久| 欧美国产亚洲另类动漫| 色视频成人在线观看免| 五月婷婷综合网| 精品动漫一区二区三区在线观看| 国产久卡久卡久卡久卡视频精品| 国产精品网站在线观看| 在线观看国产日韩| 麻豆国产欧美一区二区三区| 久久视频一区二区| av在线一区二区| 男女视频一区二区| 国产精品女上位| 欧美日韩综合不卡| 国产suv一区二区三区88区| 亚洲精品你懂的| 欧美大片在线观看一区二区| 国产a视频精品免费观看| 亚洲一区二区三区中文字幕 | 99riav一区二区三区| 午夜电影网亚洲视频| 久久嫩草精品久久久精品| 在线观看视频一区二区欧美日韩| 久久国产尿小便嘘嘘| 综合电影一区二区三区| 91精品婷婷国产综合久久性色| 国产福利91精品一区| 亚洲444eee在线观看| 国产精品欧美精品| 欧美一级片在线看| 一本大道综合伊人精品热热| 国产一区在线观看视频| 午夜国产不卡在线观看视频| 国产精品天美传媒沈樵| 日韩一级黄色大片| 欧美日韩一区二区欧美激情| 白白色 亚洲乱淫| 麻豆免费精品视频| 亚洲成人av一区二区| 亚洲欧洲国产专区| 久久精品欧美一区二区三区不卡| 欧美日韩在线三区| 在线观看欧美黄色| 一本色道久久综合精品竹菊| 国产老妇另类xxxxx| 老司机午夜精品99久久| 日韩精品亚洲一区| 亚洲自拍偷拍麻豆| 综合久久一区二区三区| 国产清纯美女被跳蛋高潮一区二区久久w | 老司机精品视频线观看86| 亚洲专区一二三| 亚洲欧美激情在线| 中文字幕一区在线观看视频| 久久精品视频一区二区| 精品国产一二三| 精品国产91乱码一区二区三区 | 欧美色窝79yyyycom| 色婷婷av一区二区三区软件| 91一区在线观看| 色噜噜偷拍精品综合在线| av在线不卡电影| 91麻豆自制传媒国产之光| 91视频观看视频| 一本色道久久综合狠狠躁的推荐| 99国产精品久| 在线日韩国产精品| 欧美三级韩国三级日本一级| 欧美性做爰猛烈叫床潮| 欧美精品乱码久久久久久| 91麻豆精品国产91久久久使用方法 | 国产精品毛片久久久久久| 国产精品成人免费精品自在线观看| 国产精品你懂的在线欣赏| 亚洲欧美日韩在线| 亚洲成在人线免费| 美女视频网站久久| 国产福利电影一区二区三区| eeuss鲁片一区二区三区在线观看| av一区二区三区在线| 欧美亚洲自拍偷拍| 欧美一区二区福利视频| 久久品道一品道久久精品| 国产欧美一区视频| 一区二区三区四区不卡视频 | 国产精品三级视频| 成人免费一区二区三区在线观看| 一区二区三区av电影 | 国产欧美精品区一区二区三区 | 国产精品女主播av| 一区二区国产视频| 精彩视频一区二区三区| 成人黄色国产精品网站大全在线免费观看| 99精品久久久久久| 555www色欧美视频| 中文字幕第一区第二区| 亚洲二区视频在线| 国产精品影音先锋| 欧美日韩午夜影院| 日本一区二区三区四区在线视频| 亚洲国产欧美日韩另类综合| 国产成人av影院| 欧美久久高跟鞋激| 亚洲欧美日韩国产成人精品影院 | 成人av免费在线| 91精品国产综合久久久久久久 | 午夜精品免费在线观看| 亚洲精品免费一二三区|