.TH NETSNMP_VARBIND_API 3 "13 Aug 2010" VVERSIONINFO "Net-SNMP"
.SH NAME
snmp_pdu_add_variable,
snmp_varlist_add_variable,
snmp_add_null_var,
snmp_clone_varbind,
snmp_set_var_objid,
snmp_set_var_value,
snmp_set_var_typed_value,
snmp_set_var_typed_integer,
print_variable,
fprint_variable,
snprint_variable,
print_value,
fprint_value,
snprint_value,
snmp_free_var,
snmp_free_varbind - netsnmp_varbind_api functions
.SH SYNOPSIS
.B #include <net-snmp/varbind_api.h>
.SS Creation
.PP
.B "netsnmp_variable_list *snmp_pdu_add_variable("
.br
.BI "                     netsnmp_pdu *" pdu ","
.br
.BI "                     const oid *" objid ", size_t " objidlen ","
.br
.BI "                     u_char " type ", const void *" value ", size_t " len ");"
.br
.B "netsnmp_variable_list *snmp_varlist_add_variable("
.br
.BI "                     netsnmp_variable_list *" varlist ","
.br
.BI "                     const oid *" objid ", size_t " objidlen ","
.br
.BI "                     u_char " type ", const void *" value ", size_t " len ");"
.br
.B "netsnmp_variable_list *snmp_add_null_var("
.br
.BI "                     netsnmp_pdu *" pdu ","
.br
.BI "                     const oid *" objid ", size_t " objidlen ");"
.PP
.B "netsnmp_variable_list *snmp_clone_varbind("
.br
.BI "                     netsnmp_variable_list *" varlist ");"
.SS Setting Values
.PP
.BI "int  snmp_set_var_objid( netsnmp_variable_list* " variable ","
.br
.BI "                     const oid * " objid ", size_t " objidlen ");"
.br
.BI "int  snmp_set_var_value( netsnmp_variable_list* " variable ","
.br
.BI "                     const void * " value ", size_t " vallen ");"
.br
.BI "int  snmp_set_var_typed_value( netsnmp_variable_list* " variable ","
.br
.BI "                     u_char " type ","
.br
.BI "                     const void * " value ", size_t " vallen ");"
.br
.BI "int  snmp_set_var_typed_integer( netsnmp_variable_list* " variable ","
.br
.BI "                     u_char " type ", long " value ");"
.br
.SS Output
.PP
.BI "void  print_variable(const oid *" "objid" ", size_t " "objidlen" ","
.br
.BI "                     const netsnmp_variable_list *" variable ");"
.br
.BI "void fprint_variable(FILE *" fp ","
.br
.BI "                     const oid *" objid ", size_t " objidlen ","
.br
.BI "                     const netsnmp_variable_list *" variable ");"
.br
.BI "int snprint_variable(char *" "buf" ", size_t " "len" ","
.br
.BI "                     const oid *" objid ", size_t " objidlen ","
.br
.BI "                     const netsnmp_variable_list *" variable ");"
.PP
.BI "void  print_value(const oid *" objid ", size_t " objidlen ","
.br
.BI "                     const netsnmp_variable_list *" variable ");"
.br
.BI "void fprint_value(FILE *" fp ","
.br
.BI "                     const oid *" objid ", size_t " objidlen ","
.br
.BI "                     const netsnmp_variable_list *" variable ");"
.br
.BI "int snprint_value(char *" buf ", size_t " "len" ","
.br
.BI "                     const oid *" objid ", size_t " objidlen ","
.br
.BI "                     const netsnmp_variable_list *" variable ");"
.br
.br
.SS Deletion
.PP
.BI "void snmp_free_var(       netsnmp_variable_list *" variable ");"
.br
.BI "void snmp_free_varbind( netsnmp_variable_list *" variables ");"
.br
.PP
.SH DESCRIPTION
The functions dealing with variable bindings fall into four groups - 
dealing with the creation, setting of values, output and deletion of varbinds.
.SS Creation
.B snmp_pdu_add_variable
will create a new varbind structure, initialised with the name (
.IR objid ", " objidlen
), syntax (
.I type
) and value (
.I value ", " len
) provided.
This varbind is then added to the end of the varbind list in
the given PDU.
.PP
.B snmp_varlist_add_variable
is similar, but appends the new varbind to the end of the
varbind list provided.
When adding the first varbind to an empty list, simply
pass the address of the head of the list:
.IP
  netsnmp_variable_list *vl = NULL;
  snmp_varlist_add_variable(
            &vl, name1, name1_len,
            ASN_\fITYPE\fP, &val1, val1_len);
  snmp_varlist_add_variable(
            &vl, name2, name2_len,
            ASN_\fITYPE\fP, &val2, val2_len);
.PP
In both cases, the routine will return a pointer to the new
varbind structure (or NULL if the varbind creation fails).
.PP
.B snmp_add_null_var
is a convenience function to add an empty varbind to the PDU.
without needing to specify the NULL value explicitly.
This is the normal mechanism for constructing a GET (or similar)
information retrieval request.
.br
Again, this returns a pointer to the new varbind, or NULL.
.PP
.B snmp_clone_varbind
creates a copy of each varbind in the specified list,
returning a pointer to the head of the new list
(or NULL if the cloning fails).
.br
.SS Setting of values
.B snmp_set_var_objid
sets the name of the varbind structure to the specified OID.
.br
.B snmp_set_var_typed_value
sets the syntax type and value of the varbind structure.
.br
.B snmp_set_var_value
sets the value of the varbind structure, leaving the syntax type unchanged.
.br
.B snmp_set_var_typed_integer
is a convenience function to set the syntax type and value for
a 32-bit integer-based varbind.
.PP
All four of these return 0 if the assignment is successful,
or 1 if it is not.
.SS Output
.B print_variable
will take an object identifier (as returned by
.BR read_objid ", " snmp_parse_oid " or " get_module_node )
and an instance of such a variable, and prints to the standard output
the textual form of the object identifier together with the value
of the variable.
.PP
.B fprint_variable
does the same, but prints to the FILE pointer specified by the initial
parameter.
.PP
.B snprint_variable
prints the same information into the buffer pointed to by
.I buf
which is of length
.IR len .
It returns the number of characters printed, or -1 if the
buffer was not large enough.  In the latter case,
.I buf
will typically contained a truncated version of the information (but
this behaviour is not guaranteed).  This function replaces the
obsolete function
.BR sprint_variable .
.PP
.BR print_value ,
.BR fprint_value ,
and
.B snprint_value
do the same as the equivalent
.B print_variable
routines, but only displaying the value of the variable, without the
corresponding object identifier.
.PP
For displaying the OID of a varbind, see \fBnetsnmp_mib_api\fP(3).
.br
.SS Deletion
.B snmp_free_var
releases all memory used by the given varbind structure.
.br
.B snmp_free_varbind
releases all memory used by each varbind structure in the varbind list provided.
.br
.SH "SEE ALSO"
.BR netsnmp_pdu_api "(3)"
.BR netsnmp_mib_api "(3)"
