diff options
Diffstat (limited to 'include/net-snmp/output_api.h')
-rw-r--r-- | include/net-snmp/output_api.h | 157 |
1 files changed, 157 insertions, 0 deletions
diff --git a/include/net-snmp/output_api.h b/include/net-snmp/output_api.h new file mode 100644 index 0000000..3bf3172 --- /dev/null +++ b/include/net-snmp/output_api.h @@ -0,0 +1,157 @@ +#ifndef NET_SNMP_OUTPUT_API_H +#define NET_SNMP_OUTPUT_API_H + + /** + * Library API routines concerned with logging and message output + * (including error handling and debugging). + */ + +#include <net-snmp/types.h> +#include <stdarg.h> /* for va_list */ + +#ifdef __cplusplus +extern "C" { +#endif + + /* Error reporting */ + NETSNMP_IMPORT + void snmp_error(netsnmp_session *sess, int *clib_errorno, + int *snmp_errorno, char **errstring); + NETSNMP_IMPORT + void snmp_sess_error( void *sess, int *clib_errorno, + int *snmp_errorno, char **errstring); + + NETSNMP_IMPORT + const char *snmp_api_errstring(int snmp_errorno); /* library errors */ + NETSNMP_IMPORT + const char *snmp_errstring(int snmp_errorno); /* protocol errors */ + + NETSNMP_IMPORT + void snmp_perror(const char *msg); /* for parsing errors only */ + + NETSNMP_IMPORT + void snmp_sess_perror(const char *msg, netsnmp_session *sess); + /* for all other SNMP library errors */ + NETSNMP_IMPORT + void snmp_log_perror(const char *msg); + /* for system library errors */ + + /* Logging messages */ + +#if !defined(__GNUC__) || __GNUC__ < 2 || (__GNUC__ == 2 && __GNUC_MINOR__ < 8) +#define _LOG_ATTR +#else +#define _LOG_ATTR __attribute__ ((__format__ (__printf__, 2, 3))) +#endif + + NETSNMP_IMPORT + int snmp_log( int priority, const char *format, ...) _LOG_ATTR; + NETSNMP_IMPORT + int snmp_vlog(int priority, const char *format, va_list ap); + NETSNMP_IMPORT + int snmp_get_do_logging( void); + NETSNMP_IMPORT + void netsnmp_logging_restart(void); + NETSNMP_IMPORT + void snmp_disable_log( void); + NETSNMP_IMPORT + void shutdown_snmp_logging( void); + +#undef _LOG_ATTR + + /* Debug messages */ +#ifndef NETSNMP_NO_DEBUGGING +#include <net-snmp/library/snmp_debug.h> /* for internal macros */ +#define DEBUGMSG(x) do {if (_DBG_IF_) {debugmsg x;} }while(0) +#define DEBUGMSGT(x) do {if (_DBG_IF_) {__DBGMSGT(x);} }while(0) +#define DEBUGTRACE do {if (_DBG_IF_) {__DBGTRACE;} }while(0) +#define DEBUGTRACETOK(x) do {if (_DBG_IF_) {__DBGTRACETOK(x);} }while(0) +#define DEBUGMSGL(x) do {if (_DBG_IF_) {__DBGMSGL(x);} }while(0) +#define DEBUGMSGTL(x) do {if (_DBG_IF_) {__DBGMSGTL(x);} }while(0) +#define DEBUGMSGOID(x) do {if (_DBG_IF_) {__DBGMSGOID(x);} }while(0) +#define DEBUGMSGSUBOID(x) do {if (_DBG_IF_) {__DBGMSGSUBOID(x);} }while(0) +#define DEBUGMSGVAR(x) do {if (_DBG_IF_) {__DBGMSGVAR(x);} }while(0) +#define DEBUGMSGOIDRANGE(x) do {if (_DBG_IF_) {__DBGMSGOIDRANGE(x);} }while(0) +#define DEBUGMSGHEX(x) do {if (_DBG_IF_) {__DBGMSGHEX(x);} }while(0) +#define DEBUGMSGHEXTLI(x) do {if (_DBG_IF_) {__DBGMSGHEXTLI(x);} }while(0) +#define DEBUGINDENTADD(x) do {if (_DBG_IF_) {__DBGINDENTADD(x);} }while(0) +#define DEBUGINDENTMORE() do {if (_DBG_IF_) {__DBGINDENTMORE();} }while(0) +#define DEBUGINDENTLESS() do {if (_DBG_IF_) {__DBGINDENTLESS();} }while(0) +#define DEBUGPRINTINDENT(token) \ + do {if (_DBG_IF_) {__DBGPRINTINDENT(token);} }while(0) +#define DEBUGDUMPHEADER(token,x) \ + do {if (_DBG_IF_) {__DBGDUMPHEADER(token,x);} }while(0) +#define DEBUGDUMPSECTION(token,x) \ + do {if (_DBG_IF_) {__DBGDUMPSECTION(token,x);} }while(0) +#define DEBUGDUMPSETUP(token,buf,len) \ + do {if (_DBG_IF_) {__DBGDUMPSETUP(token,buf,len);} }while(0) +#define DEBUGMSG_NC(x) do { __DBGMSG_NC(x); }while(0) +#define DEBUGMSGT_NC(x) do { __DBGMSGT_NC(x); }while(0) + +#else /* NETSNMP_NO_DEBUGGING := enable streamlining of the code */ + +#define DEBUGMSG(x) +#define DEBUGMSGT(x) +#define DEBUGTRACE +#define DEBUGTRACETOK(x) +#define DEBUGMSGL(x) +#define DEBUGMSGTL(x) +#define DEBUGMSGOID(x) +#define DEBUGMSGSUBOID(x) +#define DEBUGMSGVAR(x) +#define DEBUGMSGOIDRANGE(x) +#define DEBUGMSGHEX(x) +#define DEBUGIF(x) if(0) +#define DEBUGDUMP(t,b,l,p) +#define DEBUGINDENTMORE() +#define DEBUGINDENTLESS() +#define DEBUGINDENTADD(x) +#define DEBUGMSGHEXTLI(x) +#define DEBUGPRINTINDENT(token) +#define DEBUGDUMPHEADER(token,x) +#define DEBUGDUMPSECTION(token,x) +#define DEBUGDUMPSETUP(token, buf, len) + +#define DEBUGMSG_NC(x) +#define DEBUGMSGT_NC(x) + +#endif /* NETSNMP_NO_DEBUGGING */ + + NETSNMP_IMPORT + void debug_register_tokens(const char *tokens); + NETSNMP_IMPORT + int debug_is_token_registered(const char *token); + NETSNMP_IMPORT + void snmp_set_do_debugging(int); + NETSNMP_IMPORT + int snmp_get_do_debugging(void); + + /* + * Having extracted the main ("public API") calls relevant + * to this area of the Net-SNMP project, the next step is to + * identify the related "public internal API" routines. + * + * In due course, these should probably be gathered + * together into a companion 'library/output_api.h' header file. + * [Or some suitable name] + * + * But for the time being, the expectation is that the + * traditional headers that provided the above definitions + * will probably also cover the relevant internal API calls. + * Hence they are listed here: + */ + +#ifdef __cplusplus +} +#endif + +#include <net-snmp/library/snmp_api.h> +#include <net-snmp/library/snmp_client.h> +#include <net-snmp/library/snmp_debug.h> +#include <net-snmp/library/snmp_logging.h> + +#ifndef ERROR_MSG +#define ERROR_MSG(string) snmp_set_detail(string) +#endif + +#endif /* NET_SNMP_OUTPUT_API_H */ |