modules/ims_qos: added patch for flow-description bug when request originates from...
[sip-router] / src / modules / acc / acc.h
1 /*
2  * $Id$
3  *
4  * Copyright (C) 2001-2003 FhG Fokus
5  * Copyright (C) 2006 Voice Sistem SRL
6  *
7  * This file is part of Kamailio, a free SIP server.
8  *
9  * Kamailio is free software; you can redistribute it and/or modify
10  * it under the terms of the GNU General Public License as published by
11  * the Free Software Foundation; either version 2 of the License, or
12  * (at your option) any later version
13  *
14  * Kamailio is distributed in the hope that it will be useful,
15  * but WITHOUT ANY WARRANTY; without even the implied warranty of
16  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
17  * GNU General Public License for more details.
18  *
19  * You should have received a copy of the GNU General Public License 
20  * along with this program; if not, write to the Free Software 
21  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
22  *
23  * History:
24  * --------
25  * 2003-04-04  grand acc cleanup (jiri)
26  * 2003-11-04  multidomain support for mysql introduced (jiri)
27  * 2004-06-06  cleanup: acc_db_{bind,init,close} added (andrei)
28  * 2006-09-08  flexible multi leg accounting support added,
29  *             code cleanup for low level functions (bogdan)
30  * 2006-09-19  final stage of a masive re-structuring and cleanup (bogdan)
31  */
32
33 /*! \file
34  * \ingroup acc
35  * \brief Acc:: Core accounting
36  *
37  * - See \ref acc.c
38  * - Module: \ref acc
39  */
40
41 #ifndef _ACC_ACC_H_
42 #define _ACC_ACC_H_
43
44 /* leading text for a request accounted from a script */
45 #define ACC "ACC: "
46 #define ACC_REQUEST ACC"request accounted: "
47 #define ACC_REQUEST_LEN (sizeof(ACC_REQUEST)-1)
48 #define ACC_MISSED ACC"call missed: "
49 #define ACC_MISSED_LEN (sizeof(ACC_MISSED)-1)
50 #define ACC_ANSWERED ACC"transaction answered: "
51 #define ACC_ANSWERED_LEN (sizeof(ACC_ANSWERED)-1)
52 #define ACC_ACKED ACC"request acknowledged: "
53 #define ACC_ACKED_LEN (sizeof(ACC_ACKED)-1)
54
55 /* syslog attribute names */
56 #define A_METHOD "method"
57 #define A_METHOD_LEN (sizeof(A_METHOD)-1)
58 #define A_FROMTAG "from_tag"
59 #define A_FROMTAG_LEN (sizeof(A_FROMTAG)-1)
60 #define A_TOTAG "to_tag"
61 #define A_TOTAG_LEN (sizeof(A_TOTAG)-1)
62 #define A_CALLID "call_id"
63 #define A_CALLID_LEN (sizeof(A_CALLID)-1)
64 #define A_CODE "code"
65 #define A_CODE_LEN (sizeof(A_CODE)-1)
66 #define A_STATUS "reason"
67 #define A_STATUS_LEN (sizeof(A_STATUS)-1)
68
69 #define A_SEPARATOR_CHR ';'
70 #define A_SEPARATOR_CHR_2 ' '
71 #define A_EQ_CHR '='
72
73 #define MAX_SYSLOG_SIZE  65536
74
75 #define MAX_FAILED_FILTER_COUNT 15
76
77 /* WARNING: This is a flag stored in the sip_msg structure, the flag is
78  * temporarily defined here to make the module work with the sip-router core,
79  * I assume it won't be needed once we merge acc implementations from both
80  * projects. The value of the flag must be kept synchronized with other flags
81  * defined in parser/msg_parser.h!
82  */
83 #define FL_REQ_UPSTREAM (1<<29)
84
85 void acc_log_init(void);
86 int  acc_log_request( struct sip_msg *req);
87
88 int core2strar(struct sip_msg *req, str *c_vals, int *i_vals, char *t_vals);
89
90 #ifdef SQL_ACC
91 int  acc_db_init(const str* db_url);
92 int  acc_db_init_child(const str* db_url);
93 void acc_db_close(void);
94 int  acc_db_request( struct sip_msg *req);
95 int acc_get_db_handlers(void **vf, void **vh);
96 #endif
97
98 #ifdef RAD_ACC
99 int  init_acc_rad(char *rad_cfg, int srv_type);
100 int  acc_rad_request( struct sip_msg *req );
101 #endif
102
103 #ifdef DIAM_ACC
104 int  acc_diam_init(void);
105 int  acc_diam_request( struct sip_msg *req );
106 #endif
107
108 #endif