モジュール | |
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 | |
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 | |
データ構造 | |
struct | snmp_internal_session |
struct | session_list |
マクロ定義 | |
#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 |
型定義 | |
typedef long | fd_mask |
関数 | |
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) |
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) |
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) |
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) |
変数 | |
module_init_list * | initlist = NULL |
module_init_list * | noinitlist = NULL |
netsnmp_subtree * | subtrees |
fsblkcnt_t | long_return |
u_char | return_buf [258] |
timeval | starttime |
int | callback_master_num = -1 |
oid | nullOid [] = { 0, 0 } |
int | nullOidLen = sizeof(nullOid) |
session_list * | Sessions = NULL |
int | snmp_errno = 0 |
#define timercmp | ( | tvp, | |||
uvp, | |||||
cmp | ) |
値:
/* CSTYLED */ \ ((tvp)->tv_sec cmp (uvp)->tv_sec || \ ((tvp)->tv_sec == (uvp)->tv_sec && \ /* CSTYLED */ \ (tvp)->tv_usec cmp (uvp)->tv_usec))
snmp_api.c の 147 行で定義されています。
int _sess_read | ( | void * | sessp, | |
fd_set * | fdset | |||
) |
snmp_api.c の 5406 行で定義されています。
参照先 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()・session_list::transport.
参照元 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.
app | the configuration file to be read in, gets stored in default storage |
snmp_vars.c の 270 行で定義されています。
参照先 _init_agent_callback_transport・init_traps()・netsnmp_ds_get_boolean()・netsnmp_ds_set_boolean()・netsnmp_init_helpers()・NULL・setup_tree()・snmp_log()・starttime.
void init_snmp | ( | const char * | type | ) |
Calls the functions to do config file loading and mib module parsing in the correct order.
type | label for the config file "type" |
snmp_api.c の 793 行で定義されています。
参照先 init_callbacks()・init_mib()・init_snmp_alarm()・init_snmp_enums()・init_snmp_logging()・netsnmp_ds_get_string()・netsnmp_ds_set_string()・read_configs()・read_premib_configs()・register_mib_handlers()・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
Caution: this method is called often by command responder applications (ie, agent).
snmp_api.c の 6347 行で定義されています。
参照元 netsnmp_subtree_change_next()・netsnmp_subtree_change_prev()・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 ==.
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) |
snmp_api.c の 6419 行で定義されています。
参照元 netsnmp_cache_find_by_oid()・netsnmp_old_api_helper()・netsnmp_subtree_free()・netsnmp_subtree_load()・netsnmp_unregister_mib_table_row()・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.
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. |
snmp_api.c の 6475 行で定義されています。
参照先 SNMP_MIN.
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
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) |
snmp_api.c の 6455 行で定義されています。
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).
snmp_api.c の 6298 行で定義されています。
参照元 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()・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_oidtree_compare()・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.
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) |
snmp_api.c の 6400 行で定義されています。
参照先 snmp_oid_compare().
参照元 netsnmp_query_walk()・netsnmp_tdata_compare_subtree_oid().
void snmp_shutdown | ( | const char * | type | ) |
Shuts down the application, saving any needed persistent storage, and appropriate clean up.
type | Label for the config file "type" used |
snmp_api.c の 862 行で定義されています。
参照先 clear_callback()・netsnmp_ds_shutdown()・NULL・shutdown_mib()・snmp_alarm_unregister_all()・snmp_call_callbacks()・snmp_close_sessions()・snmp_store()・unregister_all_config_handlers().
int snmpv3_engineID_probe | ( | struct session_list * | slp, | |
netsnmp_session * | in_session | |||
) |
probe for peer engineID
slp | session list pointer. | |
in_session | session for errors |
1 : ok
snmp_api.c の 1278 行で定義されています。
参照先 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・snmp_session::version.
参照元 snmp_sess_add_ex().