Merge remote branch 'origin/sr_3.0'
[sip-router] / modules / tm / config.h
1 /*
2  * $Id$
3  *
4  *
5  * Copyright (C) 2001-2003 FhG Fokus
6  *
7  * This file is part of SIP-router, a free SIP server.
8  *
9  * SIP-router 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  * SIP-router 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., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
22  */
23
24 /*!
25  * \file 
26  * \brief TM :: Configuration
27  * \ingroup tm
28  */
29
30
31 #ifndef _TM_CONFIG_H
32 #define _TM_CONFIG_H
33
34 #include "defs.h"
35
36 /* this is where table size is defined now -- sort of
37    ugly, core should not be bothered by TM table size,
38    but on the other, core's stateless forwarding should 
39    have consistent branch generation with stateful mode
40    and needs to calculate branch/hash, for which table size
41    is needed 
42 */
43 #include "../../hash_func.h"
44
45 #include "../../cfg/cfg.h"
46 #include "../../str.h"
47
48 /* maximum length of localy generated acknowledgment */
49 #define MAX_ACK_LEN   1024
50
51 /* FINAL_RESPONSE_TIMER ... tells how long should the transaction engine
52    wait if no final response comes back*/
53 #define FR_TIME_OUT        30000 /* ms */
54 #define INV_FR_TIME_OUT   120000 /* ms */
55
56 /*! \brief final response timers to be used for serial forwarding */
57 #define INV_FR_TIME_OUT_NEXT  30000 /* ms */
58
59 /* WAIT timer ... tells how long state should persist in memory after
60    a transaction was finalized*/
61 #define WT_TIME_OUT       5000 /* ms */
62
63 /* DELETE timer ... tells how long should the transaction persist in memory
64    after it was removed from the hash table and before it will be deleted */
65 #define DEL_TIME_OUT      200 /* ms, obsoleted */
66  
67 /* retransmission timers */
68 #define RETR_T1           500 /* ms */
69 #define RETR_T2          4000 /* ms */
70
71 /* maximum total lifetime for an INVITE or non-INVITE transaction
72  * Note: after this time the transaction will not be deleted
73  *  immediately, but forced to go in the wait state or in wait for ack state 
74  *  and then wait state, so it will still be alive for either WT_TIME_OUT in 
75  *  the non-inv or "silent" inv. case and for FR_TIME_OUT + WT_TIME_OUT for an
76  *  invite transaction (for which  we must wait for the neg. reply ack)*/
77 #define MAX_INV_LIFETIME    180000 /* ms, rfc min. C-timer value */
78 #define MAX_NONINV_LIFETIME  32000 /* ms, rfc timer F value */
79
80 /* when first reply is sent, this additional space is allocated so that
81    one does not have to reallocate share memory when the message is
82    replaced by a subsequent, longer message
83 */
84 #define REPLY_OVERBUFFER_LEN 160
85 #define TAG_OVERBUFFER_LEN 32
86
87 /* dimensions of FIFO server */
88 #define MAX_METHOD      64
89 #define MAX_HEADER      1024
90 #define MAX_BODY        1024
91 #define MAX_DST 512
92 #define MAX_FROM 512
93
94 /* messages generated by server */
95 #define CANCELING "canceling"
96 #define CANCEL_DONE "ok -- no more pending branches"
97 #define CANCELED "Request canceled"
98
99 /* to-tag separator for stateful processing */
100 #define TM_TAG_SEPARATOR '-'
101
102 /* FIFO substitution character */
103 #define SUBST_CHAR '!'
104
105 struct cfg_group_tm {
106         int     ruri_matching;
107         int     via1_matching;
108         unsigned int    fr_timeout;
109         unsigned int    fr_inv_timeout;
110         unsigned int    fr_inv_timeout_next;
111         unsigned int    wait_timeout;
112         unsigned int    delete_timeout;
113         unsigned int    rt_t1_timeout;
114         unsigned int    rt_t2_timeout;
115         unsigned int    tm_max_inv_lifetime;
116         unsigned int    tm_max_noninv_lifetime;
117         int     noisy_ctimer;
118         int     tm_auto_inv_100;
119         char    *tm_auto_inv_100_r;     
120         int     tm_unix_tx_timeout;
121         int     restart_fr_on_each_reply;
122         int     pass_provisional_replies;
123         int     tm_aggregate_auth;
124         int     unmatched_cancel;
125         int     default_code;
126         char    *default_reason;
127         int     reparse_invite;
128         str     ac_extra_hdrs;
129         int     tm_blst_503;
130         int     tm_blst_503_default;
131         int     tm_blst_503_min;
132         int     tm_blst_503_max;
133         unsigned int    tm_blst_methods_add;
134         unsigned int    tm_blst_methods_lookup;
135         unsigned int    cancel_b_flags;
136         int     reparse_on_dns_failover;
137         int disable_6xx;
138         int local_ack_mode;
139 };
140
141 extern struct cfg_group_tm      default_tm_cfg;
142 extern void     *tm_cfg;
143 extern cfg_def_t        tm_cfg_def[];
144
145 #endif