net-snmp The Net-SNMP library(3)
NAME
The Net-SNMP library -
Modules asn1 parsing and datatype manipulation routines. Note on. A generic callback mechanismgeneric linked-list data handling with a string as a key.
storage space for defaultsThe 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 timeThe 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 routinesgeneric logging for net-snmp
Memory Utility Routines Data Structuresstruct 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
Version 5.4.1 Last change: 27 Jul 2007 1net-snmp The Net-SNMP library(3)
#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
Typedefstypedef long fd_mask
Functionsint 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)
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 *,
Version 5.4.1 Last change: 27 Jul 2007 2net-snmp The Net-SNMP library(3)
void *, int), int(*fparse)(netsnmp_session
int snmpv3_engineID_probe (struct session_list *slp,
netsnmp_session *in_session)
probe for peer engineIDnetsnmp_session * snmp_add (netsnmp_session *in_session,
netsnmp_transport *transport,
int(*fpre_parse)(netsnmp_session *, netsnmp_transport *,
void *, int)netsnmp_session * snmp_add_full (netsnmp_session
*in_session, netsnmp_transport *transport,
int(*fpre_parse)(netsnmp_session *, netsnmp_transport *,
void *,void * snmp_sess_add_ex (netsnmp_session *in_session,
netsnmp_transport *transport,
int(*fpre_parse)(netsnmp_session *, netsnmp_transport *,
void *, int), int(*fpvoid * snmp_sess_add (netsnmp_session *in_session,
netsnmp_transport *transport,
int(*fpre_parse)(netsnmp_session *, netsnmp_transport *,
void *, int), int(*fpostvoid * 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)
Version 5.4.1 Last change: 27 Jul 2007 3net-snmp The Net-SNMP library(3)
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 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 differint 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 snmp_oidsubtree_compare (const oid *in_name1, size_t
len1, const oid *in_name2, size_t len2)
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)
Version 5.4.1 Last change: 27 Jul 2007 4net-snmp The Net-SNMP library(3)
Variablesmodule_init_list * initlist = NULL
module_init_list * noinitlist = NULL
netsnmp_subtree * subtrees
long long_return
u_char return_buf [258]
timeval starttimeint callback_master_num = -1
oid nullOid [] = { 0, 0 } int nullOidLen = sizeof(nullOid)session_list * Sessions = NULL
int snmp_errno = 0
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 148 of file snmp_api.c.
Referenced by netsnmp_addrcache_add(), and
snmp_sess_timeout().
Function Documentationint _sess_read (void * sessp, fd_set * fdset)
Definition at line 5420 of file snmp_api.c.
References asn_check_packet(), snmp_session::callback,
snmp_session::callback_magic,
snmp_internal_session::check_packet,
netsnmp_transport_s::f_accept, netsnmp_transport_s::f_close,
netsnmp_transport_s::f_recv, FD_ISSET,
netsnmp_transport_s::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, Sessions,
SNMP_FREE, snmp_log(), snmp_sess_add_ex(),
snmp_set_detail(), netsnmp_transport_s::sock, strerror(),
and session_list::transport.
Referenced by snmp_sess_read().
Version 5.4.1 Last change: 27 Jul 2007 5net-snmp The Net-SNMP library(3)
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.
References _init_agent_callback_transport, init_traps(),
netsnmp_ds_get_boolean(), netsnmp_ds_set_boolean(),
netsnmp_init_helpers(), NULL, setup_tree(), snmp_log(), and
starttime.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 795 of file snmp_api.c.
References init_callbacks(), init_snmp_alarm(),
init_snmp_enums(), init_snmp_logging(),
netsnmp_ds_get_string(), netsnmp_ds_set_string(),
netsnmp_init_mib(), read_configs(), read_premib_configs(),
register_mib_handlers(), and snmp_init_statistics().
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 Version 5.4.1 Last change: 27 Jul 2007 6net-snmp The Net-SNMP library(3)
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 != name2Definition at line 6358 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 6439 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.
Version 5.4.1 Last change: 27 Jul 2007 7net-snmp The Net-SNMP library(3)
Definition at line 6495 of file snmp_api.c.
References SNMP_MIN.
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 6475 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 >
name2Definition at line 6309 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_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(),
Version 5.4.1 Last change: 27 Jul 2007 8net-snmp The Net-SNMP library(3)
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_tdata_compare_oid(),
netsnmp_watched_spinlock_handler(),
netsnmp_watched_timestamp_handler(),
netsnmp_watcher_helper_handler(), snmp_oidsubtree_compare(),
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 6411 of file snmp_api.c.
References snmp_oid_compare().
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: voidDefinition at line 864 of file snmp_api.c.
References clear_callback(), netsnmp_ds_shutdown(), NULL,
shutdown_mib(), shutdown_snmp_logging(),
snmp_alarm_unregister_all(), snmp_call_callbacks(),
snmp_close_sessions(), snmp_store(), and
unregister_all_config_handlers().
Version 5.4.1 Last change: 27 Jul 2007 9net-snmp The Net-SNMP library(3)
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:+o called by _sess_open(), snmp_sess_add_ex()
+o in_session is the user supplied session provided to
those functions. +o the first session in slp should the internal allocatedcopy of in_session
Returns: 0 : error 1 : okDefinition at line 1285 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().
ATTRIBUTES
See attributes(5) for descriptions of the following attributes:_______________________________________________________
| ATTRIBUTE TYPE | ATTRIBUTE VALUE |
|____________________|__________________________________|_
| Availability | system/management/snmp/net-snmp|
|____________________|__________________________________|_
| Interface Stability| Volatile ||____________________|_________________________________|
NOTESSource for net-snmp is available on http://opensolaris.org.
Version 5.4.1 Last change: 27 Jul 2007 10