00001 #include <net-snmp/net-snmp-config.h>
00002
00003 #ifdef CMU_COMPATIBLE
00004
00005 #include <net-snmp/mib_api.h>
00006 #include <net-snmp/pdu_api.h>
00007 #include <net-snmp/session_api.h>
00008
00009 int
00010 mib_TxtToOid(char *Buf, oid ** OidP, size_t * LenP)
00011 {
00012 return read_objid(Buf, *OidP, LenP);
00013 }
00014
00015 int
00016 mib_OidToTxt(oid * O, size_t OidLen, char *Buf, size_t BufLen)
00017 {
00018 _sprint_objid(Buf, O, OidLen);
00019 return 1;
00020 }
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036 u_char *
00037 cmu_snmp_parse(netsnmp_session * session,
00038 netsnmp_pdu *pdu, u_char * data, size_t length)
00039 {
00040 u_char *bufp = NULL;
00041
00042 snmp_sess_init(session);
00043
00044 switch (pdu->version) {
00045 case SNMP_VERSION_1:
00046 case SNMP_VERSION_2c:
00047 case SNMP_DEFAULT_VERSION:
00048 break;
00049 default:
00050 return NULL;
00051 }
00052 #ifndef NO_INTERNAL_VARLIST
00053 if (snmp_parse(0, session, pdu, data, length) != SNMP_ERR_NOERROR) {
00054 return NULL;
00055 }
00056 #else
00057
00058
00059
00060
00061
00062 if (1) {
00063 netsnmp_pdu *snmp_clone_pdu(netsnmp_pdu *);
00064 netsnmp_pdu *snmp_2clone_pdu(netsnmp_pdu *from_pdu,
00065 netsnmp_pdu *to_pdu);
00066
00067 netsnmp_pdu *ipdu;
00068 ipdu = snmp_clone_pdu(pdu);
00069 if (snmp_parse(0, session, ipdu, data, length) != SNMP_ERR_NOERROR) {
00070 snmp_free_internal_pdu(ipdu);
00071 return NULL;
00072 }
00073 pdu = snmp_2clone_pdu(ipdu, pdu);
00074 snmp_free_internal_pdu(ipdu);
00075 }
00076 #endif
00077
00078
00079
00080
00081
00082 bufp = (u_char *) malloc(1 + pdu->community_len);
00083 if (bufp && pdu->community_len) {
00084 memcpy(bufp, pdu->community, pdu->community_len);
00085 bufp[pdu->community_len] = '\0';
00086 }
00087 return (bufp);
00088 }
00089
00090
00091 #endif