[Previous] [Contents] [Index] [Next]

Caution: This version of this document is no longer maintained. For the latest documentation, see http://www.qnx.com/developers/docs.

snmp_select_info()

Get information that select() needs for SNMP

Synopsis:

#include <sys/types.h>
#include <sys/select.h>
#include <sys/time.h>
#include <snmp/snmp_api.h>

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

Arguments:

numfds
The number of significant file descriptors in fdset.
fdset
A pointer to a set of file descriptors that contains all of the file descriptors that you've opened for SNMP. If activity occurs on any of these file descriptors, you should call snmp_read() with that file-descriptor set.
timeout
A pointer to a timeval structure that defines the longest time that SNMP can wait for a timeout. You should call select() with the minimum time between timeout and any other timeouts necessary. You should check this on each invocation of select(). If a timeout is received, you should call snmp_timeout() to see if the timeout was for SNMP. (The snmp_timeout() function is idempotent.)

You must provide the timeout, even if block is 1 (see below).

block
Governs the behavior of select():

Library:

libsnmp

Use the -l snmp option to qcc to link against this library.

Description:

The snmp_select_info() function is used to return information about what SNMP requires from a select() call.

Asynchronous SNMP transactions:

To have SNMP transactions occur asynchronously, you can invoke the functions snmp_select_info(), snmp_timeout(), and snmp_read() in conjunction with the system call select(). For more information, see select().

For asynchronous transactions, invoke snmp_select_info() with the information you would have passed to select() in the absence of SNMP. The snmp_select_info() function modifies the information, which is subsequently passed to select().

Parameters to select(): Corresponding parameters to snmp_select_info():
nfds numfds
readfds fdset
timeout timeout -- must point to an allocated (but not necessarily initialized) timeval structure.

The following code segment shows how to use these SNMP functions in conjunction with select():

FD_ZERO(&fdset);
numfds=sd+1;
FD_SET(sd,&fdset);
block=0;
tvp=&timeout;
timerclear(tvp);
tvp->tv_sec = 5;

snmp_select_info(&numfds, &fdset, tvp, &block);

if(block==1)
{
  tvp = NULL;
}
count = select(numfds, &fdset, 0, 0, tvp);

if(count==0)
  snmp_timeout();
if(count>0)
  snmp_read(&fdset);

Returns:

The number of open sockets (i.e. the number of open sessions).

Classification:

SNMP

Safety:
Cancellation point No
Interrupt handler No
Signal handler No
Thread No

See also:

select(), snmp_close(), snmp_open(), snmp_pdu, snmp_read(), snmp_select_info(), snmp_send(), snmp_session, snmp_timeout()

RFC 1157, FAQ in Internet newsgroup comp.protocols.snmp

Marshall T. Rose, The Simple Book: An Introduction to Internet Management, Revised 2nd ed. (Prentice-Hall, 1996, ISBN 0-13-451659-1)


[Previous] [Contents] [Index] [Next]