netsnmp_library(3) - Linux man page
Name
The Net-SNMP library -
Modules
- asn1 parsing and datatype manipulation routines.
- Note on.
- A generic callback mechanism
- generic linked-list data handling with a string as a key.
- storage space for defaults
- generic linked-list data handling with a string as a key.
- The purpose of the default storage is three-fold:.
- 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
- The read_config related functions are a fairly extensible system of parsing various configuration files at the run time.
- generic library based alarm timers for various parts of an application
- various PDU processing routines
- generic logging for net-snmp
- Memory Utility Routines
- various PDU processing routines
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) DEBUGDUMPSECTION(token, snmp_pdu_type(type))
- #define ERROR_STAT_LENGTH 11
- #define MIB_CLIENTS_ARE_EVIL 1
Typedefs
- typedef long fd_mask
Functions
- int init_agent (const char *app)
- Initialize the agent.
- void shutdown_agent (void)
- void add_to_init_list (char *module_list)
- int should_init (const char *module_name)
- 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)
- const char * snmp_pdu_type (int type)
- 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 add_to_init_list (char *module_list)
- 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_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))
- probe for peer engineID
- 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)
- 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))
- lexicographical compare two object identifiers.
- int netsnmp_oid_compare_ll (const oid *in_name1, size_t len1, const oid *in_name2, size_t len2, size_t *offpt)
- lexicographical compare two object identifiers and return the point where they differ
- 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)
- 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)
Variables
- struct module_init_list * initlist = NULL
- struct module_init_list * noinitlist = NULL
- netsnmp_subtree * subtrees
- long long_return
- u_char return_buf [258]
- struct timeval starttime
- int callback_master_num = -1
- oid nullOid [] = { 0, 0 }
- int nullOidLen = sizeof(nullOid)
- struct session_list * Sessions = NULL
- int snmp_errno = 0
- struct module_init_list * noinitlist = NULL
Define Documentation
#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 147 of file snmp_api.c.Referenced by netsnmp_addrcache_add(), snmp_sess_select_info(), and snmp_sess_timeout().
Function Documentation
int _sess_read (void * sessp, fd_set * fdset)
- XXX-rks: why no SNMP_FREE(isp->packet); ??
XXX-rks: why no SNMP_FREE(isp->packet); ??
Definition at line 5406 of file snmp_api.c.
References asn_check_packet(), snmp_session::callback, snmp_session::callback_magic, snmp_internal_session::check_packet, netsnmp_transport::f_accept, netsnmp_transport::f_close, netsnmp_transport::f_recv, FD_ISSET, netsnmp_transport::flags, snmp_internal_session::hook_build, snmp_internal_session::hook_create_pdu, snmp_internal_session::hook_parse, snmp_internal_session::hook_post, snmp_internal_session::hook_pre, snmp_internal_session::hook_realloc_build, session_list::internal, MAX_PACKET_LENGTH, MAXIMUM_PACKET_SIZE, session_list::next, NULL, snmp_internal_session::packet, snmp_internal_session::packet_len, snmp_internal_session::packet_size, snmp_session::s_errno, snmp_session::s_snmp_errno, session_list::session, SNMP_FREE, snmp_log(), snmp_sess_add_ex(), snmp_set_detail(), netsnmp_transport::sock, strerror(), and session_list::transport.
Referenced by snmp_sess_read().
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 270 of file snmp_vars.c.
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 793 of file snmp_api.c.
int netsnmp_oid_compare_ll (const oid * in_name1, size_t len1, const oid * in_name2, size_t len2, size_t * offpt)
- lexicographical compare two object identifiers and return the point where they differ
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 and offpt = len where name1 != name2
- Definition at line 6347 of file snmp_api.c.
Referenced by netsnmp_subtree_change_next(), netsnmp_subtree_change_prev(), and netsnmp_subtree_find_prev().
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 6419 of file snmp_api.c.
Referenced by netsnmp_cache_find_by_oid(), netsnmp_old_api_helper(), netsnmp_subtree_free(), netsnmp_subtree_load(), netsnmp_unregister_mib_table_row(), 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 6475 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 6455 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 6298 of file snmp_api.c.
Referenced by check_getnext_results(), convert_v2pdu_to_v1(), find_varbind_in_list(), lookup_cache_find(), netsnmp_bulk_to_next_fix_requests(), netsnmp_check_getnext_reply(), netsnmp_container_table_row_insert(), netsnmp_insert_iterator_context(), netsnmp_insert_table_row(), netsnmp_instance_helper_handler(), netsnmp_iterator_row_get_byoid(), netsnmp_iterator_row_next_byoid(), netsnmp_row_merge_helper_handler(), netsnmp_scalar_group_helper_handler(), netsnmp_scalar_helper_handler(), netsnmp_send_traps(), netsnmp_stash_to_next_helper(), netsnmp_subtree_compare(), netsnmp_subtree_find(), netsnmp_subtree_find_next(), netsnmp_subtree_find_prev(), netsnmp_subtree_load(), netsnmp_subtree_split(), netsnmp_table_data_add_row(), netsnmp_table_data_get_from_oid(), netsnmp_table_data_helper_handler(), netsnmp_table_data_row_next_byoid(), netsnmp_table_iterator_helper_handler(), netsnmp_tdata_compare_oid(), netsnmp_watched_spinlock_handler(), netsnmp_watched_timestamp_handler(), netsnmp_watcher_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 6400 of file snmp_api.c.
Referenced by netsnmp_query_walk(), and netsnmp_tdata_compare_subtree_oid().
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 862 of file snmp_api.c.
int snmpv3_engineID_probe (struct session_list * slp, netsnmp_session * in_session)
- probe for peer engineID
Parameters:
- slp session list pointer.
in_session session for errors - Note:
- • called by _sess_open(), snmp_sess_add_ex()
• in_session is the user supplied session provided to those functions.
• the first session in slp should the internal allocated copy of in_session
- Returns:
- 0 : error
1 : ok
- Definition at line 1278 of file snmp_api.c.
References create_user_from_session(), snmp_session::engineBoots, snmp_session::engineTime, snmp_session::flags, NULL, snmp_session::s_snmp_errno, snmp_session::securityEngineID, snmp_session::securityEngineIDLen, session_list::session, snmp_api_errstring(), snmp_errstring(), snmp_sess_synch_response(), TRUE, and snmp_session::version.
Referenced by snmp_sess_add_ex().