Get information that select() needs for SNMP
#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 );
You must provide the timeout, even if block is 1 (see below).
libsnmp
Use the -l snmp option to qcc to link against this library.
The snmp_select_info() function is used to return information about what SNMP requires from a select() call.
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);
The number of open sockets (i.e. the number of open sessions).
Safety: | |
---|---|
Cancellation point | No |
Interrupt handler | No |
Signal handler | No |
Thread | No |
select(), snmp_close(), snmp_open(), snmp_pdu, snmp_read(), snmp_select_info(), snmp_send(), snmp_session, snmp_timeout()
Based on 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)