00001 #ifndef SNMP_LOGGING_H
00002 #define SNMP_LOGGING_H
00003
00004 #ifdef __cplusplus
00005 extern "C" {
00006 #endif
00007
00008 #if HAVE_SYSLOG_H
00009 #include <syslog.h>
00010 #endif
00011 #if HAVE_STDARG_H
00012 #include <stdarg.h>
00013 #else
00014 #include <varargs.h>
00015 #endif
00016
00017 #ifndef LOG_ERR
00018 #define LOG_EMERG 0
00019 #define LOG_ALERT 1
00020 #define LOG_CRIT 2
00021 #define LOG_ERR 3
00022 #define LOG_WARNING 4
00023 #define LOG_NOTICE 5
00024 #define LOG_INFO 6
00025 #define LOG_DEBUG 7
00026 #endif
00027
00028 struct snmp_log_message {
00029 int priority;
00030 const char *msg;
00031 };
00032
00033 #ifndef DEFAULT_LOG_ID
00034 #define DEFAULT_LOG_ID "net-snmp"
00035 #endif
00036
00037 void init_snmp_logging(void);
00038 void shutdown_snmp_logging(void);
00039 int snmp_get_do_logging(void);
00040 void snmp_disable_syslog(void);
00041 void snmp_disable_filelog(void);
00042 void snmp_disable_stderrlog(void);
00043 void snmp_disable_calllog(void);
00044 void snmp_disable_log(void);
00045 void snmp_enable_syslog(void);
00046 void snmp_enable_syslog_ident(const char *ident,
00047 const int facility);
00048 void snmp_enable_filelog(const char *logfilename,
00049 int dont_zero_log);
00050 void snmp_enable_stderrlog(void);
00051 void snmp_enable_calllog(void);
00052
00053 int snmp_stderrlog_status(void);
00054
00055 #if HAVE_STDARG_H
00056 # if !defined(__GNUC__) || __GNUC__ < 2 || (__GNUC__ == 2 && __GNUC_MINOR__ < 8)
00057 int snmp_log(int priority, const char *format, ...);
00058 # else
00059 int snmp_log(int priority, const char *format, ...)
00060 __attribute__ ((__format__ (__printf__, 2, 3)));
00061 # endif
00062 #else
00063 int snmp_log(va_alist);
00064 #endif
00065 int snmp_vlog(int priority, const char *format,
00066 va_list ap);
00067
00068
00069
00070
00071
00072
00073
00074
00075
00076
00077
00078
00079
00080 void snmp_log_perror(const char *s);
00081
00082
00083 #define NETSNMP_LOGHANDLER_STDOUT 1
00084 #define NETSNMP_LOGHANDLER_STDERR 2
00085 #define NETSNMP_LOGHANDLER_FILE 3
00086 #define NETSNMP_LOGHANDLER_SYSLOG 4
00087 #define NETSNMP_LOGHANDLER_CALLBACK 5
00088 #define NETSNMP_LOGHANDLER_NONE 6
00089
00090 int snmp_log_options(char *optarg, int argc, char *const *argv);
00091 void snmp_log_options_usage(const char *lead, FILE *outf);
00092 char *snmp_log_syslogname(const char *syslogname);
00093 typedef struct netsnmp_log_handler_s netsnmp_log_handler;
00094 typedef int (NetsnmpLogHandler)(netsnmp_log_handler*, int, const char *);
00095
00096 NetsnmpLogHandler log_handler_stdouterr;
00097 NetsnmpLogHandler log_handler_file;
00098 NetsnmpLogHandler log_handler_syslog;
00099 NetsnmpLogHandler log_handler_callback;
00100 NetsnmpLogHandler log_handler_null;
00101
00102 struct netsnmp_log_handler_s {
00103 int enabled;
00104 int priority;
00105 int pri_max;
00106 int type;
00107 const char *token;
00108
00109 NetsnmpLogHandler *handler;
00110
00111 int imagic;
00112 void *magic;
00113
00114 netsnmp_log_handler *next, *prev;
00115 };
00116
00117 netsnmp_log_handler *get_logh_head( void );
00118 netsnmp_log_handler *netsnmp_register_loghandler( int type, int pri );
00119 netsnmp_log_handler *netsnmp_find_loghandler( const char *token );
00120 int netsnmp_add_loghandler( netsnmp_log_handler *logh );
00121 int netsnmp_remove_loghandler( netsnmp_log_handler *logh );
00122 int netsnmp_enable_loghandler( const char *token );
00123 int netsnmp_disable_loghandler( const char *token );
00124 void netsnmp_logging_restart(void);
00125 #ifdef __cplusplus
00126 }
00127 #endif
00128 #endif