⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 snmp_api.h

📁 嵌入式操作系统ECOS的网络开发包
💻 H
📖 第 1 页 / 共 3 页
字号:
void snmp_free_pdu (struct snmp_pdu *);

void snmp_free_var (struct variable_list *);

void snmp_free_varbind(struct variable_list *var);

/*
 * int snmp_select_info(numfds, fdset, timeout, block)
 * int *numfds;
 * fd_set   *fdset;
 * struct timeval *timeout;
 * int *block;
 *
 * Returns info about what snmp requires from a select statement.
 * numfds is the number of fds in the list that are significant.
 * All file descriptors opened for SNMP are OR'd into the fdset.
 * If activity occurs on any of these file descriptors, snmp_read
 * should be called with that file descriptor set.
 *
 * The timeout is the latest time that SNMP can wait for a timeout.  The
 * select should be done with the minimum time between timeout and any other
 * timeouts necessary.  This should be checked upon each invocation of select.
 * If a timeout is received, snmp_timeout should be called to check if the
 * timeout was for SNMP.  (snmp_timeout is idempotent)
 *
 * Block is 1 if the select is requested to block indefinitely, rather than
 * time out.  If block is input as 1, the timeout value will be treated as
 * undefined, but it must be available for setting in snmp_select_info.  On
 * return, if block is true, the value of timeout will be undefined.
 *
 * snmp_select_info returns the number of open sockets.  (i.e. The number
 * of sessions open)
 */
int snmp_select_info (int *, fd_set *, struct timeval *, int *);



/*
 * void snmp_timeout();
 *
 * snmp_timeout should be called whenever the timeout from snmp_select_info
 * expires, but it is idempotent, so snmp_timeout can be polled (probably a
 * cpu expensive proposition).  snmp_timeout checks to see if any of the
 * sessions have an outstanding request that has timed out.  If it finds one
 * (or more), and that pdu has more retries available, a new packet is formed
 * from the pdu and is resent.  If there are no more retries available, the
 * callback for the session is used to alert the user of the timeout.
 */

void snmp_timeout (void);


/*
 * This routine must be supplied by the application:
 *
 * u_char *authenticator(pdu, length, community, community_len)
 * u_char *pdu;		The rest of the PDU to be authenticated
 * int *length;		The length of the PDU (updated by the authenticator)
 * u_char *community;	The community name to authenticate under.
 * int	community_len	The length of the community name.
 *
 * Returns the authenticated pdu, or NULL if authentication failed.
 * If null authentication is used, the authenticator in snmp_session can be
 * set to NULL(0).
 */



/*
 * This routine must be supplied by the application:
 *
 * int callback(operation, session, reqid, pdu, magic)
 * int operation;
 * struct snmp_session *session;    The session authenticated under.
 * int reqid;			    The request id of this pdu (0 for TRAP)
 * struct snmp_pdu *pdu;	    The pdu information.
 * void *magic			    A link to the data for this routine.
 *
 * Returns 1 if request was successful, 0 if it should be kept pending.
 * Any data in the pdu must be copied because it will be freed elsewhere.
 * Operations are defined below:
 */

#define RECEIVED_MESSAGE   1
#define TIMED_OUT	   2

long snmp_get_next_msgid(void);
long snmp_get_next_reqid(void);
long snmp_get_next_sessid(void);
long snmp_get_next_transid(void);
/* provide for backwards compatibility */
void snmp_set_dump_packet(int);
int snmp_get_dump_packet(void);
void snmp_set_quick_print(int);
int snmp_get_quick_print(void);
void snmp_set_suffix_only(int);
int snmp_get_suffix_only(void);
void snmp_set_full_objid(int);
int snmp_get_full_objid(void);
void snmp_set_random_access(int);
int snmp_get_random_access(void);

int snmp_oid_compare (const oid *, size_t, const oid *, size_t);
void init_snmp (const char *);
u_char *snmp_pdu_build (struct snmp_pdu *, u_char *, size_t *);
int snmpv3_parse(struct snmp_pdu *, u_char *, size_t *, u_char  **);
int snmpv3_dparse(struct snmp_pdu *, u_char *, size_t *, u_char  **, int);
int snmpv3_packet_build(struct snmp_pdu *pdu, u_char *packet, size_t *out_length, u_char *pdu_data, size_t pdu_data_len);
int snmpv3_make_report(struct snmp_pdu *pdu, int error);
int snmpv3_get_report_type(struct snmp_pdu *pdu);
int snmp_pdu_parse(struct snmp_pdu *pdu, u_char *data, size_t *length);
int snmp_pdu_dparse(struct snmp_pdu *pdu, u_char *data, size_t *length, int);
u_char* snmpv3_scopedPDU_parse(struct snmp_pdu *pdu, u_char *cp, size_t *length);
u_char* snmpv3_scopedPDU_dparse(struct snmp_pdu *pdu, u_char *cp, size_t *length, int);
void snmp_shutdown(const char *type);
struct variable_list *snmp_pdu_add_variable (struct snmp_pdu *, oid *, size_t, u_char, u_char *, size_t);
struct variable_list *snmp_varlist_add_variable(struct variable_list **varlist,
	oid *name, size_t name_length, u_char type, u_char *value, size_t len);
int hex_to_binary (const char *, u_char *);
int ascii_to_binary (const char *, u_char *);
int snmp_add_var (struct snmp_pdu *, oid*, size_t, char, const char *);
oid  *snmp_duplicate_objid(oid *objToCopy, size_t);
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);
int create_user_from_session(struct snmp_session *session);

/* extended open */
struct snmp_session *snmp_open_ex (struct snmp_session *,
  int (*fpre_parse) (struct snmp_session *, snmp_ipaddr),
  int (*fparse) (struct snmp_session *, struct snmp_pdu *, u_char *, size_t),
  int (*fpost_parse) (struct snmp_session *, struct snmp_pdu *, int),
  int (*fbuild) (struct snmp_session *, struct snmp_pdu *, u_char *, size_t *),
  int (*fcheck) (u_char *, size_t)
);

/* provided for backwards compatability.  Don't use these functions.
   See snmp_debug.h and snmp_debug.c instead.
*/
#if HAVE_STDARG_H
void DEBUGP (const char *, ...);
#else
void DEBUGP (va_alist);
#endif
void DEBUGPOID(oid *, size_t);
void snmp_set_do_debugging (int);
int snmp_get_do_debugging (void);

#ifdef CMU_COMPATIBLE
extern int snmp_dump_packet;
extern int quick_print;
#endif

size_t snmp_socket_length   (int family);

/*
 * snmp_error - return error data
 * Inputs :  address of errno, address of snmp_errno, address of string
 * Caller must free the string returned after use.
 */
void snmp_error (struct snmp_session *, int *, int *, char **);
/*
 * single session API.
 *
 * These functions perform similar actions as snmp_XX functions,
 * but operate on a single session only.
 *
 * Synopsis:

	void * sessp;
	struct snmp_session session, *ss;
	struct snmp_pdu *pdu, *response;

	snmp_sess_init(&session);
	session.retries = ...
	session.remote_port = ...
	sessp = snmp_sess_open(&session);
	ss = snmp_sess_session(sessp);
	if (ss == NULL)
		exit(1);
	...
	if (ss->community) free(ss->community);
	ss->community = strdup(gateway);
	ss->community_len = strlen(gateway);
	...
	snmp_sess_synch_response(sessp, pdu, &response);
	...
	snmp_sess_close(sessp);

 * See also:
 * snmp_sess_synch_response, in snmp_client.h.

 * Notes:
 *  1. Invoke snmp_sess_session after snmp_sess_open.
 *  2. snmp_sess_session return value is an opaque pointer.
 *  3. Do NOT free memory returned by snmp_sess_session.
 *  4. Replace snmp_send(ss,pdu) with snmp_sess_send(sessp,pdu)
 */

void   snmp_sess_init       (struct snmp_session *);
void * snmp_sess_open       (struct snmp_session *);
struct snmp_session * snmp_sess_session    (void *);

/* use return value from snmp_sess_open as void * parameter */

int    snmp_sess_send       (void *, struct snmp_pdu *);
int    snmp_sess_async_send (void *, struct snmp_pdu *,
                                         snmp_callback, void *);
int    snmp_sess_select_info (void *, int *, fd_set *,
                                         struct timeval *, int *);
int    snmp_sess_read       (void *, fd_set *);
void   snmp_sess_timeout    (void *);
int    snmp_sess_close      (void *);

void   snmp_sess_error      (void *, int *, int *, char **);
void   snmp_sess_perror     (const char *prog_string, struct snmp_session *ss);

/* end single session API */

/* generic statistic counters */

/* snmpv3 statistics */

/* mpd stats */
#define   STAT_SNMPUNKNOWNSECURITYMODELS     0
#define   STAT_SNMPINVALIDMSGS               1
#define   STAT_SNMPUNKNOWNPDUHANDLERS        2
#define   STAT_MPD_STATS_START               STAT_SNMPUNKNOWNSECURITYMODELS
#define   STAT_MPD_STATS_END                 STAT_SNMPUNKNOWNPDUHANDLERS

/* usm stats */
#define   STAT_USMSTATSUNSUPPORTEDSECLEVELS  3
#define   STAT_USMSTATSNOTINTIMEWINDOWS      4
#define   STAT_USMSTATSUNKNOWNUSERNAMES      5
#define   STAT_USMSTATSUNKNOWNENGINEIDS      6
#define   STAT_USMSTATSWRONGDIGESTS          7
#define   STAT_USMSTATSDECRYPTIONERRORS      8
#define   STAT_USM_STATS_START               STAT_USMSTATSUNSUPPORTEDSECLEVELS
#define   STAT_USM_STATS_END                 STAT_USMSTATSDECRYPTIONERRORS

/* snmp counters */
#define  STAT_SNMPINPKTS                     9
#define  STAT_SNMPOUTPKTS                    10
#define  STAT_SNMPINBADVERSIONS              11
#define  STAT_SNMPINBADCOMMUNITYNAMES        12
#define  STAT_SNMPINBADCOMMUNITYUSES         13
#define  STAT_SNMPINASNPARSEERRS             14
/* #define  STAT_SNMPINBADTYPES		     15 */
#define  STAT_SNMPINTOOBIGS                  16
#define  STAT_SNMPINNOSUCHNAMES              17
#define  STAT_SNMPINBADVALUES                18
#define  STAT_SNMPINREADONLYS                19
#define  STAT_SNMPINGENERRS                  20
#define  STAT_SNMPINTOTALREQVARS             21
#define  STAT_SNMPINTOTALSETVARS             22
#define  STAT_SNMPINGETREQUESTS              23
#define  STAT_SNMPINGETNEXTS                 24
#define  STAT_SNMPINSETREQUESTS              25
#define  STAT_SNMPINGETRESPONSES             26
#define  STAT_SNMPINTRAPS                    27
#define  STAT_SNMPOUTTOOBIGS                 28
#define  STAT_SNMPOUTNOSUCHNAMES             29
#define  STAT_SNMPOUTBADVALUES               30
/* #define  STAT_SNMPOUTREADONLYS	     31 */
#define  STAT_SNMPOUTGENERRS                 32
#define  STAT_SNMPOUTGETREQUESTS             33
#define  STAT_SNMPOUTGETNEXTS                34
#define  STAT_SNMPOUTSETREQUESTS             35
#define  STAT_SNMPOUTGETRESPONSES            36
#define  STAT_SNMPOUTTRAPS                   37
/* AUTHTRAPENABLE			     38 */
#define  STAT_SNMPSILENTDROPS		     39
#define  STAT_SNMPPROXYDROPS		     40
#define  STAT_SNMP_STATS_START               STAT_SNMPINPKTS
#define  STAT_SNMP_STATS_END                 STAT_SNMPOUTTRAPS

#define  MAX_STATS                           41

#ifdef __cplusplus
}
#endif

#endif /* SNMP_API_H */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -