snmp_api.h

来自「eCos操作系统源码」· C头文件 代码 · 共 857 行 · 第 1/3 页

H
857
字号
	 */    u_char  *community;	        /* community for outgoing requests. */    size_t  community_len;      /* Length of community name. */	/*	 * SNMPv3 fields	 */    u_char  *contextEngineID;	/* authoritative snmpEngineID */    size_t  contextEngineIDLen; /* Length of contextEngineID */    u_int   engineBoots;        /* initial engineBoots for remote engine */    u_int   engineTime;         /* initial engineTime for remote engine */    char    *contextName;	/* authoritative contextName */    size_t  contextNameLen;     /* Length of contextName */    u_char  *securityEngineID;	/* authoritative snmpEngineID */    size_t  securityEngineIDLen;  /* Length of contextEngineID */    char    *securityName;	/* on behalf of this principal */    size_t  securityNameLen;    /* Length of securityName. */    oid     *securityAuthProto; /* auth protocol oid */    size_t  securityAuthProtoLen; /* Length of auth protocol oid */    u_char  securityAuthKey[USM_AUTH_KU_LEN];  /* Ku for auth protocol XXX */    size_t  securityAuthKeyLen; /* Length of Ku for auth protocol */    oid     *securityPrivProto; /* priv protocol oid */    size_t  securityPrivProtoLen; /* Length of priv protocol oid */    u_char  securityPrivKey[USM_PRIV_KU_LEN];  /* Ku for privacy protocol XXX */    size_t  securityPrivKeyLen; /* Length of Ku for priv protocol */    int	    securityModel;    int	    securityLevel;  /* noAuthNoPriv, authNoPriv, authPriv */};/* * A list of all the outstanding requests for a particular session. */#ifdef SNMP_NEED_REQUEST_LISTstruct request_list {    struct request_list *next_request;    long  request_id;	/* request id */    long  message_id;	/* message id */    snmp_callback callback; /* user callback per request (NULL if unused) */    void   *cb_data;   /* user callback data per request (NULL if unused) */    int	    retries;	/* Number of retries */    u_long timeout;	/* length to wait for timeout */    struct timeval time; /* Time this request was made */    struct timeval expire;  /* time this request is due to expire */    struct  snmp_session *session;    struct snmp_pdu *pdu;   /* The pdu for this request			       (saved so it can be retransmitted */};#endif /* SNMP_NEED_REQUEST_LIST *//* * Set fields in session and pdu to the following to get a default or unconfigured value. */#define SNMP_DEFAULT_COMMUNITY_LEN  0	/* to get a default community name */#define SNMP_DEFAULT_RETRIES	    -1#define SNMP_DEFAULT_TIMEOUT	    -1#define SNMP_DEFAULT_REMPORT	    0#define SNMP_DEFAULT_REQID	    -1#define SNMP_DEFAULT_MSGID	    -1#define SNMP_DEFAULT_ERRSTAT	    -1#define SNMP_DEFAULT_ERRINDEX	    -1#define SNMP_DEFAULT_ADDRESS	    0#define SNMP_DEFAULT_PEERNAME	    NULL#define SNMP_DEFAULT_ENTERPRISE_LENGTH	0#define SNMP_DEFAULT_TIME	    0#define SNMP_DEFAULT_VERSION	    -1#define SNMP_DEFAULT_CONTEXT        ""#define SNMP_DEFAULT_AUTH_PROTO     usmHMACMD5AuthProtocol#define SNMP_DEFAULT_AUTH_PROTOLEN  USM_LENGTH_OID_TRANSFORM#define SNMP_DEFAULT_PRIV_PROTO     usmDESPrivProtocol#define SNMP_DEFAULT_PRIV_PROTOLEN  USM_LENGTH_OID_TRANSFORMextern const char *snmp_api_errstring (int);extern void snmp_perror (const char *);extern void snmp_set_detail (const char *);#define SNMP_MAX_MSG_SIZE          1472 /* ethernet MTU minus IP/UDP header */#define SNMP_MAX_ENG_SIZE          32#define SNMP_MAX_SEC_NAME_SIZE     256#define SNMP_MAX_SEC_NAME_SIZE     256#define SNMP_MAX_CONTEXT_SIZE      256#define SNMP_SEC_PARAM_BUF_SIZE     256/* set to one to ignore unauthenticated Reports */#define SNMPV3_IGNORE_UNAUTH_REPORTS 0/* to determine type of Report from varbind_list */#define REPORT_STATS_LEN 9#define REPORT_snmpUnknownSecurityModels_NUM 1#define REPORT_snmpInvalidMsgs_NUM 2#define REPORT_usmStatsUnsupportedSecLevels_NUM 1#define REPORT_usmStatsNotInTimeWindows_NUM 2#define REPORT_usmStatsUnknownUserNames_NUM 3#define REPORT_usmStatsUnknownEngineIDs_NUM 4 #define REPORT_usmStatsWrongDigests_NUM 5#define REPORT_usmStatsDecryptionErrors_NUM 6#define SNMP_DETAIL_SIZE        512#define SNMP_FLAGS_DONT_PROBE      0x100    /* don't probe for an engineID */#define SNMP_FLAGS_STREAM_SOCKET   0x80#define SNMP_FLAGS_LISTENING       0x40     /* Server stream sockets only */#define SNMP_FLAGS_SUBSESSION      0x20/* * Error return values. * * SNMPERR_SUCCESS is the non-PDU "success" code. * * XXX	These should be merged with SNMP_ERR_* defines and confined *	to values < 0.  ??? */#define SNMPERR_SUCCESS			(0)  /* XXX  Non-PDU "success" code. */#define SNMPERR_GENERR			(-1)#define SNMPERR_BAD_LOCPORT		(-2)#define SNMPERR_BAD_ADDRESS		(-3)#define SNMPERR_BAD_SESSION		(-4)#define SNMPERR_TOO_LONG		(-5)#define SNMPERR_NO_SOCKET		(-6)#define SNMPERR_V2_IN_V1		(-7)#define SNMPERR_V1_IN_V2		(-8)#define SNMPERR_BAD_REPEATERS		(-9)#define SNMPERR_BAD_REPETITIONS		(-10)#define SNMPERR_BAD_ASN1_BUILD		(-11)#define SNMPERR_BAD_SENDTO		(-12)#define SNMPERR_BAD_PARSE		(-13)#define SNMPERR_BAD_VERSION		(-14)#define SNMPERR_BAD_SRC_PARTY		(-15)#define SNMPERR_BAD_DST_PARTY		(-16)#define SNMPERR_BAD_CONTEXT		(-17)#define SNMPERR_BAD_COMMUNITY		(-18)#define SNMPERR_NOAUTH_DESPRIV		(-19)#define SNMPERR_BAD_ACL			(-20)#define SNMPERR_BAD_PARTY		(-21)#define SNMPERR_ABORT			(-22)#define SNMPERR_UNKNOWN_PDU		(-23)#define SNMPERR_TIMEOUT 		(-24)#define SNMPERR_BAD_RECVFROM 		(-25)#define SNMPERR_BAD_ENG_ID 		(-26)#define SNMPERR_BAD_SEC_NAME 		(-27)#define SNMPERR_BAD_SEC_LEVEL 		(-28)#define SNMPERR_ASN_PARSE_ERR           (-29)#define SNMPERR_UNKNOWN_SEC_MODEL 	(-30)#define SNMPERR_INVALID_MSG             (-31)#define SNMPERR_UNKNOWN_ENG_ID          (-32)#define SNMPERR_UNKNOWN_USER_NAME 	(-33)#define SNMPERR_UNSUPPORTED_SEC_LEVEL 	(-34)#define SNMPERR_AUTHENTICATION_FAILURE 	(-35)#define SNMPERR_NOT_IN_TIME_WINDOW 	(-36)#define SNMPERR_DECRYPTION_ERR          (-37)#define SNMPERR_SC_GENERAL_FAILURE	(-38)#define SNMPERR_SC_NOT_CONFIGURED	(-39)#define SNMPERR_KT_NOT_AVAILABLE	(-40)#define SNMPERR_UNKNOWN_REPORT          (-41)#define SNMPERR_USM_GENERICERROR		(-42)#define SNMPERR_USM_UNKNOWNSECURITYNAME		(-43)#define SNMPERR_USM_UNSUPPORTEDSECURITYLEVEL	(-44)#define SNMPERR_USM_ENCRYPTIONERROR		(-45)#define SNMPERR_USM_AUTHENTICATIONFAILURE	(-46)#define SNMPERR_USM_PARSEERROR			(-47)#define SNMPERR_USM_UNKNOWNENGINEID		(-48)#define SNMPERR_USM_NOTINTIMEWINDOW		(-49)#define SNMPERR_USM_DECRYPTIONERROR		(-50)#define SNMPERR_NOMIB			(-51)#define SNMPERR_RANGE			(-52)#define SNMPERR_MAX_SUBID		(-53)#define SNMPERR_BAD_SUBID		(-54)#define SNMPERR_LONG_OID		(-55)#define SNMPERR_BAD_NAME		(-56)#define SNMPERR_VALUE			(-57)#define SNMPERR_UNKNOWN_OBJID		(-58)#define SNMPERR_NULL_PDU		(-59)#define SNMPERR_NO_VARS			(-60)#define SNMPERR_VAR_TYPE		(-61)#define SNMPERR_MALLOC			(-62)#define SNMPERR_MAX			(-62)#define non_repeaters	errstat#define max_repetitions errindexstruct variable_list {    struct variable_list *next_variable;    /* NULL for last variable */    oid	    *name;  /* Object identifier of variable */    size_t  name_length;    /* number of subid's in name */    u_char  type;   /* ASN type of variable */    union { /* value of variable */	long	*integer;	u_char	*string;	oid	*objid;	u_char  *bitstring;	struct counter64 *counter64;#ifdef OPAQUE_SPECIAL_TYPES	float   *floatVal;	double	*doubleVal;/*	t_union *unionVal; */#endif /* OPAQUE_SPECIAL_TYPES */    } val;    size_t	    val_len;    oid name_loc[MAX_OID_LEN];  /* 90 percentile < 24. */    u_char buf[40];             /* 90 percentile < 40. */};/* * struct snmp_session *snmp_open(session) *	struct snmp_session *session; * * Sets up the session with the snmp_session information provided * by the user.  Then opens and binds the necessary UDP port. * A handle to the created session is returned (this is different than * the pointer passed to snmp_open()).  On any error, NULL is returned * and snmp_errno is set to the appropriate error code. */struct snmp_session *snmp_open (struct snmp_session *);/* * int snmp_close(session) *     struct snmp_session *session; * * Close the input session.  Frees all data allocated for the session, * dequeues any pending requests, and closes any sockets allocated for * the session.  Returns 0 on error, 1 otherwise. * * snmp_close_sessions() does the same thing for all open sessions */int snmp_close (struct snmp_session *);int snmp_close_sessions (void);/* * int snmp_send(session, pdu) *     struct snmp_session *session; *     struct snmp_pdu	*pdu; * * Sends the input pdu on the session after calling snmp_build to create * a serialized packet.  If necessary, set some of the pdu data from the * session defaults.  Add a request corresponding to this pdu to the list * of outstanding requests on this session, then send the pdu. * Returns the request id of the generated packet if applicable, otherwise 1. * On any error, 0 is returned. * The pdu is freed by snmp_send() unless a failure occured. */int snmp_send (struct snmp_session *, struct snmp_pdu *);/* * int snmp_async_send(session, pdu, callback, cb_data) *     struct snmp_session *session; *     struct snmp_pdu	*pdu; *     snmp_callback callback; *     void   *cb_data; * * Sends the input pdu on the session after calling snmp_build to create * a serialized packet.  If necessary, set some of the pdu data from the * session defaults.  Add a request corresponding to this pdu to the list * of outstanding requests on this session and store callback and data, * then send the pdu. * Returns the request id of the generated packet if applicable, otherwise 1. * On any error, 0 is returned. * The pdu is freed by snmp_send() unless a failure occured. */int snmp_async_send (struct snmp_session *, struct snmp_pdu *,                          snmp_callback, void *);/* * void snmp_read(fdset) *     fd_set  *fdset; * * Checks to see if any of the fd's set in the fdset belong to * snmp.  Each socket with it's fd set has a packet read from it * and snmp_parse is called on the packet received.  The resulting pdu * is passed to the callback routine for that session.  If the callback * routine returns successfully, the pdu and it's request are deleted. */void snmp_read (fd_set *);/* * void * snmp_free_pdu(pdu) *     struct snmp_pdu *pdu; * * Frees the pdu and any malloc'd data associated with it. */

⌨️ 快捷键说明

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