SNMP Manager Programmer's Guide

Programming Examples
SNMP Manager Programmer’s Guide–134249
2-53
SNMPGT
cbAsn1Len = cbTransferred;
rcvAsn1Pdu = (unsigned char*) nowaitBuf;
rcvAsn1Pdu = &nowaitBuf[sizeof(struct sockaddr_in)];
cbAsn1Len -= sizeof(struct sockaddr_in);
rcvd_pkt = SNMP_Decode_Packet_WER(rcvAsn1Pdu, cbAsn1Len, <-- 30
(SNMPADDR_T*) 0, (SNMPADDR_T*) 0, &nDecodeErrorCode);
if (rcvd_pkt == (SNMP_PKT_T *)0 || nDecodeErrorCode != 0)
{
SNMP_Free(rcvd_pkt);
fprintf(stderr, "%s: Error decoding packet\n", whoami);
exit(0);
}
/* requestid received in the response packet is checked to see
* it lies in the range of ids when firstid is greater than
* current requestid
*/
if (firstid > requestid)
{
if ((rcvd_pkt->pdu.std_pdu.request_id >= firstid && <-- 31
rcvd_pkt->pdu.std_pdu.request_id <= MAX_REQID_VALUE)
|| (rcvd_pkt->pdu.std_pdu.request_id >= 1 &&
rcvd_pkt->pdu.std_pdu.request_id <= requestid))
goto gotit;
}
else
{
if (rcvd_pkt->pdu.std_pdu.request_id >= firstid &&
rcvd_pkt->pdu.std_pdu.request_id <= requestid)
goto gotit;
}
} /* for (j = 0; j <= retrycnt; j++) */
fprintf(stderr, "No response from host\n");
exit(0);
gotit:
SNMP_Free(send_pkt); <-- 32
printf("\nRECEIVED PACKET:\n"); <-- 33
print_pkt(rcvd_pkt); <-- 34
printf("\n");
SNMP_Free(rcvd_pkt);
EBufferClean(&ebuff);
return 0;
} /* main */
Example 2-4. Contents of snmpgtc (page 8 of 8)