Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
NETSNMP_SESS_API(3)		    Net-SNMP		     NETSNMP_SESS_API(3)

NAME
     snmp_sess_init,	snmp_sess_open,    snmp_sess_session,	 snmp_sess_send,
     snmp_sess_async_send,	  snmp_sess_select_info,	 snmp_sess_read,
     snmp_sess_timeout, snmp_sess_synch_response, snmp_sess_close, snmp_sess_er-
     ror - session functions

SYNOPSIS
     #include <net-snmp/session_api.h>

     void snmp_sess_init(struct snmp_session *session);

     void *snmp_sess_open(struct snmp_session *session);

     struct snmp_session *snmp_sess_session(void *handle);

     int snmp_sess_send(void *handle, struct snmp_pdu *pdu);

     int snmp_sess_async_send(void *handle,
			      struct snmp_pdu *pdu,
			      snmp_callback callback,
			      void *callbackData);

     int snmp_sess_select_info(void *handle,
			       int *numfds, fd_set *fdset,
			       struct timeval *timeout,
			       int *block);

     int snmp_sess_read(void *handle, fd_set *fdset);

     void snmp_sess_timeout(void *handle);

     int snmp_sess_synch_response ( void *handle,
	    netsnmp_pdu *pdu,
	    netsnmp_pdu **response);

     int snmp_sess_close(void *handle);

     void snmp_sess_error(void *handle, int *pcliberr,
			 int *psnmperr, char **pperrstring);

DESCRIPTION
     These  functions define a subset of the API that can be used to manage sin-
     gle  SNMP	sessions  in   a   multi-threaded   application.    Except   for
     snmp_sess_session(),  these  functions  are  single session versions of the
     traditional SNMP library API.

     Note that these functions use an opaque pointer (handle in the above proto-
     types) to identify a single session in lieu of a session pointer (as in the
     traditional API).

     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 structure is passed to snmp_sess_open() to create
     an SNMP session, the structure is	no  longer  used.   Instead  the  opaque
     pointer  returned	by  snmp_sess_open()  is  used	to refer to that session
     henceforth.

     SNMP sessions that are created with snmp_sess_open() are not  affected  by,
     and  SHOULD  NOT  BE USED WITH, snmp_select_info(), snmp_read(), snmp_time-
     out() nor snmp_close().  Rather the equivalent single session functions de-
     scribed here should be used.

     snmp_sess_init() and snmp_sess_open() each take as input  a  pointer  to  a
     struct  snmp_session object.  This structure contains information for a set
     of  transactions  that  will  share  similar   transport	characteristics.
     snmp_sess_session()  takes  the opaque session handle and returns a pointer
     to its associated struct snmp_session.

     snmp_sess_send() and snmp_sess_async_send()  each	take  a  pdu  parameter,
     which  points  to	a struct snmp_pdu object containing information that de-
     scribes a transaction that will be performed over an open session.

     Consult snmp_api.h for the definitions of these structures.

     With the snmp_sess_async_send() call, snmp_sess_read will invoke the speci-
     fied callback when the response is received.

     snmp_sess_select_info(), snmp_sess_read() and  snmp_sess_timeout()  provide
     an interface for the use of the select(2) system call so that SNMP transac-
     tions for a single session can occur asynchronously.

     snmp_sess_select_info()  is  passed  the  information  that would have been
     passed to select(2) in the absence of SNMP.  For example,	this  might  in-
     clude  file descriptors associated with the main loop of a graphical appli-
     cation. This information is modified so that SNMP will get the  service  it
     requires from the call to select(2).  In this case, numfds, fdset and time-
     out  correspond to the nfds, readfds and timeout arguments to select(2) re-
     spectively.  The only exception is that timeout must ALWAYS point to an al-
     located (but perhaps uninitialized) struct timeval (it cannot  be	NULL  as
     for  select(2)).	If  timeout would have been passed as NULL, block is in-
     stead set to true, and timeout is treated as undefined.  This same rule ap-
     plies upon return from snmp_select_info().

     After calling snmp_sess_select_info() , select(2) should be called with the
     returned data.  When it returns, snmp_sess_read()	should	then  be  called
     with  the	fd_set	returned  from select(2).  This will read any input from
     this session's SNMP socket.  If select(2) times out (that	is,  it  returns
     zero),  snmp_sess_timeout()  should  be  called to see if a timeout has oc-
     curred on the SNMP session.

     snmp_sess_synch_response is a convenience routine that will  send	the  re-
     quest,  wait for the response and process it before returning.  See the de-
     scriptions of snmp_sess_send ,  snmp_sess_read etc for details.

DIAGNOSTICS
     Error return status from snmp_sess_open() is indicated by return of a  NULL
     pointer.	Error  return status from snmp_sess_close() and snmp_sess_send()
     is indicated by a return value of 0.  A successful status will return 1.

     Further information can be obtained by using snmp_sess_error() to see  what
     type  of  error  has  occurred.   This function returns the SNMP snmp_errno
     variable, the value of the system errno variable, and a string  interpreta-
     tion of both variables.  The string must be freed after use by the caller.

     For  errors  returned  by	snmp_sess_open(), use the corresponding function
     snmp_error() instead of snmp_sess_error().

     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_RCVFROM

       SNMPERR_BAD_PARSE

       SNMPERR_BAD_VERSION

       SNMPERR_BAD_COMMUNITY

       SNMPERR_NOAUTH_DESPRIV

       SNMPERR_ABORT

       SNMPERR_UNKNOWN_PDU

       SNMPERR_TIMEOUT

SEE ALSO
     select(2),      netsnmp_session_api(3),	  netsnmp_pdu_api(3),	    net-
     snmp_varbind_api(3), netsnmp_mib_api(3), snmp_api.h

V5.9.5.2			   19 May 2011		     NETSNMP_SESS_API(3)

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=snmp_sess_close&sektion=3&manpath=FreeBSD+Ports+15.1.quarterly>

home | help