- config uses uml hosts alice and bob
[strongswan.git] / Source / charon / daemon.h
1 /**
2 * @file daemon.h
3 *
4 * @brief Interface of daemon_t.
5 *
6 */
7
8 /*
9 * Copyright (C) 2005 Jan Hutter, Martin Willi
10 * Hochschule fuer Technik Rapperswil
11 *
12 * This program is free software; you can redistribute it and/or modify it
13 * under the terms of the GNU General Public License as published by the
14 * Free Software Foundation; either version 2 of the License, or (at your
15 * option) any later version. See <http://www.fsf.org/copyleft/gpl.txt>.
16 *
17 * This program is distributed in the hope that it will be useful, but
18 * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
19 * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
20 * for more details.
21 */
22
23 #ifndef DAEMON_H_
24 #define DAEMON_H_
25
26 #include <threads/sender.h>
27 #include <threads/receiver.h>
28 #include <threads/scheduler.h>
29 #include <threads/kernel_interface.h>
30 #include <threads/thread_pool.h>
31 #include <network/socket.h>
32 #include <sa/ike_sa_manager.h>
33 #include <queues/send_queue.h>
34 #include <queues/job_queue.h>
35 #include <queues/event_queue.h>
36 #include <utils/logger_manager.h>
37 #include <config/configuration_manager.h>
38
39 /**
40 * Name of the daemon.
41 */
42 #define DAEMON_NAME "charon"
43
44 /**
45 * @brief Number of threads in the thread pool.
46 *
47 * There are several other threads, this defines
48 * only the number of threads in thread_pool_t.
49 */
50 #define NUMBER_OF_WORKING_THREADS 4
51
52 /**
53 * UDP Port on which the daemon will listen for incoming traffic.
54 */
55 #define IKEV2_UDP_PORT 500
56
57 /**
58 * @brief First retransmit timeout in milliseconds.
59 *
60 * Timeout value is increasing in each retransmit round.
61 */
62 #define RETRANSMIT_TIMEOUT 3000
63
64 /**
65 * Timeout in milliseconds after that a half open IKE_SA gets deleted.
66 */
67 #define HALF_OPEN_IKE_SA_TIMEOUT 30000
68
69 /**
70 * @brief Max retransmit count.
71 *
72 * 0 for infinite. The max time a half open IKE_SA is alive is set by
73 * RETRANSMIT_TIMEOUT.
74 */
75 #define MAX_RETRANSMIT_COUNT 0
76
77 /**
78 * @brief Default loglevel for every logger context.
79 *
80 * This is the maximum allowed level for ever context, the definiton
81 * of the context may be less verbose.
82 */
83 #define DEFAULT_LOGLEVEL CONTROL | ERROR | AUDIT
84
85
86 typedef struct daemon_t daemon_t;
87
88 /**
89 * @brief Main class of daemon, contains some globals.
90 */
91 struct daemon_t {
92 /**
93 * A socket_t instance.
94 */
95 socket_t *socket;
96
97 /**
98 * A send_queue_t instance.
99 */
100
101 send_queue_t *send_queue;
102
103 /**
104 * A job_queue_t instance.
105 */
106 job_queue_t *job_queue;
107
108 /**
109 * A event_queue_t instance.
110 */
111 event_queue_t *event_queue;
112
113 /**
114 * A logger_manager_t instance.
115 */
116 logger_manager_t *logger_manager;
117
118 /**
119 * A ike_sa_manager_t instance.
120 */
121 ike_sa_manager_t *ike_sa_manager;
122
123 /**
124 * A configuration_manager_t instance.
125 */
126 configuration_manager_t *configuration_manager;
127
128 /**
129 * The Sender-Thread.
130 */
131 sender_t *sender;
132
133 /**
134 * The Receiver-Thread.
135 */
136 receiver_t *receiver;
137
138 /**
139 * The Scheduler-Thread.
140 */
141 scheduler_t *scheduler;
142
143 /**
144 * The Thread pool managing the worker threads.
145 */
146 thread_pool_t *thread_pool;
147
148 /**
149 * Kernel Interface to communicate with kernel
150 */
151 kernel_interface_t *kernel_interface;
152
153 /**
154 * @brief Shut down the daemon.
155 *
156 * @param this the daemon to kill
157 * @param reason describtion why it will be killed
158 */
159 void (*kill) (daemon_t *this, char *reason);
160 };
161
162 /**
163 * The one and only instance of the daemon.
164 */
165 extern daemon_t *charon;
166
167 #endif /*DAEMON_H_*/