snmp_logging.h

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     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      * 0 - successful message formatting 
00068      */
00069     /*
00070      * -1 - Could not format log-string 
00071      */
00072     /*
00073      * -2 - Could not allocate memory for log-message 
00074      */
00075     /*
00076      * -3 - Log-message too long! 
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;              /* Also used for filename */
00107 
00108         NetsnmpLogHandler       *handler;
00109 
00110         int     imagic;         /* E.g. file descriptor, syslog facility */
00111         void   *magic;          /* E.g. Callback function */
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                          /* SNMP_LOGGING_H */

net-snmpに対してSat Sep 5 13:14:25 2009に生成されました。  doxygen 1.4.7