net-snmp
5.4.1
|
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 /* system is unusable */ 00019 #define LOG_ALERT 1 /* action must be taken immediately */ 00020 #define LOG_CRIT 2 /* critical conditions */ 00021 #define LOG_ERR 3 /* error conditions */ 00022 #define LOG_WARNING 4 /* warning conditions */ 00023 #define LOG_NOTICE 5 /* normal but significant condition */ 00024 #define LOG_INFO 6 /* informational */ 00025 #define LOG_DEBUG 7 /* debug-level messages */ 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 * 0 - successful message formatting 00069 */ 00070 /* 00071 * -1 - Could not format log-string 00072 */ 00073 /* 00074 * -2 - Could not allocate memory for log-message 00075 */ 00076 /* 00077 * -3 - Log-message too long! 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; /* Also used for filename */ 00108 00109 NetsnmpLogHandler *handler; 00110 00111 int imagic; /* E.g. file descriptor, syslog facility */ 00112 void *magic; /* E.g. Callback function */ 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 /* SNMP_LOGGING_H */