⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 cmu_compat.c

📁 snmp up 2
💻 C
字号:
#ifdef CMU_COMPATIBLE#include <net-snmp/mib_api.h>#include <net-snmp/pdu_api.h>#include <net-snmp/session_api.h>intmib_TxtToOid(char *Buf, oid ** OidP, size_t * LenP){    return read_objid(Buf, *OidP, LenP);}intmib_OidToTxt(oid * O, size_t OidLen, char *Buf, size_t BufLen){    _sprint_objid(Buf, O, OidLen);    return 1;}char           *snmp_pdu_type(netsnmp_pdu *PDU){    switch (PDU->command) {    case SNMP_MSG_GET:        return ("GET");        break;    case SNMP_MSG_GETNEXT:        return ("GETNEXT");        break;    case SNMP_MSG_RESPONSE:        return ("RESPONSE");        break;    case SNMP_MSG_SET:        return ("SET");        break;    case SNMP_MSG_GETBULK:        return ("GETBULK");        break;    case SNMP_MSG_INFORM:        return ("INFORM");        break;    case SNMP_MSG_TRAP2:        return ("V2TRAP");        break;    case SNMP_MSG_REPORT:        return ("REPORT");        break;    case SNMP_MSG_TRAP:        return ("V1TRAP");        break;    default:        return ("Unknown");        break;    }}/* * cmu_snmp_parse - emulate CMU library's snmp_parse. * * Parse packet, storing results into PDU. * Returns community string if success, NULL if fail. * WARNING: may return a zero length community string. * * Note: * Some CMU-aware apps call init_mib(), but do not * initialize a session. * Check Reqid to make sure that this module is initialized. */u_char         *cmu_snmp_parse(netsnmp_session * session,               netsnmp_pdu *pdu, u_char * data, size_t length){    u_char         *bufp = NULL;    snmp_sess_init(session);    /* gimme a break! */    switch (pdu->version) {    case SNMP_VERSION_1:    case SNMP_VERSION_2c:    case SNMP_DEFAULT_VERSION:        break;    default:        return NULL;    }#ifndef NO_INTERNAL_VARLIST    if (snmp_parse(0, session, pdu, data, length) != SNMP_ERR_NOERROR) {        return NULL;    }#else    /*     * while there are two versions of variable_list:     * use an internal variable list for snmp_parse;     * clone the result.     */    if (1) {        netsnmp_pdu    *snmp_clone_pdu(netsnmp_pdu *);        netsnmp_pdu    *snmp_2clone_pdu(netsnmp_pdu *from_pdu,                                        netsnmp_pdu *to_pdu);        netsnmp_pdu    *ipdu;        ipdu = snmp_clone_pdu(pdu);        if (snmp_parse(0, session, ipdu, data, length) != SNMP_ERR_NOERROR) {            snmp_free_internal_pdu(ipdu);            return NULL;        }        pdu = snmp_2clone_pdu(ipdu, pdu);        snmp_free_internal_pdu(ipdu);    }#endif                          /* NO_INTERNAL_VAR_LIST */    /*     * Add a null to meet the caller's expectations.      */    bufp = (u_char *) malloc(1 + pdu->community_len);    if (bufp && pdu->community_len) {        memcpy(bufp, pdu->community, pdu->community_len);        bufp[pdu->community_len] = '\0';    }    return (bufp);}#endif                          /* CMU_COMPATIBLE */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -