720a3c4ced4ee8eb3b1b5c7f90d6c7f1b9d2cd02
[lcr.git] / main.h
1 /*****************************************************************************\
2 **                                                                           **
3 ** Linux Call Router                                                         **
4 **                                                                           **
5 **---------------------------------------------------------------------------**
6 ** Copyright: Andreas Eversberg                                              **
7 **                                                                           **
8 ** Header file for defining fixed values for the current version             **
9 **                                                                           **
10 \*****************************************************************************/ 
11
12 #include <stdio.h>
13 #include <stdlib.h>
14 #include <stdarg.h>
15 #include <unistd.h>
16 #include <string.h>
17 #include <signal.h>
18 #include <time.h>
19 #include <fcntl.h>
20 #include <errno.h>
21 #include <pthread.h>
22 #include <dirent.h>
23 #include <math.h>
24 #include <sys/time.h>
25 #include <sys/types.h>
26 #include <sys/wait.h>
27 #include <sys/stat.h>
28 #include <sys/ioctl.h>
29 #include <sys/file.h>
30 #include <sys/mman.h>
31 #include <sys/resource.h>
32
33 #define NAME            "LCR"
34
35 #define DEFAULT_ENDPOINT_APP EndpointAppPBX
36
37 #define VERSION_STRING  "0.5 (Spring 2007)"
38
39 extern int memuse;
40 extern int mmemuse;
41 extern int cmemuse;
42 extern int ememuse;
43 extern int pmemuse;
44 extern int amemuse;
45 extern int rmemuse;
46 extern int classuse;
47 extern int fduse;
48 extern int fhuse;
49
50 //extern pthread_mutex_t mutex_lcr; // lcr process mutex
51
52 #ifdef SOCKET_MISDN
53 extern FILE *debug_fp;
54 #else
55 extern int global_debug;
56 #endif
57
58 #define PDEBUG(mask, fmt, arg...) _printdebug(__FUNCTION__, __LINE__, mask, fmt, ## arg)
59 #define PERROR(fmt, arg...) _printerror(__FUNCTION__, __LINE__, fmt, ## arg)
60 #define PDEBUG_RUNTIME(mask, fmt, arg...) _printdebug(NULL, 0, mask, fmt, ## arg)
61 #define PERROR_RUNTIME(fmt, arg...) _printerror(NULL, 0, fmt, ## arg)
62 void _printdebug(const char *function, int line, unsigned long mask, const char *fmt, ...);
63 void _printerror(const char *function, int line, const char *fmt, ...);
64 #define DEBUG_FUNC
65 void debug(const char *function, int line, char *prefix, char *buffer);
66
67 #define DEBUG_CONFIG    0x0001
68 #define DEBUG_MSG       0x0002
69 #define DEBUG_STACK     0x0004
70 #define DEBUG_BCHANNEL  0x0008
71 #define DEBUG_PORT      0x0100
72 #define DEBUG_ISDN      0x0110
73 //#define DEBUG_KNOCK   0x0140
74 #define DEBUG_VBOX      0x0180
75 #define DEBUG_EPOINT    0x0200
76 #define DEBUG_JOIN      0x0400
77 #define DEBUG_VERSATEL  0x0800
78 #define DEBUG_CRYPT     0x1000
79 #define DEBUG_ROUTE     0x2000
80 #define DEBUG_IDLETIME  0x4000
81 #define DEBUG_LOG       0x7fff
82
83 // check any faulty malloc
84 #define MALLOC_CHECK_   1
85
86 /*
87  * one of the bits must be enabled in order to write log files
88  */
89 #define DEBUG_LOG       0x7fff
90
91 /*
92  * load transmit buffer to avoid gaps at the beginning due to jitter
93  * also the maximum load that will be kept in tx-buffer
94  * also the (minimum) number of data to transmit in a frame
95  */
96 #define ISDN_LOAD       1024 // samples
97 #define ISDN_MAXLOAD    2048 // samples
98
99 /* give sendmail program. if not inside $PATH, give absolute path here (e.g. "/usr/sbin/sendmail")
100  */
101 #define SENDMAIL        "sendmail"
102
103 /* leave it above 1024, because lower values can be unsafe, higher valuse cause
104  * data larger than 512 bytes of hex strings.
105  */
106 #define RSA_BITS        1536
107
108 /* 'goto' or 'menu' actions may cause infinite loops. they will be prevented by this limit.
109  * Also other recursions, like redialing the 'redial' action must be prevented.
110  * increase it ONLY IF you have a deeper tree of rule sets, than the value given here.
111  */
112 #define RULE_NESTING    10
113
114 /* to debug core bridging, rather than mISDN dsp bridging, enable.
115  * this is for debugging only, bridging conferences will not work
116  */
117 //#define DEBUG_COREBRIDGE
118
119 /* special debugging for buffer overflow bugs
120  * note: whenever a buffer gets strange values, the budetect function must
121  * be modified to detect the change of these values. whenever it is detected,
122  * an error message is given at budetect function.
123  */
124 //#define BUDETECT_DEF
125
126 #ifdef BUDETECT_DEF
127  #define BUDETECT       budetect(__FILE__, __LINE__, __FUNCTION__);
128  void budetect(const char *file, int line, char *function);
129 #else
130  #define BUDETECT       ;
131 #endif
132
133 #ifdef __cplusplus
134 extern "C" {
135 #endif
136 #ifndef SOCKET_MISDN
137 #include <mISDNuser/isdn_net.h>
138 #include <mISDNuser/net_l3.h>
139 #else
140 #include <mbuffer.h>
141 #endif
142 #ifdef __cplusplus
143 }
144 #endif
145 #include "macro.h"
146 #include "options.h"
147 #include "interface.h"
148 #include "extension.h"
149 #include "message.h"
150 #include "endpoint.h"
151 #include "endpointapp.h"
152 #include "apppbx.h"
153 #include "route.h"
154 #include "port.h"
155 #include "mISDN.h"
156 #include "dss1.h"
157 #include "vbox.h"
158 #include "join.h"
159 #include "joinpbx.h"
160 #include "joinremote.h"
161 #include "cause.h"
162 #include "alawulaw.h"
163 #include "tones.h"
164 #include "crypt.h"
165 #include "socket_server.h"
166 #include "trace.h"
167
168 extern double now_d;
169 extern time_t now;
170 extern struct tm *now_tm;
171 extern struct timeval now_tv;
172 extern struct timezone now_tz;
173
174 #define DIRECTION_NONE  0
175 #define DIRECTION_OUT   1
176 #define DIRECTION_IN    2
177
178 #if 0
179 struct lcr_fdset {
180         struct mISDNport *mISDNport;
181         int b_index;
182 };
183 #endif
184