tcp: config option for the async write block size
[sip-router] / tcp_init.h
1 /*
2  * $Id$
3  *
4  * Copyright (C) 2001-2003 FhG Fokus
5  *
6  * This file is part of ser, a free SIP server.
7  *
8  * ser is free software; you can redistribute it and/or modify
9  * it under the terms of the GNU General Public License as published by
10  * the Free Software Foundation; either version 2 of the License, or
11  * (at your option) any later version
12  *
13  * For a license to use the ser software under conditions
14  * other than those described here, or to purchase support for this
15  * software, please contact iptel.org by e-mail at the following addresses:
16  *    info@iptel.org
17  *
18  * ser is distributed in the hope that it will be useful,
19  * but WITHOUT ANY WARRANTY; without even the implied warranty of
20  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
21  * GNU General Public License for more details.
22  *
23  * You should have received a copy of the GNU General Public License 
24  * along with this program; if not, write to the Free Software 
25  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
26  */
27
28 #ifndef tcp_init_h
29 #define tcp_init_h
30 #include "ip_addr.h"
31
32 #define DEFAULT_TCP_CONNECTION_LIFETIME_S 120 /* in  seconds */
33 /* maximum accepted lifetime in ticks (maximum possible is  ~ MAXINT/2) */
34 #define MAX_TCP_CON_LIFETIME    ((1U<<(sizeof(ticks_t)*8-1))-1)
35
36 #define DEFAULT_TCP_SEND_TIMEOUT 10 /* if a send can't write for more then 10s,
37                                                                            timeout */
38 #define DEFAULT_TCP_CONNECT_TIMEOUT 10 /* if a connect doesn't complete in this
39                                                                                   time, timeout */
40 #define DEFAULT_TCP_MAX_CONNECTIONS 2048 /* maximum connections */
41
42 #define DEFAULT_TCP_BUF_SIZE    4096  /* buffer size used for reads */
43
44 #define DEFAULT_TCP_WBUF_SIZE   2100 /*  after debugging switch to 4-16k */
45
46 struct tcp_child{
47         pid_t pid;
48         int proc_no; /* ser proc_no, for debugging */
49         int unix_sock; /* unix "read child" sock fd */
50         int busy;
51         int n_reqs; /* number of requests serviced so far */
52 };
53
54 #define TCP_ALIAS_FORCE_ADD 1
55 #define TCP_ALIAS_REPLACE   2
56
57 /* flags used for adding new aliases */
58 extern int tcp_alias_flags;
59 /* flags used for adding the default aliases of a new tcp connection */
60 extern int tcp_new_conn_alias_flags;
61
62 int init_tcp();
63 void destroy_tcp();
64 int tcp_init(struct socket_info* sock_info);
65 int tcp_init_children();
66 void tcp_main_loop();
67 void tcp_receive_loop(int unix_sock);
68 int tcp_fix_child_sockets(int* fd);
69
70 /* sets source address used when opening new sockets and no source is specified
71  *  (by default the address is choosen by the kernel)
72  * Should be used only on init.
73  * returns -1 on error */
74 int tcp_set_src_addr(struct ip_addr* ip);
75
76 #endif