oops, should have been a bitwise and
[strongswan.git] / src / libcharon / daemon.h
index 7b2362b..04f1fc2 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
+ * @defgroup ckernel kernel
+ * @ingroup libcharon
  *
  * @defgroup network network
- * @ingroup charon
+ * @ingroup libcharon
  *
  * @defgroup cplugins plugins
- * @ingroup charon
+ * @ingroup libcharon
  *
- * @defgroup processing processing
- * @ingroup charon
+ * @defgroup cprocessing processing
+ * @ingroup libcharon
  *
- * @defgroup jobs jobs
- * @ingroup processing
+ * @defgroup cjobs jobs
+ * @ingroup cprocessing
  *
  * @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.
@@ -149,9 +140,6 @@ typedef struct daemon_t daemon_t;
 #include <network/sender.h>
 #include <network/receiver.h>
 #include <network/socket_manager.h>
-#include <processing/scheduler.h>
-#include <processing/processor.h>
-#include <kernel/kernel_interface.h>
 #include <control/controller.h>
 #include <bus/bus.h>
 #include <bus/listeners/file_logger.h>
@@ -159,9 +147,11 @@ 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>
+#include <tnc/imc/imc_manager.h>
+#include <tnc/imv/imv_manager.h>
+#include <tnc/tnccs/tnccs_manager.h>
 
 #ifdef ME
 #include <sa/connect_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;
@@ -235,16 +209,6 @@ struct daemon_t {
        receiver_t *receiver;
 
        /**
-        * The Scheduler-Thread.
-        */
-       scheduler_t *scheduler;
-
-       /**
-        * Job processing using a thread pool.
-        */
-       processor_t *processor;
-
-       /**
         * The signaling bus.
         */
        bus_t *bus;
@@ -260,11 +224,6 @@ struct daemon_t {
        linked_list_t *sys_loggers;
 
        /**
-        * Kernel Interface to communicate with kernel
-        */
-       kernel_interface_t *kernel_interface;
-
-       /**
         * Controller to control the daemon
         */
        controller_t *controller;
@@ -279,6 +238,21 @@ struct daemon_t {
         */
        sim_manager_t *sim;
 
+       /**
+        * TNC IMC manager controlling Integrity Measurement Collectors
+        */
+       imc_manager_t *imcs;
+
+       /**
+        * TNC IMV manager controlling Integrity Measurement Verifiers
+        */
+       imv_manager_t *imvs;
+
+       /**
+        * TNCCS manager to maintain registered TNCCS protocols
+        */
+       tnccs_manager_t *tnccs;
+
 #ifdef ME
        /**
         * Connect manager
@@ -309,11 +283,50 @@ 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);
+
+       /**
+        * 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.
+ *
+ * This function initializes the bus, listeners can be registered before
+ * calling initialize().
+ *
+ * @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_ @}*/