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 int snmp_get_do_logging(void);
00039 void snmp_disable_syslog(void);
00040 void snmp_disable_filelog(void);
00041 void snmp_disable_stderrlog(void);
00042 void snmp_disable_calllog(void);
00043 void snmp_disable_log(void);
00044 void snmp_enable_syslog(void);
00045 void snmp_enable_syslog_ident(const char *ident,
00046 const int facility);
00047 void snmp_enable_filelog(const char *logfilename,
00048 int dont_zero_log);
00049 void snmp_enable_stderrlog(void);
00050 void snmp_enable_calllog(void);
00051
00052 int snmp_stderrlog_status(void);
00053
00054 #if HAVE_STDARG_H
00055 # if !defined(__GNUC__) || __GNUC__ < 2 || (__GNUC__ == 2 && __GNUC_MINOR__ < 8)
00056 int snmp_log(int priority, const char *format, ...);
00057 # else
00058 int snmp_log(int priority, const char *format, ...)
00059 __attribute__ ((__format__ (__printf__, 2, 3)));
00060 # endif
00061 #else
00062 int snmp_log(va_alist);
00063 #endif
00064 int snmp_vlog(int priority, const char *format,
00065 va_list ap);
00066
00067
00068
00069
00070
00071
00072
00073
00074
00075
00076
00077
00078
00079 void snmp_log_perror(const char *s);
00080
00081
00082 #define NETSNMP_LOGHANDLER_STDOUT 1
00083 #define NETSNMP_LOGHANDLER_STDERR 2
00084 #define NETSNMP_LOGHANDLER_FILE 3
00085 #define NETSNMP_LOGHANDLER_SYSLOG 4
00086 #define NETSNMP_LOGHANDLER_CALLBACK 5
00087 #define NETSNMP_LOGHANDLER_NONE 6
00088
00089 int snmp_log_options(char *optarg, int argc, char *const *argv);
00090 void snmp_log_options_usage(const char *lead, FILE *outf);
00091 char *snmp_log_syslogname(const char *syslogname);
00092 typedef struct netsnmp_log_handler_s netsnmp_log_handler;
00093 typedef int (NetsnmpLogHandler)(netsnmp_log_handler*, int, const char *);
00094
00095 NetsnmpLogHandler log_handler_stdouterr;
00096 NetsnmpLogHandler log_handler_file;
00097 NetsnmpLogHandler log_handler_syslog;
00098 NetsnmpLogHandler log_handler_callback;
00099 NetsnmpLogHandler log_handler_null;
00100
00101 struct netsnmp_log_handler_s {
00102 int enabled;
00103 int priority;
00104 int pri_max;
00105 int type;
00106 const char *token;
00107
00108 NetsnmpLogHandler *handler;
00109
00110 int imagic;
00111 void *magic;
00112
00113 netsnmp_log_handler *next, *prev;
00114 };
00115
00116 netsnmp_log_handler *get_logh_head( void );
00117 netsnmp_log_handler *netsnmp_register_loghandler( int type, int pri );
00118 netsnmp_log_handler *netsnmp_find_loghandler( const char *token );
00119 int netsnmp_add_loghandler( netsnmp_log_handler *logh );
00120 int netsnmp_remove_loghandler( netsnmp_log_handler *logh );
00121 int netsnmp_enable_loghandler( const char *token );
00122 int netsnmp_disable_loghandler( const char *token );
00123 void netsnmp_logging_restart(void);
00124 #ifdef __cplusplus
00125 }
00126 #endif
00127 #endif