kamailio.cfg: removed sample db_mode parameter for domain module
[sip-router] / dprint.c
1 /*
2  * $Id$
3  *
4  * debug print 
5  *
6  *
7  * Copyright (C) 2001-2003 FhG Fokus
8  *
9  * This file is part of ser, a free SIP server.
10  *
11  * ser is free software; you can redistribute it and/or modify
12  * it under the terms of the GNU General Public License as published by
13  * the Free Software Foundation; either version 2 of the License, or
14  * (at your option) any later version
15  *
16  * For a license to use the ser software under conditions
17  * other than those described here, or to purchase support for this
18  * software, please contact iptel.org by e-mail at the following addresses:
19  *    info@iptel.org
20  *
21  * ser is distributed in the hope that it will be useful,
22  * but WITHOUT ANY WARRANTY; without even the implied warranty of
23  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
24  * GNU General Public License for more details.
25  *
26  * You should have received a copy of the GNU General Public License 
27  * along with this program; if not, write to the Free Software 
28  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
29  */
30 /*!
31  * \file
32  * \brief SIP-router core :: 
33  * \ingroup core
34  * Module: \ref core
35  */
36
37
38  
39 #include "globals.h"
40 #include "dprint.h"
41  
42 #include <stdarg.h>
43 #include <stdio.h>
44 #include <strings.h>
45
46 #ifndef NO_SIG_DEBUG
47 /* signal protection: !=0 when LOG/DBG/... are printing */
48 volatile int dprint_crit = 0; 
49 #endif
50
51 static char* str_fac[]={"LOG_AUTH","LOG_CRON","LOG_DAEMON",
52                         "LOG_KERN","LOG_LOCAL0","LOG_LOCAL1",
53                         "LOG_LOCAL2","LOG_LOCAL3","LOG_LOCAL4","LOG_LOCAL5",
54                         "LOG_LOCAL6","LOG_LOCAL7","LOG_LPR","LOG_MAIL",
55                         "LOG_NEWS","LOG_USER","LOG_UUCP",
56 #ifndef __OS_solaris
57                         "LOG_AUTHPRIV","LOG_FTP","LOG_SYSLOG",
58 #endif
59                         0};
60                         
61 static int int_fac[]={LOG_AUTH ,  LOG_CRON , LOG_DAEMON ,
62                       LOG_KERN , LOG_LOCAL0 , LOG_LOCAL1 ,
63                       LOG_LOCAL2 , LOG_LOCAL3 , LOG_LOCAL4 , LOG_LOCAL5 ,
64                       LOG_LOCAL6 , LOG_LOCAL7 , LOG_LPR , LOG_MAIL ,
65                       LOG_NEWS , LOG_USER , LOG_UUCP,
66 #ifndef __OS_solaris
67                       LOG_AUTHPRIV,LOG_FTP,LOG_SYSLOG,
68 #endif
69                       0};
70
71 struct log_level_info log_level_info[] = {
72         {"ALERT", LOG_ALERT},     /* L_ALERT */
73         {"BUG", LOG_CRIT},        /* L_BUG */
74         {"CRITICAL", LOG_CRIT},   /* L_CRIT2 */
75         {"",    LOG_CRIT},         /* L_CRIT */
76         {"ERROR", LOG_ERR},       /* L_ERR */
77         {"WARNING", LOG_WARNING}, /* L_WARN */
78         {"NOTICE", LOG_NOTICE},   /* L_NOTICE */
79         {"INFO", LOG_INFO},       /* L_INFO */
80         {"DEBUG", LOG_DEBUG}      /* L_DBG */
81 };
82
83 int str2facility(char *s)
84 {
85         int i;
86
87         for( i=0; str_fac[i] ; i++) {
88                 if (!strcasecmp(s,str_fac[i]))
89                         return int_fac[i];
90         }
91         return -1;
92 }
93
94 /* fixup function for log_facility cfg parameter */
95 int log_facility_fixup(void *handle, str *gname, str *name, void **val)
96 {
97         int     i;
98
99         if ((i = str2facility((char *)*val)) == -1) {
100                 LOG(L_ERR, "log_facility_fixup: invalid log facility: %s\n",
101                         (char *)*val);
102                 return -1;
103         }
104         *val = (void *)(long)i;
105         return 0;
106 }
107
108
109 /**
110  * per process debug log level (local)
111  */
112
113 /* value for unset local log level  */
114 #define UNSET_LOCAL_DEBUG_LEVEL -255
115
116 /* the local debug log level */
117 static int _local_debug_level = UNSET_LOCAL_DEBUG_LEVEL;
118
119 /**
120  * @brief return the log level - the local one if it set,
121  *   otherwise the global value
122  */
123 int get_debug_level(void) {
124         return (_local_debug_level != UNSET_LOCAL_DEBUG_LEVEL) ?
125                                 _local_debug_level : cfg_get(core, core_cfg, debug);
126 }
127
128 /**
129  * @brief set the local debug log level
130  */
131 void set_local_debug_level(int level)
132 {
133         _local_debug_level = level;
134 }
135
136 /**
137  * @brief reset the local debug log level
138  */
139 void reset_local_debug_level(void)
140 {
141         _local_debug_level = UNSET_LOCAL_DEBUG_LEVEL;
142 }