pjproject: Add cache_pools debugging option.
[asterisk/asterisk.git] / include / asterisk / options.h
1 /*
2  * Asterisk -- An open source telephony toolkit.
3  *
4  * Copyright (C) 1999 - 2005, Digium, Inc.
5  *
6  * Mark Spencer <markster@digium.com>
7  *
8  * See http://www.asterisk.org for more information about
9  * the Asterisk project. Please do not directly contact
10  * any of the maintainers of this project for assistance;
11  * the project provides a web site, mailing lists and IRC
12  * channels for your use.
13  *
14  * This program is free software, distributed under the terms of
15  * the GNU General Public License Version 2. See the LICENSE file
16  * at the top of the source tree.
17  */
18
19 /*! \file
20  * \brief Options provided by main asterisk program
21  */
22
23 #ifndef _ASTERISK_OPTIONS_H
24 #define _ASTERISK_OPTIONS_H
25
26 #include "asterisk/autoconfig.h"
27
28 #if defined(__cplusplus) || defined(c_plusplus)
29 extern "C" {
30 #endif
31
32 #define AST_CACHE_DIR_LEN       512
33 #define AST_FILENAME_MAX        80
34 #define AST_CHANNEL_NAME    80  /*!< Max length of an ast_channel name */
35
36
37 /*! \ingroup main_options */
38 enum ast_option_flags {
39         /*! Allow \#exec in config files */
40         AST_OPT_FLAG_EXEC_INCLUDES = (1 << 0),
41         /*! Do not fork() */
42         AST_OPT_FLAG_NO_FORK = (1 << 1),
43         /*! Keep quiet */
44         AST_OPT_FLAG_QUIET = (1 << 2),
45         /*! Console mode */
46         AST_OPT_FLAG_CONSOLE = (1 << 3),
47         /*! Run in realtime Linux priority */
48         AST_OPT_FLAG_HIGH_PRIORITY = (1 << 4),
49         /*! Initialize keys for RSA authentication */
50         AST_OPT_FLAG_INIT_KEYS = (1 << 5),
51         /*! Remote console */
52         AST_OPT_FLAG_REMOTE = (1 << 6),
53         /*! Execute an asterisk CLI command upon startup */
54         AST_OPT_FLAG_EXEC = (1 << 7),
55         /*! Don't use termcap colors */
56         AST_OPT_FLAG_NO_COLOR = (1 << 8),
57         /*! Are we fully started yet? */
58         AST_OPT_FLAG_FULLY_BOOTED = (1 << 9),
59         /*! Trascode via signed linear */
60         AST_OPT_FLAG_TRANSCODE_VIA_SLIN = (1 << 10),
61         /*! Invoke the stdexten using the legacy macro method. */
62         AST_OPT_FLAG_STDEXTEN_MACRO = (1 << 11),
63         /*! Dump core on a seg fault */
64         AST_OPT_FLAG_DUMP_CORE = (1 << 12),
65         /*! Cache sound files */
66         AST_OPT_FLAG_CACHE_RECORD_FILES = (1 << 13),
67         /*! Display timestamp in CLI verbose output */
68         AST_OPT_FLAG_TIMESTAMP = (1 << 14),
69         /*! Cache media frames for performance */
70         AST_OPT_FLAG_CACHE_MEDIA_FRAMES = (1 << 15),
71         /*! Reconnect */
72         AST_OPT_FLAG_RECONNECT = (1 << 16),
73         /*! Transmit Silence during Record() and DTMF Generation */
74         AST_OPT_FLAG_TRANSMIT_SILENCE = (1 << 17),
75         /*! Suppress some warnings */
76         AST_OPT_FLAG_DONT_WARN = (1 << 18),
77         /*! End CDRs before the 'h' extension */
78         AST_OPT_FLAG_END_CDR_BEFORE_H_EXTEN = (1 << 19),
79         /*! Reference Debugging */
80         AST_OPT_FLAG_REF_DEBUG = (1 << 20),
81         /*! Always fork, even if verbose or debug settings are non-zero */
82         AST_OPT_FLAG_ALWAYS_FORK = (1 << 21),
83         /*! Disable log/verbose output to remote consoles */
84         AST_OPT_FLAG_MUTE = (1 << 22),
85         /*! There is a per-module debug setting */
86         AST_OPT_FLAG_DEBUG_MODULE = (1 << 23),
87         /*! There is a per-module verbose setting */
88         AST_OPT_FLAG_VERBOSE_MODULE = (1 << 24),
89         /*! Terminal colors should be adjusted for a light-colored background */
90         AST_OPT_FLAG_LIGHT_BACKGROUND = (1 << 25),
91         /*! Count Initiated seconds in CDR's */
92         AST_OPT_FLAG_INITIATED_SECONDS = (1 << 26),
93         /*! Force black background */
94         AST_OPT_FLAG_FORCE_BLACK_BACKGROUND = (1 << 27),
95         /*! Hide remote console connect messages on console */
96         AST_OPT_FLAG_HIDE_CONSOLE_CONNECT = (1 << 28),
97         /*! Protect the configuration file path with a lock */
98         AST_OPT_FLAG_LOCK_CONFIG_DIR = (1 << 29),
99         /*! Generic PLC */
100         AST_OPT_FLAG_GENERIC_PLC = (1 << 30),
101 };
102
103 /*! These are the options that set by default when Asterisk starts */
104 #define AST_DEFAULT_OPTIONS (AST_OPT_FLAG_TRANSCODE_VIA_SLIN | AST_OPT_FLAG_CACHE_MEDIA_FRAMES)
105
106 #define ast_opt_exec_includes           ast_test_flag(&ast_options, AST_OPT_FLAG_EXEC_INCLUDES)
107 #define ast_opt_no_fork                 ast_test_flag(&ast_options, AST_OPT_FLAG_NO_FORK)
108 #define ast_opt_quiet                   ast_test_flag(&ast_options, AST_OPT_FLAG_QUIET)
109 #define ast_opt_console                 ast_test_flag(&ast_options, AST_OPT_FLAG_CONSOLE)
110 #define ast_opt_high_priority           ast_test_flag(&ast_options, AST_OPT_FLAG_HIGH_PRIORITY)
111 #define ast_opt_init_keys               ast_test_flag(&ast_options, AST_OPT_FLAG_INIT_KEYS)
112 #define ast_opt_remote                  ast_test_flag(&ast_options, AST_OPT_FLAG_REMOTE)
113 #define ast_opt_exec                    ast_test_flag(&ast_options, AST_OPT_FLAG_EXEC)
114 #define ast_opt_no_color                ast_test_flag(&ast_options, AST_OPT_FLAG_NO_COLOR)
115 #define ast_fully_booted                ast_test_flag(&ast_options, AST_OPT_FLAG_FULLY_BOOTED)
116 #define ast_opt_transcode_via_slin      ast_test_flag(&ast_options, AST_OPT_FLAG_TRANSCODE_VIA_SLIN)
117 /*! Invoke the stdexten using the legacy macro method. */
118 #define ast_opt_stdexten_macro          ast_test_flag(&ast_options, AST_OPT_FLAG_STDEXTEN_MACRO)
119 #define ast_opt_dump_core               ast_test_flag(&ast_options, AST_OPT_FLAG_DUMP_CORE)
120 #define ast_opt_cache_record_files      ast_test_flag(&ast_options, AST_OPT_FLAG_CACHE_RECORD_FILES)
121 #define ast_opt_cache_media_frames      ast_test_flag(&ast_options, AST_OPT_FLAG_CACHE_MEDIA_FRAMES)
122 #define ast_opt_timestamp               ast_test_flag(&ast_options, AST_OPT_FLAG_TIMESTAMP)
123 #define ast_opt_reconnect               ast_test_flag(&ast_options, AST_OPT_FLAG_RECONNECT)
124 #define ast_opt_transmit_silence        ast_test_flag(&ast_options, AST_OPT_FLAG_TRANSMIT_SILENCE)
125 #define ast_opt_dont_warn               ast_test_flag(&ast_options, AST_OPT_FLAG_DONT_WARN)
126 #define ast_opt_end_cdr_before_h_exten  ast_test_flag(&ast_options, AST_OPT_FLAG_END_CDR_BEFORE_H_EXTEN)
127 #define ast_opt_always_fork             ast_test_flag(&ast_options, AST_OPT_FLAG_ALWAYS_FORK)
128 #define ast_opt_mute                    ast_test_flag(&ast_options, AST_OPT_FLAG_MUTE)
129 #define ast_opt_dbg_module              ast_test_flag(&ast_options, AST_OPT_FLAG_DEBUG_MODULE)
130 #define ast_opt_verb_module             ast_test_flag(&ast_options, AST_OPT_FLAG_VERBOSE_MODULE)
131 #define ast_opt_light_background        ast_test_flag(&ast_options, AST_OPT_FLAG_LIGHT_BACKGROUND)
132 #define ast_opt_force_black_background  ast_test_flag(&ast_options, AST_OPT_FLAG_FORCE_BLACK_BACKGROUND)
133 #define ast_opt_hide_connect            ast_test_flag(&ast_options, AST_OPT_FLAG_HIDE_CONSOLE_CONNECT)
134 #define ast_opt_lock_confdir            ast_test_flag(&ast_options, AST_OPT_FLAG_LOCK_CONFIG_DIR)
135 #define ast_opt_generic_plc         ast_test_flag(&ast_options, AST_OPT_FLAG_GENERIC_PLC)
136 #define ast_opt_ref_debug           ast_test_flag(&ast_options, AST_OPT_FLAG_REF_DEBUG)
137
138 /*! Maximum log level defined by PJPROJECT. */
139 #define MAX_PJ_LOG_MAX_LEVEL            6
140 /*!
141  * Normal PJPROJECT active log level used by Asterisk.
142  *
143  * These levels are usually mapped to Error and
144  * Warning Asterisk log levels which shouldn't
145  * normally be suppressed.
146  */
147 #define DEFAULT_PJ_LOG_MAX_LEVEL        2
148
149 /*!
150  * \brief Get maximum log level pjproject was compiled with.
151  *
152  * \details
153  * Determine the maximum log level the pjproject we are running
154  * with supports.
155  *
156  * When pjproject is initially loaded the default log level in
157  * effect is the maximum log level the library was compiled to
158  * generate.  We must save this value off somewhere before we
159  * change it to what we want to use as the default level.
160  *
161  * \note This must be done before calling pj_init() so the level
162  * we want to use as the default level is in effect while the
163  * library initializes.
164  */
165 #define AST_PJPROJECT_INIT_LOG_LEVEL()                                                  \
166         do {                                                                                                            \
167                 if (ast_pjproject_max_log_level < 0) {                                  \
168                         ast_pjproject_max_log_level = pj_log_get_level();       \
169                 }                                                                                                               \
170                 pj_log_set_level(ast_option_pjproject_log_level);               \
171         } while (0)
172
173 /*! Current linked pjproject maximum logging level */
174 extern int ast_pjproject_max_log_level;
175
176 #define DEFAULT_PJPROJECT_CACHE_POOLS   1
177
178 /*! Current pjproject pool caching enable */
179 extern int ast_option_pjproject_cache_pools;
180
181 /*! Current pjproject logging level */
182 extern int ast_option_pjproject_log_level;
183
184 extern struct ast_flags ast_options;
185
186 extern int option_verbose;
187 extern int ast_option_maxfiles;         /*!< Max number of open file handles (files, sockets) */
188 extern int option_debug;                /*!< Debugging */
189 extern int ast_option_maxcalls;         /*!< Maximum number of simultaneous channels */
190 extern unsigned int option_dtmfminduration;     /*!< Minimum duration of DTMF (channel.c) in ms */
191 extern double ast_option_maxload;
192 #if defined(HAVE_SYSINFO)
193 extern long option_minmemfree;          /*!< Minimum amount of free system memory - stop accepting calls if free memory falls below this watermark */
194 #endif
195 extern char ast_defaultlanguage[];
196
197 extern struct timeval ast_startuptime;
198 extern struct timeval ast_lastreloadtime;
199 extern pid_t ast_mainpid;
200
201 extern char record_cache_dir[AST_CACHE_DIR_LEN];
202 extern char dahdi_chan_name[AST_CHANNEL_NAME];
203 extern int dahdi_chan_name_len;
204
205 extern int ast_language_is_prefix;
206
207 extern int ast_option_rtpusedynamic;
208 extern unsigned int ast_option_rtpptdynamic;
209
210 #if defined(__cplusplus) || defined(c_plusplus)
211 }
212 #endif
213
214 #endif /* _ASTERISK_OPTIONS_H */