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)










