00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00039 #include "globals.h"
00040 #include "dprint.h"
00041
00042 #include <stdarg.h>
00043 #include <stdio.h>
00044 #include <strings.h>
00045
00046 #ifndef NO_SIG_DEBUG
00047
00048 volatile int dprint_crit = 0;
00049 #endif
00050
00051 static char* str_fac[]={"LOG_AUTH","LOG_CRON","LOG_DAEMON",
00052 "LOG_KERN","LOG_LOCAL0","LOG_LOCAL1",
00053 "LOG_LOCAL2","LOG_LOCAL3","LOG_LOCAL4","LOG_LOCAL5",
00054 "LOG_LOCAL6","LOG_LOCAL7","LOG_LPR","LOG_MAIL",
00055 "LOG_NEWS","LOG_USER","LOG_UUCP",
00056 #ifndef __OS_solaris
00057 "LOG_AUTHPRIV","LOG_FTP","LOG_SYSLOG",
00058 #endif
00059 0};
00060
00061 static int int_fac[]={LOG_AUTH , LOG_CRON , LOG_DAEMON ,
00062 LOG_KERN , LOG_LOCAL0 , LOG_LOCAL1 ,
00063 LOG_LOCAL2 , LOG_LOCAL3 , LOG_LOCAL4 , LOG_LOCAL5 ,
00064 LOG_LOCAL6 , LOG_LOCAL7 , LOG_LPR , LOG_MAIL ,
00065 LOG_NEWS , LOG_USER , LOG_UUCP,
00066 #ifndef __OS_solaris
00067 LOG_AUTHPRIV,LOG_FTP,LOG_SYSLOG,
00068 #endif
00069 0};
00070
00071 struct log_level_info log_level_info[] = {
00072 {"ALERT", LOG_ALERT},
00073 {"BUG", LOG_CRIT},
00074 {"CRITICAL", LOG_CRIT},
00075 {"", LOG_CRIT},
00076 {"ERROR", LOG_ERR},
00077 {"WARNING", LOG_WARNING},
00078 {"NOTICE", LOG_NOTICE},
00079 {"INFO", LOG_INFO},
00080 {"DEBUG", LOG_DEBUG}
00081 };
00082
00083 int str2facility(char *s)
00084 {
00085 int i;
00086
00087 for( i=0; str_fac[i] ; i++) {
00088 if (!strcasecmp(s,str_fac[i]))
00089 return int_fac[i];
00090 }
00091 return -1;
00092 }
00093
00094
00095 int log_facility_fixup(void *handle, str *gname, str *name, void **val)
00096 {
00097 int i;
00098
00099 if ((i = str2facility((char *)*val)) == -1) {
00100 LOG(L_ERR, "log_facility_fixup: invalid log facility: %s\n",
00101 (char *)*val);
00102 return -1;
00103 }
00104 *val = (void *)(long)i;
00105 return 0;
00106 }
00107
00108
00113
00114 #define UNSET_LOCAL_DEBUG_LEVEL -255
00115
00116
00117 static int _local_debug_level = UNSET_LOCAL_DEBUG_LEVEL;
00118
00123 int get_debug_level(void) {
00124 return (_local_debug_level != UNSET_LOCAL_DEBUG_LEVEL) ?
00125 _local_debug_level : cfg_get(core, core_cfg, debug);
00126 }
00127
00131 void set_local_debug_level(int level)
00132 {
00133 _local_debug_level = level;
00134 }
00135
00139 void reset_local_debug_level(void)
00140 {
00141 _local_debug_level = UNSET_LOCAL_DEBUG_LEVEL;
00142 }