Reimplemented mem pool to support multiple leases for a single identity
[strongswan.git] / src / libcharon / daemon.h
index 7b2362b..38f0256 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2006-2007 Tobias Brunner
+ * Copyright (C) 2006-2010 Tobias Brunner
  * Copyright (C) 2005-2009 Martin Willi
  * Copyright (C) 2006 Daniel Roethlisberger
  * Copyright (C) 2005 Jan Hutter
  */
 
 /**
- * @defgroup charon charon
+ * @defgroup libcharon libcharon
  *
  * @defgroup bus bus
- * @ingroup charon
+ * @ingroup libcharon
  *
  * @defgroup listeners listeners
  * @ingroup bus
  *
  * @defgroup config config
- * @ingroup charon
- *
- * @defgroup attributes attributes
- * @ingroup config
+ * @ingroup libcharon
  *
  * @defgroup control control
- * @ingroup charon
- *
- * @defgroup ccredentials credentials
- * @ingroup charon
- *
- * @defgroup sets sets
- * @ingroup ccredentials
+ * @ingroup libcharon
  *
  * @defgroup encoding encoding
- * @ingroup charon
+ * @ingroup libcharon
  *
  * @defgroup payloads payloads
  * @ingroup encoding
  *
  * @defgroup kernel kernel
- * @ingroup charon
+ * @ingroup libcharon
  *
  * @defgroup network network
- * @ingroup charon
+ * @ingroup libcharon
  *
  * @defgroup cplugins plugins
- * @ingroup charon
+ * @ingroup libcharon
  *
  * @defgroup processing processing
- * @ingroup charon
+ * @ingroup libcharon
  *
  * @defgroup jobs jobs
  * @ingroup processing
  *
  * @defgroup sa sa
- * @ingroup charon
+ * @ingroup libcharon
  *
  * @defgroup authenticators authenticators
  * @ingroup sa
@@ -73,7 +64,7 @@
  * @defgroup tasks tasks
  * @ingroup sa
  *
- * @addtogroup charon
+ * @addtogroup libcharon
  * @{
  *
  * IKEv2 keying daemon.
@@ -159,7 +150,6 @@ typedef struct daemon_t daemon_t;
 #include <sa/ike_sa_manager.h>
 #include <sa/trap_manager.h>
 #include <config/backend_manager.h>
-#include <credentials/credential_manager.h>
 #include <sa/authenticators/eap/eap_manager.h>
 #include <sa/authenticators/eap/sim_manager.h>
 
@@ -169,11 +159,6 @@ typedef struct daemon_t daemon_t;
 #endif /* ME */
 
 /**
- * Name of the daemon.
- */
-#define DAEMON_NAME "charon"
-
-/**
  * Number of threads in the thread pool, if not specified in config.
  */
 #define DEFAULT_THREADS 16
@@ -189,12 +174,6 @@ typedef struct daemon_t daemon_t;
 #define IKEV2_NATT_PORT 4500
 
 /**
- * PID file, in which charon stores its process id
- */
-#define PID_FILE IPSEC_PIDDIR "/charon.pid"
-
-
-/**
  * Main class of daemon, contains some globals.
  */
 struct daemon_t {
@@ -220,11 +199,6 @@ struct daemon_t {
        backend_manager_t *backends;
 
        /**
-        * Manager for the credential backends
-        */
-       credential_manager_t *credentials;
-
-       /**
         * The Sender-Thread.
         */
        sender_t *sender;
@@ -309,11 +283,47 @@ struct daemon_t {
         * drop these.
         */
        void (*keep_cap)(daemon_t *this, u_int cap);
+
+       /**
+        * Drop all capabilities of the current process.
+        *
+        * Drops all capabalities, excect those exlcuded using keep_cap().
+        * This should be called after the initialization of the daemon because
+        * some plugins require the process to keep additional capabilities.
+        *
+        * @return              TRUE if successful, FALSE otherwise
+        */
+       bool (*drop_capabilities)(daemon_t *this);
+
+       /**
+        * Initialize the daemon.
+        */
+       bool (*initialize)(daemon_t *this, bool syslog, level_t levels[]);
+
+       /**
+        * Starts the daemon, i.e. spawns the threads of the thread pool.
+        */
+       void (*start)(daemon_t *this);
+
 };
 
 /**
  * The one and only instance of the daemon.
+ *
+ * Set between libcharon_init() and libcharon_deinit() calls.
  */
 extern daemon_t *charon;
 
+/**
+ * Initialize libcharon and create the "charon" instance of daemon_t.
+ *
+ * @return             FALSE if integrity check failed
+ */
+bool libcharon_init();
+
+/**
+ * Deinitialize libcharon and destroy the "charon" instance of daemon_t.
+ */
+void libcharon_deinit();
+
 #endif /** DAEMON_H_ @}*/