man netsnmp_library () -
NAME
The Net-SNMP library -
Modules
asn1 parsing and datatype manipulation routines.
A generic callback mechanism
generic linked-list data handling with a string as a key.
storage space for defaults
mib parsing and datatype manipulation routines.
Store and retrieve data referenced by an OID.
This is essentially a way of storing data associated with a given OID.
parsing various configuration files at run time
generic library based alarm timers for various parts of an application
various PDU processing routines
generic logging for net-snmp
Data Structures
struct snmp_internal_session
struct session_list
Defines
#define MIN(a, b) (((a) < (b)) ? (a) : (b))
#define MIB_CLIENTS_ARE_EVIL 1
#define _init_agent_callback_transport()
#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 init_agent (const char *app)
Initialize the agent.
void shutdown_agent (void)
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)
Calls the functions to do config file loading and mib module parsing in the correct order.
void snmp_store (const char *type)
void snmp_shutdown (const char *type)
Shuts down the application, saving any needed persistent storage, and appropriate clean up.
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, const 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, const oid *name, size_t name_length, u_char type, const u_char *value, size_t len)
int snmp_add_var (netsnmp_pdu *pdu, const 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
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 374 of file snmp_api.c.
#define timercmp(tvp, uvp, cmp)
Value:
/* CSTYLED */ ((tvp)->tv_sec cmp (uvp)->tv_sec || ((tvp)->tv_sec == (uvp)->tv_sec && /* CSTYLED */ (tvp)->tv_usec cmp (uvp)->tv_usec))
Definition at line 145 of file snmp_api.c.
Function Documentation
int init_agent (const char * app)
Initialize the agent.
Calls into init_agent_read_config to set tha app's configuration file in the appropriate default storage space, NETSNMP_DS_LIB_APPTYPE. Need to call init_agent before calling init_snmp.
Parameters: app the configuration file to be read in, gets stored in default storage
Returns: Returns non-zero on failure and zero on success.
See also: init_snmp
Definition at line 269 of file snmp_vars.c.
References netsnmp_ds_set_boolean(), netsnmp_init_helpers(), and snmp_log().
void init_snmp (const char * type)
Calls the functions to do config file loading and mib module parsing in the correct order.
Parameters: type label for the config file 'type'
Returns: void
See also: init_agent
Definition at line 778 of file snmp_api.c.
References init_mib().
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 6211 of file snmp_api.c.
Referenced by netsnmp_cache_find_by_oid(), netsnmp_old_api_helper(), and unregister_mib_context().
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 6267 of file snmp_api.c.
Referenced by netsnmp_add_varbind_to_cache().
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 6247 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 6143 of file snmp_api.c.
Referenced by check_getnext_results(), netsnmp_check_getnext_reply(), netsnmp_insert_iterator_context(), netsnmp_insert_table_row(), netsnmp_row_merge_helper_handler(), netsnmp_table_data_add_row(), netsnmp_table_data_get_from_oid(), netsnmp_table_data_helper_handler(), netsnmp_table_iterator_helper_handler(), snmp_oidtree_compare(), and table_helper_handler().
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 6192 of file snmp_api.c.
References snmp_oid_compare().
void snmp_shutdown (const char * type)
Shuts down the application, saving any needed persistent storage, and appropriate clean up.
Parameters: type Label for the config file 'type' used
Returns: void
Definition at line 846 of file snmp_api.c.
References shutdown_mib(), snmp_alarm_unregister_all(), and snmp_call_callbacks().