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

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

?? mgmtapi.c

?? windows的snmp api源碼
?? C
?? 第 1 頁 / 共 5 頁
字號:

/*++

Routine Description:

    Cleanup session structure after processing response.

Arguments:

    pSMS - pointer to mgmtapi session structure.

Return Values:

    Returns true if successful.

--*/

{
    BOOL fOk = TRUE;
    SNMPAPI_STATUS status;

    // validate session ptr
    WSNMP_ASSERT(pSMS != NULL);

    // validate handle
    if (pSMS->hPdu != (HSNMP_PDU)NULL) {

        // free vbl
        FreeVbl(pSMS);

        // actually release pdu handle
        status = SnmpFreePdu(pSMS->hPdu);

        // validate return code
        if (WSNMP_FAILED(status)) {

            SNMPDBG((
                SNMP_LOG_ERROR,
                "MGMTAPI: SnmpFreePdu returned %d.\n",
                SnmpGetLastError(pSMS->hSnmpSession)
                ));

            // failure
            fOk = FALSE;
        }

        // re-initialize handle
        pSMS->hPdu = (HSNMP_PDU)NULL;
    }

    return fOk;
}


BOOL
CopyOid(
    AsnObjectIdentifier * pDstOID,
    smiLPOID              pSrcOID
    )

/*++

Routine Description:

    Copies object identifier from WinSNMP format to MGMTAPI format.

Arguments:

    pDstOID - points to MGMTAPI structure to receive OID.

    pSrcOID - points to WinSNMP structure to copy.

Return Values:

    Returns true if successful.

--*/

{
    BOOL fOk = FALSE;

    // validate pointers
    WSNMP_ASSERT(pDstOID != NULL);
    WSNMP_ASSERT(pSrcOID != NULL);
    WSNMP_ASSERT(pSrcOID->len != 0);
    WSNMP_ASSERT(pSrcOID->ptr != NULL);

    // store the number of subids
    pDstOID->idLength = pSrcOID->len;

    // allocate memory for subidentifiers
    pDstOID->ids = SnmpUtilMemAlloc(pDstOID->idLength * sizeof(DWORD));

    // validate pointer
    if (pDstOID->ids != NULL) {

        // transfer memory
        memcpy(pDstOID->ids,
               pSrcOID->ptr,
               pDstOID->idLength * sizeof(DWORD)
               );

        // success
        fOk = TRUE;
    }

    // now release memory for original oid
    SnmpFreeDescriptor(SNMP_SYNTAX_OID, (smiLPOPAQUE)pSrcOID);

    return fOk;
}


BOOL
CopyOctets(
    AsnOctetString * pDstOctets,
    smiLPOCTETS      pSrcOctets
    )

/*++

Routine Description:

    Copies octet string from WinSNMP format to MGMTAPI format.

Arguments:

    pDstOctets - points to MGMTAPI structure to receive octets.

    pSrcOctets - points to WinSNMP structure to copy.

Return Values:

    Returns true if successful.

--*/

{
    BOOL fOk = FALSE;
    SNMPAPI_STATUS status;

    // validate pointers
    WSNMP_ASSERT(pDstOctets != NULL);
    WSNMP_ASSERT(pSrcOctets != NULL);
    WSNMP_ASSERT(pSrcOctets->len != 0);
    WSNMP_ASSERT(pSrcOctets->ptr != NULL);

    // octet string allocated
    pDstOctets->dynamic = TRUE;

    // store the number of bytes
    pDstOctets->length = pSrcOctets->len;

    // allocate memory for octet string
    pDstOctets->stream = SnmpUtilMemAlloc(pDstOctets->length);

    // validate pointer
    if (pDstOctets->stream != NULL) {

        // transfer memory
        memcpy(pDstOctets->stream,
               pSrcOctets->ptr,
               pDstOctets->length
               );

        // success
        fOk = TRUE;
    }

    // now release memory for original string
    SnmpFreeDescriptor(SNMP_SYNTAX_OCTETS, (smiLPOPAQUE)pSrcOctets);

    return fOk;
}


CopyVb(
    PSNMP_MGR_SESSION pSMS,
    DWORD             iVarBind,
    SnmpVarBind *     pVarBind
    )

/*++

Routine Description:

    Copy variable binding from WinSNMP structure to MGMTAPI structure.

Arguments:

    pSMS - pointer to mgmtapi session structure.

    iVarBind - index of varbind structure to copy.

    pVarBind - pointer to varbind structure.

Return Values:

    Returns true if successful.

--*/

{
    BOOL fOk = FALSE;
    SNMPAPI_STATUS status;
    smiOID tmpOID;
    smiVALUE tmpValue;

    // validate session ptr
    WSNMP_ASSERT(pSMS != NULL);
    WSNMP_ASSERT(pVarBind != NULL);

    // attempt to retrieve varbind data from winsnmp structure
    status = SnmpGetVb(pSMS->hVbl, iVarBind, &tmpOID, &tmpValue);

    // validate return code
    if (WSNMP_SUCCEEDED(status)) {

        // transfer object identifier value
        fOk = CopyOid(&pVarBind->name, &tmpOID);

        // syntax values are equivalent
        pVarBind->value.asnType = (BYTE)(smiINT32)tmpValue.syntax;

        // determine syntax
        switch (tmpValue.syntax) {

        case SNMP_SYNTAX_INT32:

            // transfer signed int
            pVarBind->value.asnValue.number = tmpValue.value.sNumber;
            break;

        case SNMP_SYNTAX_UINT32:
        case SNMP_SYNTAX_CNTR32:
        case SNMP_SYNTAX_GAUGE32:
        case SNMP_SYNTAX_TIMETICKS:

            // transfer unsigned int
            pVarBind->value.asnValue.unsigned32 = tmpValue.value.uNumber;
            break;

        case SNMP_SYNTAX_CNTR64:

            // transfer 64-bit counter
            pVarBind->value.asnValue.counter64.LowPart =
                tmpValue.value.hNumber.lopart;
            pVarBind->value.asnValue.counter64.HighPart =
                tmpValue.value.hNumber.hipart;
            break;

        case SNMP_SYNTAX_OPAQUE:
        case SNMP_SYNTAX_IPADDR:
        case SNMP_SYNTAX_OCTETS:
        case SNMP_SYNTAX_BITS:

            // transfer octet string
            if (!CopyOctets(&pVarBind->value.asnValue.string,
                            &tmpValue.value.string)) {

                // re-initialize
                pVarBind->value.asnType = ASN_NULL;

                // failure
                fOk = FALSE;
            }

            break;

        case SNMP_SYNTAX_OID:

            // transfer object identifier
            if (!CopyOid(&pVarBind->value.asnValue.object,
                         &tmpValue.value.oid)) {

                // re-initialize
                pVarBind->value.asnType = ASN_NULL;

                // failure
                fOk = FALSE;
            }

            break;

        case SNMP_SYNTAX_NULL:
        case SNMP_SYNTAX_NOSUCHOBJECT:
        case SNMP_SYNTAX_NOSUCHINSTANCE:
        case SNMP_SYNTAX_ENDOFMIBVIEW:

            break; // do nothing...

        default:

            SNMPDBG((
                SNMP_LOG_ERROR,
                "MGMTAPI: SnmpGetVb returned invalid type.\n"
                ));

            // re-initialize
            pVarBind->value.asnType = ASN_NULL;

           // failure
            fOk = FALSE;

            break;
        }

    } else {

        SNMPDBG((
            SNMP_LOG_ERROR,
            "MGMTAPI: SnmpGetVb returned %d.\n",
            SnmpGetLastError(pSMS->hSnmpSession)
            ));
    }

    return fOk;
}


BOOL
CopyVbl(
    PSNMP_MGR_SESSION pSMS,
    SnmpVarBindList * pVarBindList
    )

/*++

Routine Description:

    Copy variable bindings from WinSNMP structure to MGMTAPI structure.

Arguments:

    pSMS - pointer to mgmtapi session structure.

    pVarBindList - pointer to varbind list structure.

Return Values:

    Returns true if successful.

--*/

{
    BOOL fOk = TRUE;

    // validate session ptr
    WSNMP_ASSERT(pSMS != NULL);
    WSNMP_ASSERT(pVarBindList != NULL);

    // initialize
    pVarBindList->len  = 0;
    pVarBindList->list = NULL;

    // validate varbind list handle
    if (pSMS->hVbl != (HSNMP_VBL)NULL) {

        // determine number of varbinds
        pVarBindList->len = SnmpCountVbl(pSMS->hVbl);

        // validate number of varbinds
        if (WSNMP_SUCCEEDED(pVarBindList->len)) {

            // allocate memory for varbinds
            pVarBindList->list = SnmpUtilMemAlloc(
                                    pVarBindList->len *
                                    sizeof(SnmpVarBind)
                                    );

            // validate pointer
            if (pVarBindList->list != NULL) {

                DWORD cVarBind = 1;
                SnmpVarBind * pVarBind;

                // save pointer to varbinds
                pVarBind = pVarBindList->list;

                // process varbinds in the list
                while (fOk && (cVarBind <= pVarBindList->len)) {

                    // copy varbind from winsnmp to mgmtapi
                    fOk = CopyVb(pSMS, cVarBind++, pVarBind++);
                }

            } else {

                SNMPDBG((
                    SNMP_LOG_ERROR,
                    "MGMTAPI: Could not allocate VBL.\n"
                    ));

                // re-initialize
                pVarBindList->len = 0;

                // failure
                fOk = FALSE;
            }

        } else if (pVarBindList->len != SNMPAPI_NOOP) {

            SNMPDBG((
                SNMP_LOG_ERROR,
                "MGMTAPI: SnmpCountVbl returned %s.\n",
                SnmpGetLastError(pSMS->hSnmpSession)
                ));

            // re-initialize
            pVarBindList->len = 0;

            // failure
            fOk = FALSE;
        }
    }

    if (!fOk) {

        // cleanup any varbinds allocated
        SnmpUtilVarBindListFree(pVarBindList);
    }

    return fOk;
}


BOOL
ParseVbl(
    PSNMP_MGR_SESSION pSMS,
    PTRAP_LIST_ENTRY  pTLE
    )

/*++

Routine Description:

    Parse varbind list for trap-related varbinds.

Arguments:

    pSMS - pointer to MGMTAPI session structure.

    pTLE - pointer to trap list entry.

Return Values:

    Returns true if successful.

--*/

{
    BOOL fOk = FALSE;
    SnmpVarBind * pVarBind;
    AsnObjectIdentifier * pOID;
    AsnNetworkAddress   * pAgentAddress = NULL;
    AsnObjectIdentifier * pEnterpriseOID = NULL;

    // object identifiers to convert snmpv2 trap format
    static UINT _sysUpTime[]             = { 1, 3, 6, 1, 2, 1, 1, 3       };
    static UINT _snmpTrapOID[]           = { 1, 3, 6, 1, 6, 3, 1, 1, 4, 1 };
    static UINT _snmpAddress[]           = { 1, 3, 6, 1, 3, 1057, 1       };
    static UINT _snmpTrapEnterprise[]    = { 1, 3, 6, 1, 6, 3, 1, 1, 4, 3 };
    static UINT _snmpTraps[]             = { 1, 3, 6, 1, 6, 3, 1, 1, 5    };

    static AsnObjectIdentifier sysUpTime          = DEFINE_OID(_sysUpTime);
    static AsnObjectIdentifier snmpTrapOID        = DEFINE_OID(_snmpTrapOID);
    static AsnObjectIdentifier snmpAddress        = DEFINE_OID(_snmpAddress);
    static AsnObjectIdentifier snmpTrapEnterprise = DEFINE_OID(_snmpTrapEnterprise);
    static AsnObjectIdentifier snmpTraps          = DEFINE_OID(_snmpTraps);

    // validate pointers
    WSNMP_ASSERT(pSMS != NULL);
    WSNMP_ASSERT(pTLE != NULL);

    // validate vbl have minimum entries
    if (pTLE->VarBindList.len >= MINVARBINDLEN) {

        // point to sysUpTime varbind structure
        pVarBind = &pTLE->VarBindList.list[SYSUPTIMEINDEX];

        // verify variable is sysUpTime
        if ((pVarBind->value.asnType == ASN_TIMETICKS) &&
            !SnmpUtilOidNCmp(&pVarBind->name,
                             &sysUpTime,
                             sysUpTime.idLength)) {

            // transfer sysUpTime value to trap entry
            pTLE->TimeStamp = pVarBind->value.asnValue.ticks;

        } else {

            SNMPDBG((
                SNMP_LOG_ERROR,
                "MGMTAPI: Could not find sysUpTime.\n"
                ));

            goto cleanup; // bail...
        }

        // see if any additional varbinds present
        if (pTLE->VarBindList.len > MINVARBINDLEN) {

            // point to snmpTrapEnterprise varbind structure (maybe)
            pVarBind = &pTLE->VarBindList.list[pTLE->VarBindList.len - 1];

            // verify variable is snmpTrapEnterprise
            if ((pVarBind->value.asnType == ASN_OBJECTIDENTIFIER) &&
                !SnmpUtilOidNCmp(&pVarBind->name,
                                 &snmpTrapEnterprise,
                                 snmpTrapEnterprise.idLength))  {

                // transfer enterprise oid to list entry
                pTLE->EnterpriseOID = pVarBind->value.asnValue.object;

                // store enterprise oid for later
                pEnterpriseOID = &pTLE->EnterpriseOID;

                // modify type to avoid deallocation
                pVarBind->value.asnType = ASN_NULL;

            } else {

                SNMPDBG((
                    SNMP_LOG_TRACE,
                    "MGMTAPI: Could not find snmpTrapEnterprise.\n"
                    ));
            }
        }

        // see if the agent address is present
        if (pTLE->VarBindList.len > MINVARBINDLEN+1) {
            

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产三级精品视频| 国产99久久精品| 欧美亚洲精品一区| 欧美高清激情brazzers| 亚洲精品国产精品乱码不99| 国产91在线观看丝袜| 国产视频一区二区三区在线观看| 韩国成人精品a∨在线观看| 日韩欧美一区二区免费| 麻豆精品在线观看| 欧美电影免费观看高清完整版在线 | 欧美色综合影院| 国产欧美视频在线观看| 国精产品一区一区三区mba视频| 日韩视频在线永久播放| 奇米色一区二区三区四区| 5月丁香婷婷综合| 国产一区二区视频在线播放| 亚洲欧洲精品一区二区三区| 欧美综合亚洲图片综合区| 日韩高清不卡一区二区三区| 国产视频一区不卡| 欧美日本一区二区在线观看| 国产综合久久久久久鬼色 | 亚洲国产岛国毛片在线| 色综合咪咪久久| 久久99久国产精品黄毛片色诱| 中文字幕精品一区二区精品绿巨人 | 久久成人免费网| 亚洲色欲色欲www| 欧美成人aa大片| 在线免费一区三区| 国产老妇另类xxxxx| 亚洲香蕉伊在人在线观| 久久精品综合网| 欧美精品日韩精品| 99在线精品观看| 国产专区综合网| 亚洲6080在线| 亚洲欧美另类图片小说| 精品国产伦理网| 欧美日韩美少妇| 99热在这里有精品免费| 美女视频网站久久| 亚洲与欧洲av电影| 国产精品免费视频网站| 欧美白人最猛性xxxxx69交| 欧美日韩综合在线| 成人精品电影在线观看| 国产在线精品一区二区三区不卡| 亚洲国产一二三| 亚洲视频1区2区| 中文字幕第一区第二区| 久久综合久久综合亚洲| 欧美乱妇15p| 欧洲视频一区二区| 99久久久免费精品国产一区二区| 国产精品一线二线三线精华| 日本不卡中文字幕| 亚洲高清在线精品| 亚洲午夜久久久久| 一区二区欧美精品| 亚洲欧美激情小说另类| 国产精品久久影院| 国产精品福利电影一区二区三区四区| 26uuuu精品一区二区| 欧美一级夜夜爽| 欧美一区二区播放| 在线不卡一区二区| 在线不卡一区二区| 91麻豆精品国产自产在线| 欧美日韩一级片在线观看| 欧美日韩一区在线观看| 欧美系列亚洲系列| 欧美日韩国产高清一区二区| 在线免费观看一区| 欧美日韩国产首页在线观看| 欧美在线视频不卡| 欧美精选在线播放| 日韩视频一区二区三区| 精品国产三级a在线观看| 精品国精品国产| 久久久久国产精品人| 亚洲国产经典视频| 亚洲三级小视频| 亚洲国产综合色| 奇米影视一区二区三区小说| 蜜臀av国产精品久久久久 | 亚洲成人在线观看视频| 亚洲6080在线| 久久精品av麻豆的观看方式| 国产精品亚洲一区二区三区妖精| 国产剧情av麻豆香蕉精品| 国产成人免费视频| 色天使色偷偷av一区二区| 欧美日高清视频| 欧美sm美女调教| 中文字幕永久在线不卡| 一区二区三区精品久久久| 日韩国产欧美三级| 国产河南妇女毛片精品久久久| 91免费看`日韩一区二区| 欧美久久久久久久久| 2024国产精品| 亚洲色图一区二区| 免费在线观看不卡| 岛国精品在线观看| 欧美日韩亚洲综合在线 欧美亚洲特黄一级 | 日本视频免费一区| 成人一区二区三区中文字幕| 在线亚洲精品福利网址导航| 日韩一级片在线观看| 欧美激情中文字幕一区二区| 亚洲图片自拍偷拍| 国产成人综合亚洲网站| 欧美性受xxxx| 国产女同互慰高潮91漫画| 亚洲中国最大av网站| 国内精品第一页| 欧美日韩卡一卡二| 日本一区二区三区四区| 午夜精品久久久久久久久| 国产成人亚洲综合色影视| 欧美午夜一区二区三区免费大片| 久久亚洲一区二区三区四区| 亚洲成人激情社区| 成人精品小蝌蚪| 日韩欧美亚洲国产精品字幕久久久| 17c精品麻豆一区二区免费| 激情综合网最新| 欧美日韩亚洲丝袜制服| 国产精品欧美一级免费| 日韩高清在线电影| 色悠悠亚洲一区二区| 国产三级精品三级| 美女视频黄a大片欧美| 一本久久综合亚洲鲁鲁五月天 | 亚洲男女一区二区三区| 国产美女在线观看一区| 欧美日本国产视频| 亚洲女女做受ⅹxx高潮| 粉嫩av一区二区三区粉嫩| 日韩欧美国产麻豆| 天天综合色天天| 色8久久精品久久久久久蜜| 中文字幕+乱码+中文字幕一区| 久久精品国产亚洲a| 欧美日韩国产色站一区二区三区| 亚洲日韩欧美一区二区在线| 粉嫩av一区二区三区粉嫩| 亚洲精品一区二区三区在线观看 | 在线观看91精品国产入口| 国产精品色一区二区三区| 国产乱码字幕精品高清av| 欧美mv日韩mv| 免费在线看成人av| 欧美精品 日韩| 日av在线不卡| 日韩女优电影在线观看| 免费欧美高清视频| 91麻豆精品国产自产在线观看一区| 亚洲夂夂婷婷色拍ww47| 色老汉av一区二区三区| 一区二区三区成人在线视频| 欧洲一区在线观看| 亚洲国产一区二区三区青草影视| 一本久道久久综合中文字幕 | 亚洲综合一区在线| 欧美亚洲禁片免费| 午夜精品在线视频一区| 欧美丰满高潮xxxx喷水动漫| 午夜成人免费视频| 欧美一区二区在线播放| 老司机午夜精品| 精品卡一卡二卡三卡四在线| 国产综合色精品一区二区三区| 欧美精品一区男女天堂| 国产成人精品一区二区三区四区 | 丝袜诱惑亚洲看片| 日韩一区二区三区电影在线观看 | 最好看的中文字幕久久| 91精品福利视频| 亚洲国产aⅴ成人精品无吗| 91精品国产高清一区二区三区蜜臀| 偷偷要91色婷婷| 日韩精品中文字幕在线不卡尤物| 国内精品久久久久影院薰衣草 | 亚洲影视在线播放| 欧美一区二区三区在线| 国产精品综合在线视频| 国产精品国产三级国产专播品爱网| 91色乱码一区二区三区| 天涯成人国产亚洲精品一区av| 日韩欧美www| 成人av第一页| 亚洲高清一区二区三区| 精品国产伦一区二区三区免费| 成人黄色在线看| 日韩综合在线视频| 欧美高清在线一区|