|
@@ -37,7 +37,7 @@ static char* snmp_getx(int version, char *community, char *ip, char *oid_str, in
|
|
|
{
|
|
{
|
|
|
int count;
|
|
int count;
|
|
|
oid name[MAX_OID_LEN];
|
|
oid name[MAX_OID_LEN];
|
|
|
- size_t name_length=MAX_OID_LEN;
|
|
|
|
|
|
|
+ size_t namelen=MAX_OID_LEN;
|
|
|
int status;
|
|
int status;
|
|
|
netsnmp_pdu *pdu=NULL;
|
|
netsnmp_pdu *pdu=NULL;
|
|
|
netsnmp_pdu *rsp=NULL;
|
|
netsnmp_pdu *rsp=NULL;
|
|
@@ -57,6 +57,12 @@ static char* snmp_getx(int version, char *community, char *ip, char *oid_str, in
|
|
|
return NULL;
|
|
return NULL;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+ oid *poid = snmp_parse_oid(oid_str, name, &namelen);
|
|
|
|
|
+ if(poid==NULL) {
|
|
|
|
|
+ LOGE("___snmp_parse_oid failed\n");
|
|
|
|
|
+ return NULL;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
pdu = snmp_pdu_create(msgtype);
|
|
pdu = snmp_pdu_create(msgtype);
|
|
|
if(!pdu) {
|
|
if(!pdu) {
|
|
|
LOGE("___snmp_pdu_create failed\n");
|
|
LOGE("___snmp_pdu_create failed\n");
|
|
@@ -66,52 +72,37 @@ static char* snmp_getx(int version, char *community, char *ip, char *oid_str, in
|
|
|
if(msgtype==SNMP_MSG_GETBULK) {
|
|
if(msgtype==SNMP_MSG_GETBULK) {
|
|
|
pdu->errstat = 0;//non_repeaters;
|
|
pdu->errstat = 0;//non_repeaters;
|
|
|
pdu->errindex = 10;//max_repetitions;
|
|
pdu->errindex = 10;//max_repetitions;
|
|
|
- snmp_add_null_var(pdu, name, name_length);
|
|
|
|
|
- }
|
|
|
|
|
- else {
|
|
|
|
|
- if (!snmp_parse_oid(oid_str, name, &name_length)) {
|
|
|
|
|
- //failures++;
|
|
|
|
|
- }
|
|
|
|
|
- else {
|
|
|
|
|
- snmp_add_null_var(pdu, name, name_length);
|
|
|
|
|
- }
|
|
|
|
|
}
|
|
}
|
|
|
|
|
+ snmp_add_null_var(pdu, name, namelen);
|
|
|
|
|
|
|
|
retry:
|
|
retry:
|
|
|
status = snmp_synch_response(ss, pdu, &rsp);
|
|
status = snmp_synch_response(ss, pdu, &rsp);
|
|
|
if (status == STAT_SUCCESS) {
|
|
if (status == STAT_SUCCESS) {
|
|
|
if (rsp->errstat == SNMP_ERR_NOERROR) {
|
|
if (rsp->errstat == SNMP_ERR_NOERROR) {
|
|
|
- for (vars = rsp->variables; vars;
|
|
|
|
|
- vars = vars->next_variable)
|
|
|
|
|
|
|
+ for (vars = rsp->variables; vars; vars = vars->next_variable) {
|
|
|
print_variable(vars->name, vars->name_length, vars);
|
|
print_variable(vars->name, vars->name_length, vars);
|
|
|
-
|
|
|
|
|
|
|
+ }
|
|
|
} else {
|
|
} else {
|
|
|
- LOGE("Error in packet, Reason: %s\n", snmp_errstring(rsp->errstat));
|
|
|
|
|
-
|
|
|
|
|
|
|
+ LOGE("___error in packet, reason: %s\n", snmp_errstring(rsp->errstat));
|
|
|
if (rsp->errindex != 0) {
|
|
if (rsp->errindex != 0) {
|
|
|
- fprintf(stderr, "Failed object: ");
|
|
|
|
|
- for (count = 1, vars = rsp->variables;
|
|
|
|
|
- vars && count != rsp->errindex;
|
|
|
|
|
- vars = vars->next_variable, count++)
|
|
|
|
|
-
|
|
|
|
|
- if (vars) {
|
|
|
|
|
- fprint_objid(stderr, vars->name, vars->name_length);
|
|
|
|
|
- }
|
|
|
|
|
|
|
+ fprintf(stderr, "failed object: ");
|
|
|
|
|
+ for (count = 1, vars = rsp->variables; vars && count != rsp->errindex; vars = vars->next_variable, count++) {
|
|
|
|
|
+ if (vars) {
|
|
|
|
|
+ fprint_objid(stderr, vars->name, vars->name_length);
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
fprintf(stderr, "\n");
|
|
fprintf(stderr, "\n");
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
//retry if the errored variable was successfully removed
|
|
//retry if the errored variable was successfully removed
|
|
|
- if (!netsnmp_ds_get_boolean(NETSNMP_DS_APPLICATION_ID,
|
|
|
|
|
- NETSNMP_DS_APP_DONT_FIX_PDUS)) {
|
|
|
|
|
|
|
+ if (!netsnmp_ds_get_boolean(NETSNMP_DS_APPLICATION_ID, NETSNMP_DS_APP_DONT_FIX_PDUS)) {
|
|
|
pdu = snmp_fix_pdu(rsp, SNMP_MSG_GET);
|
|
pdu = snmp_fix_pdu(rsp, SNMP_MSG_GET);
|
|
|
- snmp_free_pdu(rsp);
|
|
|
|
|
- rsp = NULL;
|
|
|
|
|
|
|
+ snmp_free_pdu(rsp); rsp = NULL;
|
|
|
if (pdu != NULL) {
|
|
if (pdu != NULL) {
|
|
|
goto retry;
|
|
goto retry;
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
-
|
|
|
|
|
} else if (status == STAT_TIMEOUT) {
|
|
} else if (status == STAT_TIMEOUT) {
|
|
|
LOGE("Timeout: No Response from %s.\n", session.peername);
|
|
LOGE("Timeout: No Response from %s.\n", session.peername);
|
|
|
} else { /* status == STAT_ERROR */
|
|
} else { /* status == STAT_ERROR */
|
|
@@ -165,8 +156,8 @@ typedef struct {
|
|
|
int snmp_nms_test(void)
|
|
int snmp_nms_test(void)
|
|
|
{
|
|
{
|
|
|
int i,j;
|
|
int i,j;
|
|
|
- char *ipAddr=".1.3.6.1.2.1.4.22.1.3.0";
|
|
|
|
|
- char *phyAddr=".1.3.6.1.2.1.4.22.1.2.0";
|
|
|
|
|
|
|
+ char *ipAddr="1.3.6.1.2.1.17.4.3.1.0";
|
|
|
|
|
+ char *phyAddr="1.3.6.1.2.1.4.22.0";
|
|
|
char *icmp="1.3.6.1.2.1.5";
|
|
char *icmp="1.3.6.1.2.1.5";
|
|
|
char temp[100];
|
|
char temp[100];
|
|
|
|
|
|
|
@@ -179,8 +170,46 @@ int snmp_nms_test(void)
|
|
|
}
|
|
}
|
|
|
#endif
|
|
#endif
|
|
|
|
|
|
|
|
- snmp_get(SNMP_VERSION_1, "public", "192.168.0.1", ipAddr);
|
|
|
|
|
- snmp_get(SNMP_VERSION_1, "public", "192.168.0.1", phyAddr);
|
|
|
|
|
|
|
+ //snmp_getnext(SNMP_VERSION_2c, "public", "192.168.0.1", ipAddr);
|
|
|
|
|
+ //snmp_getnext(SNMP_VERSION_2c, "public", "192.168.0.1", phyAddr);
|
|
|
|
|
+
|
|
|
|
|
+/*
|
|
|
|
|
+ public
|
|
|
|
|
+ BRIDGE-MIB
|
|
|
|
|
+ dot1dTpFdbEntry: 1.3.6.1.2.1.17.4.3.1
|
|
|
|
|
+ 1: dot1dTpFdbAddress - MacAddress(4 - octets)
|
|
|
|
|
+ 2: dot1dTpFdbPort - Integer32(2 - int, int32)
|
|
|
|
|
+ 3: dot1dTpFdbStatus - INTEGER(2 - int, int32)
|
|
|
|
|
+
|
|
|
|
|
+ private
|
|
|
|
|
+ tplink-ipAddr.mib
|
|
|
|
|
+
|
|
|
|
|
+ public
|
|
|
|
|
+ RFC1213-MIB
|
|
|
|
|
+ ipNetToMediaEntry: 1.3.6.1.2.1.4.22.1
|
|
|
|
|
+ 1: ipNetToMediaIfIndex - INTEGER(2 - integer (32 bit))
|
|
|
|
|
+ 2: ipNetToMediaPhysAddress - PhysAddress(4 - octets)
|
|
|
|
|
+ 3: ipNetToMediaNetAddress - IpAddress(64 - IP address)
|
|
|
|
|
+ 4: ipNetToMediaType - INTEGER(2 - integer (32 bit))
|
|
|
|
|
+
|
|
|
|
|
+ ipAddrEntry: 1.3.6.1.2.1.4.20.1 //host ipaddr
|
|
|
|
|
+ 1: ipAdEntAddr - IpAddress(64 - IP address)
|
|
|
|
|
+ 2: ipAdEntIfIndex - INTEGER(2 - integer (32 bit))
|
|
|
|
|
+ 3: ipAdEntNetMask - IpAddress(64 - IP address)
|
|
|
|
|
+ 4: ipAdEntBcastAddr - INTEGER(2 - integer (32 bit))
|
|
|
|
|
+ 5: ipAdEntReasmMaxSize - INTEGER(2 - integer (32 bit))
|
|
|
|
|
+
|
|
|
|
|
+ ifEntry: 1.3.6.1.2.1.2.2.1
|
|
|
|
|
+ 1: ifIndex - INTEGER(2 - integer (32 bit))
|
|
|
|
|
+ 6: ifPhysAddress - PhysAddress(4 - octets)
|
|
|
|
|
+ 8: ifOperStatus - INTEGER(2 - integer (32 bit))
|
|
|
|
|
+*/
|
|
|
|
|
+
|
|
|
|
|
+ //snmp_getbulk(SNMP_VERSION_2c, "public", "192.168.0.1", "1.3.6.1.2.1.4.22.1");
|
|
|
|
|
+ //snmp_getbulk(SNMP_VERSION_2c, "public", "192.168.0.1", "1.3.6.1.2.1.4.20.1");
|
|
|
|
|
+
|
|
|
|
|
+ //LOGD("++++++++++++++++\n");
|
|
|
|
|
+ snmp_getbulk(SNMP_VERSION_2c, "public", "192.168.0.1", "1.3.6.1.2.1.17.4");
|
|
|
|
|
|
|
|
SOCK_CLEANUP;
|
|
SOCK_CLEANUP;
|
|
|
exit(0);
|
|
exit(0);
|