- configuration_manager replaced by configuration_t interface
[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.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 Default loglevel for every logger context.
59 *
60 * This is the maximum allowed level for ever context, the definiton
61 * of the context may be less verbose.
62 */
63 #define DEFAULT_LOGLEVEL CONTROL | ERROR | AUDIT
64
65
66 typedef struct daemon_t daemon_t;
67
68 /**
69 * @brief Main class of daemon, contains some globals.
70 */
71 struct daemon_t {
72 /**
73 * A socket_t instance.
74 */
75 socket_t *socket;
76
77 /**
78 * A send_queue_t instance.
79 */
80 send_queue_t *send_queue;
81
82 /**
83 * A job_queue_t instance.
84 */
85 job_queue_t *job_queue;
86
87 /**
88 * A event_queue_t instance.
89 */
90 event_queue_t *event_queue;
91
92 /**
93 * A logger_manager_t instance.
94 */
95 logger_manager_t *logger_manager;
96
97 /**
98 * A ike_sa_manager_t instance.
99 */
100 ike_sa_manager_t *ike_sa_manager;
101
102 /**
103 * A configuration_t instance.
104 */
105 configuration_t *configuration;
106
107 /**
108 * The Sender-Thread.
109 */
110 sender_t *sender;
111
112 /**
113 * The Receiver-Thread.
114 */
115 receiver_t *receiver;
116
117 /**
118 * The Scheduler-Thread.
119 */
120 scheduler_t *scheduler;
121
122 /**
123 * The Thread pool managing the worker threads.
124 */
125 thread_pool_t *thread_pool;
126
127 /**
128 * Kernel Interface to communicate with kernel
129 */
130 kernel_interface_t *kernel_interface;
131
132 /**
133 * @brief Shut down the daemon.
134 *
135 * @param this the daemon to kill
136 * @param reason describtion why it will be killed
137 */
138 void (*kill) (daemon_t *this, char *reason);
139 };
140
141 /**
142 * The one and only instance of the daemon.
143 */
144 extern daemon_t *charon;
145
146 #endif /*DAEMON_H_*/