snmp_sess_init,   snmp_open,   snmp_send,   snmp_free_pdu,
       snmp_select_info,  snmp_read,  snmp_timeout,   snmp_close,
       snmp_perror,         snmp_sess_perror,         snmp_error,
       snmp_api_errstring - send and receive SNMP messages


SYNOPSIS

       #include <sys/types>
       #include <netinet/in.h>
       #include <sys/time.h>
       #include <netdb.h>
       #include <ucd-snmp/asn1.h>
       #include <ucd-snmp/snmp.h>
       #include <ucd-snmp/snmp_api.h>

       void snmp_sess_init ( struct snmp_session * );

       struct snmp_session * snmp_open ( struct snmp_session *);
              /* Input parameter not used in active sessions */

       int snmp_send ( struct snmp_session *session,
              struct snmp_pdu *pdu );

       int snmp_select_info ( int *numfds, fd_set *fdset,
              struct timeval *timeout, int *block );

       void snmp_read ( fd_set *fdset );

       void snmp_timeout ( void );

       int snmp_close ( struct snmp_session *session );

       void snmp_free_pdu ( struct snmp_pdu *pdu );

       void snmp_error ( struct snmp_session *session,
              int *pcliberr, int *psnmperr, char **pperrstring );

       char *snmp_api_errstring ( int snmperr );

       void snmp_perror ( char * msg );
              /* for parsing errors only */

       void snmp_sess_perror (char * msg, struct snmp_session *);
              /* all other SNMP library errors */


DESCRIPTION

       Snmp_sess_init prepares a struct snmp_session that sources
       transport characteristics and common information that will
       be used for a set of SNMP transactions.  After this struc­
       ture is passed to snmp_open to create an SNMP session, the
       structure is not used.

       Snmp_open returns  a  pointer  to  a  newly-formed  struct

       reference the active SNMP session.

       Snmp_send and snmp_free_pdu each take as input  a  pointer
       to  a  struct  snmp_pdu  object.   This structure contains
       information that describes a transaction that will be per­
       formed over an open session.

       Consult  snmp_api.h  for  the  definitions of these struc­
       tures.

       Snmp_read, snmp_select_info, and snmp_timeout  provide  an
       interface for the use of the select(2) system call so that
       SNMP transactions can occur asynchronously.

       Snmp_select_info is given the information that would  have
       been  passed  to select in the absence of SNMP.  For exam­
       ple, this might include window update  information.   This
       information  is modified so that SNMP will get the service
       it requires from  the  call  to  select.   In  this  case,
       numfds,   fdset,  and  timeout  correspond  to  the  nfds,
       readfds, and timeout arguments  to  select,  respectively.
       The only exception is that timeout must always point to an
       allocated (but perhaps uninitialized) struct timeval.   If
       timeout  would  have  been passed as NULL, block is set to
       true, and timeout is treated as undefined.  This same rule
       applies upon return from snmp_select_info.

       After  calling snmp_select_info, select is called with the
       returned data.  When select returns, snmp_read  should  be
       called  with  the fd_set returned from select to read each
       SNMP  socket  that  has  input.   If  select  times   out,
       snmp_timeout  should  be  called to see if the timeout was
       intended for SNMP.


DIAGNOSTICS

       Previous versions of the library  used  snmp_get_errno  to
       read  the  global  variable snmp_errno which may have held
       the error status within the SNMP  library.   The  existing
       method  snmp_perror  should  be  used  to log ASN.1 coding
       errors only.

       The new method snmp_sess_perror  is  provided  to  capture
       errors  that  occur  during the processing of a particular
       SNMP session.  Snmp_sess_perror calls snmp_error  function
       to  obtain  the "C" library error errno , the SNMP library
       error snmperr , and the SNMP library detailed  error  mes­
       sage that is associated with an error that occurred during
       a given session.

       Note that in all cases except one, snmp_sess_perror should
       be  handed the struct snmp_session * pointer returned from
       snmp_open.  If snmp_open returns a null pointer, pass  the
       INPUT   struct   snmp_session   *  pointer  used  to  call


       Error return status from snmp_close and snmp_send is indi­
       cated by return of 0.  A successful status will return a 1
       for snmp_close and then  request  id  of  the  packet  for
       snmp_send.   Upon successful return from snmp_send the pdu
       will be freed by the library.

       Consult snmp_api.h for the complete set  of  SNMP  library
       error values.  The SNMP library error value snmperr can be
       one of the following values:

         SNMPERR_GENERR           A generic error occurred.

         SNMPERR_BAD_LOCPORT      The local port was bad  because
                                  it  had  already been allocated
                                  or permission was denied.

         SNMPERR_BAD_ADDRESS      The host name or address  given
                                  was not useable.

         SNMPERR_BAD_SESSION      The  specified  session was not
                                  open.

         SNMPERR_TOO_LONG

         SNMPERR_NO_SOCKET

         SNMPERR_V2_IN_V1

         SNMPERR_V1_IN_V2

         SNMPERR_BAD_REPEATERS

         SNMPERR_BAD_REPETITIONS

         SNMPERR_BAD_ASN1_BUILD

         SNMPERR_BAD_SENDTO

         SNMPERR_BAD_PARSE

         SNMPERR_BAD_VERSION

         SNMPERR_NOAUTH_DESPRIV

         SNMPERR_ABORT

         SNMPERR_UNKNOWN_PDU

         SNMPERR_TIMEOUT

       A string representation of the error code can be  obtained
       with  snmp_api_errstring, and a standard error message may

       ror standard routine.


SEE ALSO

       select(2), snmp_api.h


Man(1) output converted with man2html