The Net-SNMP library(3)

NAME
The Net-SNMP library -

  Modules
mib parsing and datatype manipulation routines.

  Data Structures
struct session_list
struct snmp_internal_session

  Defines
#define SNMP_NEED_REQUEST_LIST
#define timercmp(tvp, uvp, cmp)
#define timerclear(tvp) (tvp)->tv_sec = (tvp)->tv_usec = 0
#define MAX_PACKET_LENGTH (0x7fffffff)
#define NETSNMP_STREAM_QUEUE_LEN 5
#define BSD4_2
#define NFDBITS (sizeof(fd_mask) * NBBY)
#define FD_SET(n, p) ((p)->fds_bits[(n)/NFDBITS] |= (1 << ((n) % NFDBITS)))
#define FD_CLR(n, p) ((p)->fds_bits[(n)/NFDBITS] &= ~(1 << ((n) % NFDBITS)))
#define FD_ISSET(n, p) ((p)->fds_bits[(n)/NFDBITS] & (1 << ((n) % NFDBITS)))
#define FD_ZERO(p) memset((p), 0, sizeof(*(p)))
#define DEFAULT_COMMUNITY 'public'
#define DEFAULT_RETRIES 5
#define DEFAULT_TIMEOUT 1000000L
#define DEFAULT_REMPORT SNMP_PORT
#define DEFAULT_ENTERPRISE default_enterprise
#define DEFAULT_TIME 0
#define MAXIMUM_PACKET_SIZE 0x7fffffff
#define DEBUGPRINTPDUTYPE(token, type)
#define ERROR_STAT_LENGTH 11

  Typedefs
typedef long fd_mask

  Functions
int snmp_build (u_char **pkt, size_t *pkt_len, size_t *offset, netsnmp_session *pss, netsnmp_pdu *pdu)
int snmp_get_errno (void)
void snmp_synch_reset (netsnmp_session *notused)
void snmp_synch_setup (netsnmp_session *notused)
const char * strerror (int err)
long snmp_get_next_reqid (void)
long snmp_get_next_msgid (void)
long snmp_get_next_sessid (void)
long snmp_get_next_transid (void)
void snmp_perror (const char *prog_string)
void snmp_set_detail (const char *detail_string)
const char * snmp_api_errstring (int snmp_errnumber)
void snmp_error (netsnmp_session *psess, int *p_errno, int *p_snmp_errno, char **p_str)
void snmp_sess_error (void *sessp, int *p_errno, int *p_snmp_errno, char **p_str)
void netsnmp_sess_log_error (int priority, const char *prog_string, netsnmp_session *ss)
void snmp_sess_perror (const char *prog_string, netsnmp_session *ss)
void snmp_sess_init (netsnmp_session *session)
void init_snmp_enums (void)
void init_snmp (const char *type)
void snmp_store (const char *type)
void snmp_shutdown (const char *type)
netsnmp_session * snmp_open (netsnmp_session *session)
netsnmp_session * snmp_open_ex (netsnmp_session *session, int(*fpre_parse)(netsnmp_session *, netsnmp_transport *, void *, int), int(*fparse)(netsnmp_session *, netsnmp_pdu *, u_char *, size_t), int(*fpost_parse)(netsnmp_session *, netsnmp_pdu *, int), int(*fbuild)(netsnmp_session *, netsnmp_pdu *, u_char *, size_t *), int(*frbuild)(netsnmp_session *, netsnmp_pdu *, u_char **, size_t *, size_t *), int(*fcheck)(u_char *, size_t))
int snmpv3_engineID_probe (struct session_list *slp, netsnmp_session *in_session)
netsnmp_session * snmp_add (netsnmp_session *in_session, netsnmp_transport *transport, int(*fpre_parse)(netsnmp_session *, netsnmp_transport *, void *, int), int(*fpost_parse)(netsnmp_session *, netsnmp_pdu *, int))
netsnmp_session * snmp_add_full (netsnmp_session *in_session, netsnmp_transport *transport, int(*fpre_parse)(netsnmp_session *, netsnmp_transport *, void *, int), int(*fparse)(netsnmp_session *, netsnmp_pdu *, u_char *, size_t), int(*fpost_parse)(netsnmp_session *, netsnmp_pdu *, int), int(*fbuild)(netsnmp_session *, netsnmp_pdu *, u_char *, size_t *), int(*frbuild)(netsnmp_session *, netsnmp_pdu *, u_char **, size_t *, size_t *), int(*fcheck)(u_char *, size_t), netsnmp_pdu *(*fcreate_pdu)(netsnmp_transport *, void *, size_t))
void * snmp_sess_add_ex (netsnmp_session *in_session, netsnmp_transport *transport, int(*fpre_parse)(netsnmp_session *, netsnmp_transport *, void *, int), int(*fparse)(netsnmp_session *, netsnmp_pdu *, u_char *, size_t), int(*fpost_parse)(netsnmp_session *, netsnmp_pdu *, int), int(*fbuild)(netsnmp_session *, netsnmp_pdu *, u_char *, size_t *), int(*frbuild)(netsnmp_session *, netsnmp_pdu *, u_char **, size_t *, size_t *), int(*fcheck)(u_char *, size_t), netsnmp_pdu *(*fcreate_pdu)(netsnmp_transport *, void *, size_t))
void * snmp_sess_add (netsnmp_session *in_session, netsnmp_transport *transport, int(*fpre_parse)(netsnmp_session *, netsnmp_transport *, void *, int), int(*fpost_parse)(netsnmp_session *, netsnmp_pdu *, int))
void * snmp_sess_open (netsnmp_session *pss)
int create_user_from_session (netsnmp_session *session)
int snmp_sess_close (void *sessp)
int snmp_close (netsnmp_session *session)
int snmp_close_sessions (void)
int snmpv3_packet_build (netsnmp_session *session, netsnmp_pdu *pdu, u_char *packet, size_t *out_length, u_char *pdu_data, size_t pdu_data_len)
u_char * snmp_pdu_build (netsnmp_pdu *pdu, u_char *cp, size_t *out_length)
int snmpv3_parse (netsnmp_pdu *pdu, u_char *data, size_t *length, u_char **after_header, netsnmp_session *sess)
int snmpv3_make_report (netsnmp_pdu *pdu, int error)
int snmpv3_get_report_type (netsnmp_pdu *pdu)
int snmp_pdu_parse (netsnmp_pdu *pdu, u_char *data, size_t *length)
u_char * snmpv3_scopedPDU_parse (netsnmp_pdu *pdu, u_char *cp, size_t *length)
int snmp_send (netsnmp_session *session, netsnmp_pdu *pdu)
int snmp_sess_send (void *sessp, netsnmp_pdu *pdu)
int snmp_async_send (netsnmp_session *session, netsnmp_pdu *pdu, snmp_callback callback, void *cb_data)
int snmp_sess_async_send (void *sessp, netsnmp_pdu *pdu, snmp_callback callback, void *cb_data)
void snmp_free_var (netsnmp_variable_list *var)
void snmp_free_varbind (netsnmp_variable_list *var)
void snmp_free_pdu (netsnmp_pdu *pdu)
netsnmp_pdu * snmp_create_sess_pdu (netsnmp_transport *transport, void *opaque, size_t olength)
void snmp_read (fd_set *fdset)
int _sess_read (void *sessp, fd_set *fdset)
int snmp_sess_read (void *sessp, fd_set *fdset)
int snmp_select_info (int *numfds, fd_set *fdset, struct timeval *timeout, int *block)
int snmp_sess_select_info (void *sessp, int *numfds, fd_set *fdset, struct timeval *timeout, int *block)
void snmp_timeout (void)
void snmp_sess_timeout (void *sessp)
int snmp_oid_ncompare (const oid *in_name1, size_t len1, const oid *in_name2, size_t len2, size_t max_len)
int snmp_oid_compare (const oid *in_name1, size_t len1, const oid *in_name2, size_t len2)
lexicographical compare two object identifiers.
int snmp_oidtree_compare (const oid *in_name1, size_t len1, const oid *in_name2, size_t len2)
Compares 2 OIDs to determine if they are equal up until the shortest length.
int netsnmp_oid_equals (const oid *in_name1, size_t len1, const oid *in_name2, size_t len2)
Compares 2 OIDs to determine if they are exactly equal.
int netsnmp_oid_is_subtree (const oid *in_name1, size_t len1, const oid *in_name2, size_t len2)
Identical to netsnmp_oid_equals, except only the length up to len1 is compared.
int netsnmp_oid_find_prefix (const oid *in_name1, size_t len1, const oid *in_name2, size_t len2)
Given two OIDs, determine the common prefix to them both.
netsnmp_variable_list * snmp_pdu_add_variable (netsnmp_pdu *pdu, oid *name, size_t name_length, u_char type, const u_char *value, size_t len)
netsnmp_variable_list * snmp_varlist_add_variable (netsnmp_variable_list **varlist, oid *name, size_t name_length, u_char type, const u_char *value, size_t len)
int snmp_add_var (netsnmp_pdu *pdu, oid *name, size_t name_length, char type, const char *value)
void * snmp_sess_pointer (netsnmp_session *session)
netsnmp_session * snmp_sess_session (void *sessp)
netsnmp_transport * snmp_sess_transport (void *sessp)
void snmp_sess_transport_set (void *sp, netsnmp_transport *t)
oid * snmp_duplicate_objid (const oid *objToCopy, size_t objToCopyLen)
u_int snmp_increment_statistic (int which)
u_int snmp_increment_statistic_by (int which, int count)
u_int snmp_get_statistic (int which)
void snmp_init_statistics (void)

  Variables
session_list * Sessions = NULL
int snmp_errno = 0

DEFINE DOCUMENTATION

  #define DEBUGPRINTPDUTYPE(token, type)

Value:

switch(type) {       case SNMP_MSG_GET:         DEBUGDUMPSECTION(token, 'PDU-GET');         break;       case SNMP_MSG_GETNEXT:         DEBUGDUMPSECTION(token, 'PDU-GETNEXT');         break;       case SNMP_MSG_RESPONSE:         DEBUGDUMPSECTION(token, 'PDU-RESPONSE');         break;       case SNMP_MSG_SET:         DEBUGDUMPSECTION(token, 'PDU-SET');         break;       case SNMP_MSG_GETBULK:         DEBUGDUMPSECTION(token, 'PDU-GETBULK');         break;       case SNMP_MSG_INFORM:         DEBUGDUMPSECTION(token, 'PDU-INFORM');         break;       case SNMP_MSG_TRAP2:         DEBUGDUMPSECTION(token, 'PDU-TRAP2');         break;       case SNMP_MSG_REPORT:         DEBUGDUMPSECTION(token, 'PDU-REPORT');         break;       default:         DEBUGDUMPSECTION(token, 'PDU-UNKNOWN');         break;     }

Definition at line 364 of file snmp_api.c.

  #define timercmp(tvp, uvp, cmp)

Value:

        ((tvp)->tv_sec cmp (uvp)->tv_sec ||         ((tvp)->tv_sec == (uvp)->tv_sec &&                   (tvp)->tv_usec cmp (uvp)->tv_usec))

Definition at line 135 of file snmp_api.c.

FUNCTION DOCUMENTATION

  int netsnmp_oid_equals (const oid * in_name1, size_t len1, const oid * in_name2, size_t len2)

Compares 2 OIDs to determine if they are exactly equal.

This should be faster than doing a snmp_oid_compare for different length OIDs, since the length is checked first and if != returns immediately. Might be very slighly faster if lengths are ==.

Parameters:

in_name1
    A pointer to the first oid.

len1
    length of the first OID (in segments, not bytes)

in_name2
    A pointer to the second oid.

len2
    length of the second OID (in segments, not bytes)

Returns:
0 if they are equal, 1 if they are not.

Definition at line 6044 of file snmp_api.c.

  int netsnmp_oid_find_prefix (const oid * in_name1, size_t len1, const oid * in_name2, size_t len2)

Given two OIDs, determine the common prefix to them both.

Parameters:

in_name1
    A pointer to the first oid.

len1
    Length of the first oid.

in_name2
    A pointer to the second oid.

len2
    Length of the second oid.

Returns:
length of largest common index of commonality. 1 = first, 0 if none * or -1 on error.

Definition at line 6100 of file snmp_api.c.

  int netsnmp_oid_is_subtree (const oid * in_name1, size_t len1, const oid * in_name2, size_t len2)

Identical to netsnmp_oid_equals, except only the length up to len1 is compared.

Functionally, this determines if in_name2 is equal or a subtree of in_name1

Parameters:

in_name1
    A pointer to the first oid.

len1
    length of the first OID (in segments, not bytes)

in_name2
    A pointer to the second oid.

len2
    length of the second OID (in segments, not bytes)

Returns:
0 if one is a common prefix of the other.

Definition at line 6080 of file snmp_api.c.

  int snmp_oid_compare (const oid * in_name1, size_t len1, const oid * in_name2, size_t len2)

lexicographical compare two object identifiers.

Caution: this method is called often by command responder applications (ie, agent).

Returns:
-1 if name1 < name2, 0 if name1 = name2, 1 if name1 > name2

Definition at line 5976 of file snmp_api.c.

  int snmp_oidtree_compare (const oid * in_name1, size_t len1, const oid * in_name2, size_t len2)

Compares 2 OIDs to determine if they are equal up until the shortest length.

Parameters:

in_name1
    A pointer to the first oid.

len1
    length of the first OID (in segments, not bytes)

in_name2
    A pointer to the second oid.

len2
    length of the second OID (in segments, not bytes)

Returns:
0 if they are equal, 1 if in_name1 is > in_name2, or -1 if <.

Definition at line 6025 of file snmp_api.c.