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 + -
显示快捷键?