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