SNMP Manager Programmer's Guide
Constructing and Interpreting Packets
SNMP Manager Programmer’s Guide–134249
5-19
SNMP_Bind_Integer()
several variables in the main block; the Manager Services define MAX_OID_COUNT is 
used to set the number of elements in the OID component array and the component 
count variable to 32. The variable named longform indicates that the invocation line 
specifies MIB objects that are not defined in MIB-II; Manager Services has an internal 
table it can use to find the data type of MIB-II objects:
#define MAXOIDS 16
OIDC_T base_component_list[MAX_OID_COUNT];
OBJ_ID_T base_oid = { MAX_OID_COUNT, base_component_list };
...
int longform = 0;
int mibtype = 0;
int oidcnt;
char *oidstr[MAXOIDS];
struct namerec *p;
SNMP_PKT_T *send_pkt;
char *typestr[MAXOIDS];
char *valstr[MAXOIDS];
A for loop extracts instance identifiers from the invocation line arguments, stores any 
data type entered in typestr, and stores the value entered in valstr:
for (i = 0; argc > 0; i++)
{
...
 oidstr[i] = *argv++; argc--;
 if (longform)
 {
 typestr[i] = *argv++; argc--;
 }
 valstr[i] = *argv++; argc--;
}
oidcnt = i;
After the request packet is initialized into send_pkt, a for loop is used to assign 
variable bindings to it. For objects that are not members of MIB-II, the common utility 
function str_to_type() is used to validate whether the type specified at invocation is a 
valid SNMP data type and converts it to the Manager Services representation for it. For 
MIB-II objects, the common utility function oid_to_namerec() is used to obtain the 
Manager Services representation of the data type:
for (i = 0; i < oidcnt; i++)
{
 peertype = longform ? str_to_type(typestr[i]) : 0;
 if ((p = oid_to_namerec(&base_oid)) != 0)
 mibtype = p->type;
 else
 mibtype = 0;
 peertype = peertype ? peertype : mibtype;










