summaryrefslogtreecommitdiff
path: root/include/net-snmp/output_api.h
diff options
context:
space:
mode:
Diffstat (limited to 'include/net-snmp/output_api.h')
-rw-r--r--include/net-snmp/output_api.h157
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 */