📄 snmp_api.h
字号:
*/
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_LIST
struct 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_TRANSFORM
extern 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 errindex
struct 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 + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -