You've already forked mariadb-columnstore-engine
mirror of
https://github.com/mariadb-corporation/mariadb-columnstore-engine.git
synced 2025-11-05 04:50:35 +03:00
159 lines
5.0 KiB
C
159 lines
5.0 KiB
C
#ifndef SNMPSECMOD_H
|
|
#define SNMPSECMOD_H
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
#include <net-snmp/library/snmp_transport.h>
|
|
|
|
struct 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 */
|