blob: 67104eee96a0c21c53efd6e1ff5d2a89fa3c1f4c [file] [log] [blame]
/*
* 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 */