doxygen: some fixes in tls module
[sip-router] / modules / tls / tls_cfg.h
1 /* 
2  * $Id$
3  * 
4  * Copyright (C) 2010 iptelorg GmbH
5  *
6  * Permission to use, copy, modify, and distribute this software for any
7  * purpose with or without fee is hereby granted, provided that the above
8  * copyright notice and this permission notice appear in all copies.
9  *
10  * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
11  * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
12  * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
13  * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
14  * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
15  * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
16  * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
17  */
18
19 /**
20  * TLS runtime configuration.
21  * @file tls_cfg.h
22  * @ingroup: tls
23  * Module: @ref tls
24  */
25
26 /*
27  * History:
28  * --------
29  *  2010-05-27  initial version (andrei)
30 */
31
32 #ifndef __tls_cfg_h
33 #define __tls_cfg_h
34
35 #include "../../str.h"
36 #include "../../cfg/cfg.h"
37
38
39 /* maximum accepted lifetime (maximum possible is  ~ MAXINT/2)
40  *  (it should be kept in sync w/ MAX_TCP_CON_LIFETIME from tcp_main.c:
41  *   MAX_TLS_CON_LIFETIME <= MAX_TCP_CON_LIFETIME )*/
42 #define MAX_TLS_CON_LIFETIME    (1U<<(sizeof(ticks_t)*8-1))
43
44
45
46 struct cfg_group_tls {
47         int force_run;
48         str method;
49         int verify_cert;
50         int verify_depth;
51         int require_cert;
52         str private_key;
53         str ca_list;
54         str crl;
55         str certificate;
56         str cipher_list;
57         int session_cache;
58         str session_id;
59         str config_file;
60         int log;
61         int debug;
62         int con_lifetime;
63         int disable_compression;
64         /* release internal openssl read or write buffer when they are no longer
65          * used (complete read or write that does not have to buffer anything).
66          * Should be used together with tls_free_list_max_len. Might have some
67          * performance impact (and extra *malloc pressure), but has also the
68          * potential of saving a lot of memory (at least 32k/idle connection in the
69          * default config, or ~ 16k+tls_max_send_fragment)) */
70         int ssl_release_buffers;
71         /* maximum length of free/unused memory buffers/chunks per connection.
72          * Setting it to 0 would cause any unused buffers to be immediately freed
73          * and hence a lower memory footprint (at the cost of a possible
74          * performance decrease and more *malloc pressure).
75          * Too large value would result in extra memory consumption.
76          * The default is 32 in openssl.
77          * For lowest memory usage set it to 0 and tls_mode_release_buffers to 1
78          */
79         int ssl_freelist_max;
80         /* maximum number of bytes (clear text) sent into one record.
81          * The default and maximum value are ~16k. Lower values would lead to a
82          * lower  memory footprint.
83          * Values lower then the typical  app. write size might decrease
84          * performance (extra write() syscalls), so it should be kept ~2k for ser.
85          */
86         int ssl_max_send_fragment;
87         /* enable read ahead. Should increase performance (1 less syscall when
88          * enabled, else openssl makes 1 read() for each record header and another
89          * for the content), but might interact with SSL_pending() (not used right
90          * now)
91          */
92         int ssl_read_ahead;
93         int low_mem_threshold1;
94         int low_mem_threshold2;
95         int ct_wq_max; /* maximum overall tls write clear text queued bytes */
96         int con_ct_wq_max; /* maximum clear text write queued bytes per con */
97         int ct_wq_blk_size; /* minimum block size for the clear text write queue */
98         int send_close_notify; /* if set try to be nice and send a shutdown alert
99                                                     before closing the tcp connection */
100 };
101
102
103 extern struct cfg_group_tls default_tls_cfg;
104 extern void* tls_cfg;
105 extern cfg_def_t tls_cfg_def[];
106
107
108 extern int fix_tls_cfg(struct cfg_group_tls* cfg);
109
110 #endif /*__tls_cfg_h*/
111
112 /* vi: set ts=4 sw=4 tw=79:ai:cindent: */