📄 snmp_secmod.h
字号:
#ifndef SNMPSECMOD_H#define SNMPSECMOD_H#ifdef __cplusplusextern "C" {#endif#include <net-snmp/library/snmp_transport.h>/* Locally defined security models. * (Net-SNMP enterprise number = 8072)*256 + local_num */#define NETSNMP_KSM_SECURITY_MODEL 2066432#define NETSNMP_LOCALSM_SECURITY_MODEL 2066433struct snmp_secmod_def;/* * parameter information passed to security model routines */struct snmp_secmod_outgoing_params { int msgProcModel; u_char *globalData; size_t globalDataLen; int maxMsgSize; int secModel; u_char *secEngineID; size_t secEngineIDLen; char *secName; size_t secNameLen; int secLevel; u_char *scopedPdu; size_t scopedPduLen; void *secStateRef; u_char *secParams; size_t *secParamsLen; u_char **wholeMsg; size_t *wholeMsgLen; size_t *wholeMsgOffset; netsnmp_pdu *pdu; /* IN - the pdu getting encoded */ netsnmp_session *session; /* IN - session sending the message */};struct snmp_secmod_incoming_params { int msgProcModel; /* IN */ size_t maxMsgSize; /* IN - Used to calc maxSizeResponse. */ u_char *secParams; /* IN - BER encoded securityParameters. */ int secModel; /* IN */ int secLevel; /* IN - AuthNoPriv; authPriv etc. */ u_char *wholeMsg; /* IN - Original v3 message. */ size_t wholeMsgLen; /* IN - Msg length. */ u_char *secEngineID; /* OUT - Pointer snmpEngineID. */ size_t *secEngineIDLen; /* IN/OUT - Len available; len returned. */ /* * NOTE: Memory provided by caller. */ char *secName; /* OUT - Pointer to securityName. */ size_t *secNameLen; /* IN/OUT - Len available; len returned. */ u_char **scopedPdu; /* OUT - Pointer to plaintext scopedPdu. */ size_t *scopedPduLen; /* IN/OUT - Len available; len returned. */ size_t *maxSizeResponse; /* OUT - Max size of Response PDU. */ void **secStateRef; /* OUT - Ref to security state. */ netsnmp_session *sess; /* IN - session which got the message */ netsnmp_pdu *pdu; /* IN - the pdu getting parsed */ u_char msg_flags; /* IN - v3 Message flags. */};/* * function pointers: *//* * free's a given security module's data; called at unregistration time */typedef int (SecmodSessionCallback) (netsnmp_session *);typedef int (SecmodPduCallback) (netsnmp_pdu *);typedef int (Secmod2PduCallback) (netsnmp_pdu *, netsnmp_pdu *);typedef int (SecmodOutMsg) (struct snmp_secmod_outgoing_params *);typedef int (SecmodInMsg) (struct snmp_secmod_incoming_params *);typedef void (SecmodFreeState) (void *);typedef void (SecmodHandleReport) (void *sessp, netsnmp_transport *transport, netsnmp_session *, int result, netsnmp_pdu *origpdu);/* * definition of a security module *//* * all of these callback functions except the encoding and decoding * routines are optional. The rest of them are available if need. */struct snmp_secmod_def { /* * session maniplation functions */ SecmodSessionCallback *session_open; /* called in snmp_sess_open() */ SecmodSessionCallback *session_close; /* called in snmp_sess_close() */ /* * pdu manipulation routines */ SecmodPduCallback *pdu_free; /* called in free_pdu() */ Secmod2PduCallback *pdu_clone; /* called in snmp_clone_pdu() */ SecmodPduCallback *pdu_timeout; /* called when request timesout */ SecmodFreeState *pdu_free_state_ref; /* frees pdu->securityStateRef */ /* * de/encoding routines: mandatory */ SecmodOutMsg *encode_reverse; /* encode packet back to front */ SecmodOutMsg *encode_forward; /* encode packet forward */ SecmodInMsg *decode; /* decode & validate incoming */ /* * error and report handling */ SecmodHandleReport *handle_report;};/* * internal list */struct snmp_secmod_list { int securityModel; struct snmp_secmod_def *secDef; struct snmp_secmod_list *next;};/* * register a security service */int register_sec_mod(int, const char *, struct snmp_secmod_def *);/* * find a security service definition */struct snmp_secmod_def *find_sec_mod(int);/* * register a security service */int unregister_sec_mod(int); /* register a security service */void init_secmod(void);/* * clears the sec_mod list */void clear_sec_mod(void);#ifdef __cplusplus}#endif#endif /* SNMPSECMOD_H */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -