/* * watcher.h */ #ifndef NETSNMP_WATCHER_H #define NETSNMP_WATCHER_H #ifdef __cplusplus extern "C" { #endif /** @ingroup watcher * @{ */ /* * if handler flag has this bit set, the timestamp will be * treated as a pointer to the timestamp. If this bit is * not set (the default), the timestamp is a struct timeval * that must be compared to the agent starttime. */ #define NETSNMP_WATCHER_DIRECT MIB_HANDLER_CUSTOM1 /** The size of the watched object is constant. * @hideinitializer */ #define WATCHER_FIXED_SIZE 0x01 /** The maximum size of the watched object is stored in max_size. * If WATCHER_SIZE_STRLEN is set then it is supposed that max_size + 1 * bytes could be stored in the buffer. * @hideinitializer */ #define WATCHER_MAX_SIZE 0x02 /** If set then the variable data_size_p points to is supposed to hold the * current size of the watched object and will be updated on writes. * @hideinitializer * @since Net-SNMP 5.5 */ #define WATCHER_SIZE_IS_PTR 0x04 /** If set then data is suppposed to be a zero-terminated character array * and both data_size and data_size_p are ignored. Additionally \\0 is a * forbidden character in the data set. * @hideinitializer * @since Net-SNMP 5.5 */ #define WATCHER_SIZE_STRLEN 0x08 /** If set then size is in units of object identifiers. * This is useful if you have an OID and tracks the OID_LENGTH of it as * opposed to it's size. * @hideinitializer * @since Net-SNMP 5.5.1 */ #define WATCHER_SIZE_UNIT_OIDS 0x10 typedef struct netsnmp_watcher_info_s { void *data; size_t data_size; size_t max_size; u_char type; int flags; size_t *data_size_p; } netsnmp_watcher_info; /** @} */ int netsnmp_register_watched_instance( netsnmp_handler_registration *reginfo, netsnmp_watcher_info *winfo); int netsnmp_register_watched_instance2(netsnmp_handler_registration *reginfo, netsnmp_watcher_info *winfo); int netsnmp_register_watched_scalar( netsnmp_handler_registration *reginfo, netsnmp_watcher_info *winfo); int netsnmp_register_watched_scalar2( netsnmp_handler_registration *reginfo, netsnmp_watcher_info *winfo); int netsnmp_register_watched_timestamp(netsnmp_handler_registration *reginfo, marker_t timestamp); int netsnmp_watched_timestamp_register(netsnmp_mib_handler *whandler, netsnmp_handler_registration *reginfo, marker_t timestamp); int netsnmp_register_watched_spinlock(netsnmp_handler_registration *reginfo, int *spinlock); /* * Convenience registration calls */ int netsnmp_register_ulong_scalar(const char *name, const oid * reg_oid, size_t reg_oid_len, u_long * it, Netsnmp_Node_Handler * subhandler); int netsnmp_register_read_only_ulong_scalar(const char *name, const oid * reg_oid, size_t reg_oid_len, u_long * it, Netsnmp_Node_Handler * subhandler); int netsnmp_register_long_scalar(const char *name, const oid * reg_oid, size_t reg_oid_len, long * it, Netsnmp_Node_Handler * subhandler); int netsnmp_register_read_only_long_scalar(const char *name, const oid * reg_oid, size_t reg_oid_len, long * it, Netsnmp_Node_Handler * subhandler); int netsnmp_register_int_scalar(const char *name, const oid * reg_oid, size_t reg_oid_len, int * it, Netsnmp_Node_Handler * subhandler); int netsnmp_register_read_only_int_scalar(const char *name, const oid * reg_oid, size_t reg_oid_len, int * it, Netsnmp_Node_Handler * subhandler); int netsnmp_register_read_only_counter32_scalar(const char *name, const oid * reg_oid, size_t reg_oid_len, u_long * it, Netsnmp_Node_Handler * subhandler); #define WATCHER_HANDLER_NAME "watcher" netsnmp_mib_handler *netsnmp_get_watcher_handler(void); netsnmp_watcher_info * netsnmp_init_watcher_info(netsnmp_watcher_info *, void *, size_t, u_char, int); netsnmp_watcher_info * netsnmp_init_watcher_info6(netsnmp_watcher_info *, void *, size_t, u_char, int, size_t, size_t*); netsnmp_watcher_info * netsnmp_create_watcher_info(void *, size_t, u_char, int); netsnmp_watcher_info * netsnmp_create_watcher_info6(void *, size_t, u_char, int, size_t, size_t*); netsnmp_watcher_info * netsnmp_clone_watcher_info(netsnmp_watcher_info *winfo); void netsnmp_owns_watcher_info(netsnmp_mib_handler *handler); Netsnmp_Node_Handler netsnmp_watcher_helper_handler; netsnmp_mib_handler *netsnmp_get_watched_timestamp_handler(void); Netsnmp_Node_Handler netsnmp_watched_timestamp_handler; netsnmp_mib_handler *netsnmp_get_watched_spinlock_handler(void); Netsnmp_Node_Handler netsnmp_watched_spinlock_handler; #ifdef __cplusplus } #endif #endif /** NETSNMP_WATCHER_H */