You've already forked mariadb-columnstore-engine
mirror of
https://github.com/mariadb-corporation/mariadb-columnstore-engine.git
synced 2025-11-06 16:09:29 +03:00
267 lines
11 KiB
C
267 lines
11 KiB
C
/* Portions of this file are subject to the following copyright(s). See
|
|
* the Net-SNMP's COPYING file for more details and other copyrights
|
|
* that may apply:
|
|
*/
|
|
/*
|
|
* Portions of this file are copyrighted by:
|
|
* Copyright © 2003 Sun Microsystems, Inc. All rights reserved.
|
|
* Use is subject to license terms specified in the COPYING file
|
|
* distributed with the Net-SNMP package.
|
|
*/
|
|
#ifndef AGENT_HANDLER_H
|
|
#define AGENT_HANDLER_H
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
/** @file agent_handler.h
|
|
*
|
|
* @addtogroup handler
|
|
*
|
|
* @{
|
|
*/
|
|
|
|
struct netsnmp_handler_registration_s;
|
|
|
|
/*
|
|
* per mib handler flags.
|
|
* NOTE: The last 4 bits are reserved for the handler's own use.
|
|
*/
|
|
#define MIB_HANDLER_AUTO_NEXT 0x00000001
|
|
#define MIB_HANDLER_AUTO_NEXT_OVERRIDE_ONCE 0x00000002
|
|
|
|
#define MIB_HANDLER_CUSTOM4 0x10000000
|
|
#define MIB_HANDLER_CUSTOM3 0x20000000
|
|
#define MIB_HANDLER_CUSTOM2 0x40000000
|
|
#define MIB_HANDLER_CUSTOM1 0x80000000
|
|
|
|
|
|
/** @typedef struct netsnmp_mib_handler_s netsnmp_mib_handler
|
|
* Typedefs the netsnmp_mib_handler_s struct into netsnmp_mib_handler */
|
|
|
|
/** @struct netsnmp_mib_handler_s
|
|
* the mib handler structure to be registered
|
|
*/
|
|
typedef struct netsnmp_mib_handler_s {
|
|
char *handler_name;
|
|
/** for handler's internal use */
|
|
void *myvoid;
|
|
/** for agent_handler's internal use */
|
|
int flags;
|
|
|
|
/** if you add more members, you probably also want to update */
|
|
/** _clone_handler in snmp_agent.c. */
|
|
|
|
int (*access_method) (struct netsnmp_mib_handler_s *,
|
|
struct
|
|
netsnmp_handler_registration_s *,
|
|
struct
|
|
netsnmp_agent_request_info_s *,
|
|
struct netsnmp_request_info_s *);
|
|
|
|
struct netsnmp_mib_handler_s *next;
|
|
struct netsnmp_mib_handler_s *prev;
|
|
} netsnmp_mib_handler;
|
|
|
|
/*
|
|
* per registration flags
|
|
*/
|
|
#define HANDLER_CAN_GETANDGETNEXT 0x01 /* must be able to do both */
|
|
#define HANDLER_CAN_SET 0x02 /* implies create, too */
|
|
#define HANDLER_CAN_GETBULK 0x04
|
|
#define HANDLER_CAN_NOT_CREATE 0x08 /* auto set if ! CAN_SET */
|
|
#define HANDLER_CAN_BABY_STEP 0x10
|
|
|
|
|
|
#define HANDLER_CAN_RONLY (HANDLER_CAN_GETANDGETNEXT)
|
|
#define HANDLER_CAN_RWRITE (HANDLER_CAN_GETANDGETNEXT | HANDLER_CAN_SET)
|
|
#define HANDLER_CAN_SET_ONLY (HANDLER_CAN_SET | HANDLER_CAN_NOT_CREATE)
|
|
#define HANDLER_CAN_DEFAULT (HANDLER_CAN_RONLY | HANDLER_CAN_NOT_CREATE)
|
|
|
|
/** @typedef struct netsnmp_handler_registration_s netsnmp_handler_registration
|
|
* Typedefs the netsnmp_handler_registration_s struct into netsnmp_handler_registration */
|
|
|
|
/** @struct netsnmp_handler_registration_s
|
|
* Root registration info.
|
|
* The variables handlerName, contextName, and rootoid need to be allocated
|
|
* on the heap, when the registration structure is unregistered using
|
|
* unregister_mib_context() the code attempts to free them.
|
|
*/
|
|
typedef struct netsnmp_handler_registration_s {
|
|
|
|
/** for mrTable listings, and other uses */
|
|
char *handlerName;
|
|
/** NULL = default context */
|
|
char *contextName;
|
|
|
|
/**
|
|
* where are we registered at?
|
|
*/
|
|
oid *rootoid;
|
|
size_t rootoid_len;
|
|
|
|
/**
|
|
* handler details
|
|
*/
|
|
netsnmp_mib_handler *handler;
|
|
int modes;
|
|
|
|
/**
|
|
* more optional stuff
|
|
*/
|
|
int priority;
|
|
int range_subid;
|
|
oid range_ubound;
|
|
int timeout;
|
|
int global_cacheid;
|
|
|
|
/**
|
|
* void ptr for registeree
|
|
*/
|
|
void * my_reg_void;
|
|
|
|
} netsnmp_handler_registration;
|
|
|
|
/*
|
|
* function handler definitions
|
|
*/
|
|
|
|
typedef int (Netsnmp_Node_Handler) (netsnmp_mib_handler *handler,
|
|
/** pointer to registration struct */
|
|
netsnmp_handler_registration *reginfo,
|
|
/** pointer to current transaction */
|
|
netsnmp_agent_request_info *reqinfo,
|
|
netsnmp_request_info *requests);
|
|
|
|
typedef struct netsnmp_handler_args_s {
|
|
netsnmp_mib_handler *handler;
|
|
netsnmp_handler_registration *reginfo;
|
|
netsnmp_agent_request_info *reqinfo;
|
|
netsnmp_request_info *requests;
|
|
} netsnmp_handler_args;
|
|
|
|
typedef struct netsnmp_delegated_cache_s {
|
|
int transaction_id;
|
|
netsnmp_mib_handler *handler;
|
|
netsnmp_handler_registration *reginfo;
|
|
netsnmp_agent_request_info *reqinfo;
|
|
netsnmp_request_info *requests;
|
|
void *localinfo;
|
|
} netsnmp_delegated_cache;
|
|
|
|
/*
|
|
* handler API functions
|
|
*/
|
|
void netsnmp_init_handler_conf(void);
|
|
int netsnmp_register_handler(netsnmp_handler_registration
|
|
*reginfo);
|
|
int netsnmp_unregister_handler(netsnmp_handler_registration
|
|
*reginfo);
|
|
int
|
|
netsnmp_register_handler_nocallback(netsnmp_handler_registration
|
|
*reginfo);
|
|
int netsnmp_inject_handler(netsnmp_handler_registration
|
|
*reginfo,
|
|
netsnmp_mib_handler *handler);
|
|
int
|
|
netsnmp_inject_handler_before(netsnmp_handler_registration *reginfo,
|
|
netsnmp_mib_handler *handler,
|
|
const char *before_what);
|
|
netsnmp_mib_handler
|
|
*netsnmp_find_handler_by_name(netsnmp_handler_registration
|
|
*reginfo, const char *name);
|
|
void
|
|
*netsnmp_find_handler_data_by_name(netsnmp_handler_registration
|
|
*reginfo, const char *name);
|
|
int netsnmp_call_handlers(netsnmp_handler_registration
|
|
*reginfo,
|
|
netsnmp_agent_request_info
|
|
*reqinfo,
|
|
netsnmp_request_info *requests);
|
|
int netsnmp_call_handler(netsnmp_mib_handler *next_handler,
|
|
netsnmp_handler_registration
|
|
*reginfo,
|
|
netsnmp_agent_request_info
|
|
*reqinfo,
|
|
netsnmp_request_info *requests);
|
|
int netsnmp_call_next_handler(netsnmp_mib_handler *current,
|
|
netsnmp_handler_registration
|
|
*reginfo,
|
|
netsnmp_agent_request_info
|
|
*reqinfo,
|
|
netsnmp_request_info
|
|
*requests);
|
|
int netsnmp_call_next_handler_one_request(netsnmp_mib_handler *current,
|
|
netsnmp_handler_registration *reginfo,
|
|
netsnmp_agent_request_info *reqinfo,
|
|
netsnmp_request_info *requests);
|
|
|
|
netsnmp_mib_handler *netsnmp_create_handler(const char *name,
|
|
Netsnmp_Node_Handler *
|
|
handler_access_method);
|
|
netsnmp_handler_registration *
|
|
netsnmp_handler_registration_create(const char *name,
|
|
netsnmp_mib_handler *handler,
|
|
oid * reg_oid, size_t reg_oid_len,
|
|
int modes);
|
|
netsnmp_handler_registration *
|
|
netsnmp_create_handler_registration(const char *name, Netsnmp_Node_Handler*
|
|
handler_access_method, oid *reg_oid,
|
|
size_t reg_oid_len, int modes);
|
|
|
|
NETSNMP_INLINE netsnmp_delegated_cache
|
|
*netsnmp_create_delegated_cache(netsnmp_mib_handler *,
|
|
netsnmp_handler_registration *,
|
|
netsnmp_agent_request_info *,
|
|
netsnmp_request_info *, void *);
|
|
NETSNMP_INLINE void netsnmp_free_delegated_cache(netsnmp_delegated_cache
|
|
*dcache);
|
|
NETSNMP_INLINE netsnmp_delegated_cache
|
|
*netsnmp_handler_check_cache(netsnmp_delegated_cache *dcache);
|
|
void netsnmp_register_handler_by_name(const char *,
|
|
netsnmp_mib_handler
|
|
*);
|
|
|
|
void netsnmp_clear_handler_list(void);
|
|
|
|
NETSNMP_INLINE void
|
|
netsnmp_request_add_list_data(netsnmp_request_info *request,
|
|
netsnmp_data_list *node);
|
|
|
|
NETSNMP_INLINE int
|
|
netsnmp_request_remove_list_data(netsnmp_request_info *request,
|
|
const char *name);
|
|
|
|
NETSNMP_INLINE void *netsnmp_request_get_list_data(netsnmp_request_info
|
|
*request,
|
|
const char *name);
|
|
|
|
NETSNMP_INLINE void
|
|
netsnmp_free_request_data_set(netsnmp_request_info *request);
|
|
|
|
NETSNMP_INLINE void
|
|
netsnmp_free_request_data_sets(netsnmp_request_info *request);
|
|
|
|
void netsnmp_handler_free(netsnmp_mib_handler *);
|
|
netsnmp_mib_handler *netsnmp_handler_dup(netsnmp_mib_handler *);
|
|
netsnmp_handler_registration
|
|
*netsnmp_handler_registration_dup(netsnmp_handler_registration *);
|
|
void
|
|
netsnmp_handler_registration_free(netsnmp_handler_registration *);
|
|
|
|
#define REQUEST_IS_DELEGATED 1
|
|
#define REQUEST_IS_NOT_DELEGATED 0
|
|
void
|
|
netsnmp_handler_mark_requests_as_delegated(netsnmp_request_info *,
|
|
int);
|
|
void *netsnmp_handler_get_parent_data(netsnmp_request_info *,
|
|
const char *);
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
|
|
#endif /* AGENT_HANDLER_H */
|
|
/** @} */
|