SNMP Manager Programmer's Guide
Programming Examples
SNMP Manager Programmer’s Guide–134249
2-136
SNMPHOST Source Code
/* pick up the last digit of the hrDeviceType field */
pCurrOutputEntry->nDeviceType =
objp->component_list[objp->num_components-1];
vbp = &pkt->pdu.std_pdu.std_vbl.vblist[2]; <--30
if (vbp->vb_data_flags_n_type != VT_STRING) {
printf ("Unexpected error (varbind[2] not OCTET STRING)\n");
exit(0);
}
pCurrOutputEntry->nDevDescrLen = EBufferUsed(&(vbp->value_u.v_string));
pCurrOutputEntry->pDevDescr = malloc(pCurrOutputEntry->nDevDescrLen + 1);
memcpy (pCurrOutputEntry->pDevDescr,
vbp->value_u.v_string.start_bp,
pCurrOutputEntry->nDevDescrLen);
pCurrOutputEntry->pDevDescr[pCurrOutputEntry->nDevDescrLen] = '\0';
vbp = &pkt->pdu.std_pdu.std_vbl.vblist[3]; <--31
if (vbp->vb_data_flags_n_type != VT_NUMBER) {
printf ("Unexpected error (varbind[3] not NUMBER)\n");
exit(0);
}
pCurrOutputEntry->nDeviceStatus = vbp->value_u.v_number;
/* get the augmented tables (processor, printer, disk) */
if (GetAuxDeviceTbl (host_int, pCurrOutputEntry, <--32
community, retrycnt, requestid) != 0)
exit(0);
/* increase the output table index */
++nCurrDevIndex; <--33
if (nCurrDevIndex >= devcnt)
break;
/* Reset the start pointer of the hrDeviceDescr (an OCTET STRING */
vbp = &pkt->pdu.std_pdu.std_vbl.vblist[2]; <--34
if (vbp->value_u.v_string.start_bp != (OCTET_T *)0)
EBufferClean(&(vbp->value_u.v_string));
vbp->vb_data_flags_n_type = VT_EMPTY;
Example 2-18. Contents of snmphosc (page 11 of 23)