From 6f449d2efdacaf5bfdc88f2c20130451e0c53d70 Mon Sep 17 00:00:00 2001 From: Tobias Brunner Date: Mon, 12 Jul 2010 10:57:46 +0200 Subject: [PATCH] Moved kernel interface to libhydra. --- src/libcharon/Android.mk | 4 --- src/libcharon/Makefile.am | 4 --- src/libcharon/config/child_cfg.h | 36 +++---------------- src/libcharon/daemon.c | 6 ++-- src/libcharon/daemon.h | 8 +---- src/libcharon/kernel/kernel_handler.h | 2 +- src/libhydra/Android.mk | 4 +++ src/libhydra/Makefile.am | 4 +++ src/libhydra/hydra.c | 2 ++ src/libhydra/hydra.h | 9 +++++ .../kernel/kernel_interface.c | 2 +- .../kernel/kernel_interface.h | 3 +- .../kernel/kernel_ipsec.c | 0 .../kernel/kernel_ipsec.h | 33 +++++++++++++++-- .../kernel/kernel_listener.h | 2 +- .../kernel/kernel_net.h | 2 +- 16 files changed, 61 insertions(+), 60 deletions(-) rename src/{libcharon => libhydra}/kernel/kernel_interface.c (99%) rename src/{libcharon => libhydra}/kernel/kernel_interface.h (99%) rename src/{libcharon => libhydra}/kernel/kernel_ipsec.c (100%) rename src/{libcharon => libhydra}/kernel/kernel_ipsec.h (93%) rename src/{libcharon => libhydra}/kernel/kernel_listener.h (99%) rename src/{libcharon => libhydra}/kernel/kernel_net.h (99%) diff --git a/src/libcharon/Android.mk b/src/libcharon/Android.mk index f275998d26..2724b9b768 100644 --- a/src/libcharon/Android.mk +++ b/src/libcharon/Android.mk @@ -41,10 +41,6 @@ encoding/payloads/ts_payload.c encoding/payloads/ts_payload.h \ encoding/payloads/unknown_payload.c encoding/payloads/unknown_payload.h \ encoding/payloads/vendor_id_payload.c encoding/payloads/vendor_id_payload.h \ kernel/kernel_handler.c kernel/kernel_handler.h \ -kernel/kernel_interface.c kernel/kernel_interface.h \ -kernel/kernel_ipsec.c kernel/kernel_ipsec.h \ -kernel/kernel_net.h \ -kernel/kernel_listener.h \ network/packet.c network/packet.h \ network/receiver.c network/receiver.h \ network/sender.c network/sender.h \ diff --git a/src/libcharon/Makefile.am b/src/libcharon/Makefile.am index 9fc67c7b30..ca2b8ffafa 100644 --- a/src/libcharon/Makefile.am +++ b/src/libcharon/Makefile.am @@ -39,10 +39,6 @@ encoding/payloads/ts_payload.c encoding/payloads/ts_payload.h \ encoding/payloads/unknown_payload.c encoding/payloads/unknown_payload.h \ encoding/payloads/vendor_id_payload.c encoding/payloads/vendor_id_payload.h \ kernel/kernel_handler.c kernel/kernel_handler.h \ -kernel/kernel_interface.c kernel/kernel_interface.h \ -kernel/kernel_ipsec.c kernel/kernel_ipsec.h \ -kernel/kernel_net.h \ -kernel/kernel_listener.h \ network/packet.c network/packet.h \ network/receiver.c network/receiver.h \ network/sender.c network/sender.h \ diff --git a/src/libcharon/config/child_cfg.h b/src/libcharon/config/child_cfg.h index d34835ead7..a14d96c927 100644 --- a/src/libcharon/config/child_cfg.h +++ b/src/libcharon/config/child_cfg.h @@ -25,8 +25,6 @@ typedef enum action_t action_t; typedef enum ipcomp_transform_t ipcomp_transform_t; -typedef struct lifetime_cfg_t lifetime_cfg_t; -typedef struct mark_t mark_t; typedef struct child_cfg_t child_cfg_t; #include @@ -67,32 +65,6 @@ enum ipcomp_transform_t { */ extern enum_name_t *ipcomp_transform_names; -/** - * A lifetime_cfg_t defines the lifetime limits of a CHILD_SA. - * - * Set any of these values to 0 to ignore. - */ -struct lifetime_cfg_t { - struct { - /** Limit before the CHILD_SA gets invalid. */ - u_int64_t life; - /** Limit before the CHILD_SA gets rekeyed. */ - u_int64_t rekey; - /** The range of a random value subtracted from rekey. */ - u_int64_t jitter; - } time, bytes, packets; -}; - -/** - * A mark_t defines an optional mark in a CHILD_SA. - */ -struct mark_t { - /** Mark value */ - u_int32_t value; - /** Mark mask */ - u_int32_t mask; -}; - /** * A child_cfg_t defines the config template for a CHILD_SA. * @@ -238,7 +210,7 @@ struct child_cfg_t { * Check whether IPComp should be used, if the other peer supports it. * * @return TRUE, if IPComp should be used - * FALSE, otherwise + * FALSE, otherwise */ bool (*use_ipcomp)(child_cfg_t *this); @@ -259,7 +231,7 @@ struct child_cfg_t { /** * Optional mark for CHILD_SA * - * @param inbound TRUE for inbound, FALSE for outbound + * @param inbound TRUE for inbound, FALSE for outbound * @return mark */ mark_t (*get_mark)(child_cfg_t *this, bool inbound); @@ -277,7 +249,7 @@ struct child_cfg_t { * Check whether IPsec transport SA should be set up in proxy mode * * @return TRUE, if proxy mode should be used - * FALSE, otherwise + * FALSE, otherwise */ bool (*use_proxy_mode)(child_cfg_t *this); @@ -285,7 +257,7 @@ struct child_cfg_t { * Check whether IPsec policies should be installed in the kernel * * @return TRUE, if IPsec kernel policies should be installed - * FALSE, otherwise + * FALSE, otherwise */ bool (*install_policy)(child_cfg_t *this); diff --git a/src/libcharon/daemon.c b/src/libcharon/daemon.c index 3e6ca0316e..f05870d61e 100644 --- a/src/libcharon/daemon.c +++ b/src/libcharon/daemon.c @@ -115,10 +115,9 @@ static void destroy(private_daemon_t *this) #ifdef CAPABILITIES_LIBCAP cap_free(this->caps); #endif /* CAPABILITIES_LIBCAP */ + DESTROY_IF(this->kernel_handler); DESTROY_IF(this->public.traps); DESTROY_IF(this->public.ike_sa_manager); - DESTROY_IF(this->kernel_handler); - DESTROY_IF(this->public.kernel_interface); DESTROY_IF(this->public.controller); DESTROY_IF(this->public.eap); DESTROY_IF(this->public.sim); @@ -368,10 +367,9 @@ METHOD(daemon_t, initialize, bool, this->public.eap = eap_manager_create(); this->public.sim = sim_manager_create(); this->public.backends = backend_manager_create(); - this->public.kernel_interface = kernel_interface_create(); - this->kernel_handler = kernel_handler_create(); this->public.socket = socket_manager_create(); this->public.traps = trap_manager_create(); + this->kernel_handler = kernel_handler_create(); /* load plugins, further infrastructure may need it */ if (!lib->plugins->load(lib->plugins, NULL, diff --git a/src/libcharon/daemon.h b/src/libcharon/daemon.h index b7d5d9f770..783f43c5fa 100644 --- a/src/libcharon/daemon.h +++ b/src/libcharon/daemon.h @@ -37,7 +37,7 @@ * @defgroup payloads payloads * @ingroup encoding * - * @defgroup kernel kernel + * @defgroup ckernel kernel * @ingroup libcharon * * @defgroup network network @@ -140,7 +140,6 @@ typedef struct daemon_t daemon_t; #include #include #include -#include #include #include #include @@ -221,11 +220,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 */ diff --git a/src/libcharon/kernel/kernel_handler.h b/src/libcharon/kernel/kernel_handler.h index f1fa0bdfcf..48ad6889c9 100644 --- a/src/libcharon/kernel/kernel_handler.h +++ b/src/libcharon/kernel/kernel_handler.h @@ -15,7 +15,7 @@ /** * @defgroup kernel_handler kernel_handler - * @{ @ingroup kernel + * @{ @ingroup ckernel */ #ifndef KERNEL_HANDLER_H_ diff --git a/src/libhydra/Android.mk b/src/libhydra/Android.mk index 40fa00dff2..8439cf8ba3 100644 --- a/src/libhydra/Android.mk +++ b/src/libhydra/Android.mk @@ -8,6 +8,10 @@ attributes/attributes.c attributes/attributes.h \ attributes/attribute_provider.h attributes/attribute_handler.h \ attributes/attribute_manager.c attributes/attribute_manager.h \ attributes/mem_pool.c attributes/mem_pool.h \ +kernel/kernel_interface.c kernel/kernel_interface.h \ +kernel/kernel_ipsec.c kernel/kernel_ipsec.h \ +kernel/kernel_net.h \ +kernel/kernel_listener.h \ processing/jobs/job.h \ processing/jobs/callback_job.c processing/jobs/callback_job.h \ processing/processor.c processing/processor.h \ diff --git a/src/libhydra/Makefile.am b/src/libhydra/Makefile.am index 1de4aa2013..62ec8f4a25 100644 --- a/src/libhydra/Makefile.am +++ b/src/libhydra/Makefile.am @@ -6,6 +6,10 @@ attributes/attributes.c attributes/attributes.h \ attributes/attribute_provider.h attributes/attribute_handler.h \ attributes/attribute_manager.c attributes/attribute_manager.h \ attributes/mem_pool.c attributes/mem_pool.h \ +kernel/kernel_interface.c kernel/kernel_interface.h \ +kernel/kernel_ipsec.c kernel/kernel_ipsec.h \ +kernel/kernel_net.h \ +kernel/kernel_listener.h \ processing/jobs/job.h \ processing/jobs/callback_job.c processing/jobs/callback_job.h \ processing/processor.c processing/processor.h \ diff --git a/src/libhydra/hydra.c b/src/libhydra/hydra.c index 5418802e85..438ff656c5 100644 --- a/src/libhydra/hydra.c +++ b/src/libhydra/hydra.c @@ -42,6 +42,7 @@ void libhydra_deinit() { private_hydra_t *this = (private_hydra_t*)hydra; this->public.attributes->destroy(this->public.attributes); + this->public.kernel_interface->destroy(this->public.kernel_interface); this->public.scheduler->destroy(this->public.scheduler); this->public.processor->destroy(this->public.processor); free((void*)this->public.daemon); @@ -59,6 +60,7 @@ bool libhydra_init(const char *daemon) INIT(this, .public = { .attributes = attribute_manager_create(), + .kernel_interface = kernel_interface_create(), .processor = processor_create(), .daemon = strdup(daemon ?: "libhydra"), }, diff --git a/src/libhydra/hydra.h b/src/libhydra/hydra.h index 2ae8bba76f..29813fbfef 100644 --- a/src/libhydra/hydra.h +++ b/src/libhydra/hydra.h @@ -19,6 +19,9 @@ * @defgroup attributes attributes * @ingroup libhydra * + * @defgroup hkernel kernel + * @ingroup libhydra + * * @defgroup hplugins plugins * @ingroup libhydra * @@ -38,6 +41,7 @@ typedef struct hydra_t hydra_t; #include +#include #include #include @@ -53,6 +57,11 @@ struct hydra_t { */ attribute_manager_t *attributes; + /** + * kernel interface to communicate with kernel + */ + kernel_interface_t *kernel_interface; + /** * process jobs using a thread pool */ diff --git a/src/libcharon/kernel/kernel_interface.c b/src/libhydra/kernel/kernel_interface.c similarity index 99% rename from src/libcharon/kernel/kernel_interface.c rename to src/libhydra/kernel/kernel_interface.c index cecaef728d..77eaf68c40 100644 --- a/src/libcharon/kernel/kernel_interface.c +++ b/src/libhydra/kernel/kernel_interface.c @@ -17,7 +17,7 @@ #include "kernel_interface.h" -#include +#include #include #include diff --git a/src/libcharon/kernel/kernel_interface.h b/src/libhydra/kernel/kernel_interface.h similarity index 99% rename from src/libcharon/kernel/kernel_interface.h rename to src/libhydra/kernel/kernel_interface.h index 06c526581e..ec1f561cc6 100644 --- a/src/libcharon/kernel/kernel_interface.h +++ b/src/libhydra/kernel/kernel_interface.h @@ -18,7 +18,7 @@ /** * @defgroup kernel_interface kernel_interface - * @{ @ingroup kernel + * @{ @ingroup hkernel */ #ifndef KERNEL_INTERFACE_H_ @@ -28,7 +28,6 @@ typedef struct kernel_interface_t kernel_interface_t; #include #include -#include #include #include diff --git a/src/libcharon/kernel/kernel_ipsec.c b/src/libhydra/kernel/kernel_ipsec.c similarity index 100% rename from src/libcharon/kernel/kernel_ipsec.c rename to src/libhydra/kernel/kernel_ipsec.c diff --git a/src/libcharon/kernel/kernel_ipsec.h b/src/libhydra/kernel/kernel_ipsec.h similarity index 93% rename from src/libcharon/kernel/kernel_ipsec.h rename to src/libhydra/kernel/kernel_ipsec.h index 340b7e91d8..233dca305b 100644 --- a/src/libcharon/kernel/kernel_ipsec.h +++ b/src/libhydra/kernel/kernel_ipsec.h @@ -18,7 +18,7 @@ /** * @defgroup kernel_ipsec kernel_ipsec - * @{ @ingroup kernel + * @{ @ingroup hkernel */ #ifndef KERNEL_IPSEC_H_ @@ -27,11 +27,12 @@ typedef enum ipsec_mode_t ipsec_mode_t; typedef enum policy_dir_t policy_dir_t; typedef struct kernel_ipsec_t kernel_ipsec_t; +typedef struct lifetime_cfg_t lifetime_cfg_t; +typedef struct mark_t mark_t; #include #include -#include -#include +#include /** * Mode of a CHILD_SA. @@ -69,6 +70,32 @@ enum policy_dir_t { */ extern enum_name_t *policy_dir_names; +/** + * A lifetime_cfg_t defines the lifetime limits of an SA. + * + * Set any of these values to 0 to ignore. + */ +struct lifetime_cfg_t { + struct { + /** Limit before the SA gets invalid. */ + u_int64_t life; + /** Limit before the SA gets rekeyed. */ + u_int64_t rekey; + /** The range of a random value subtracted from rekey. */ + u_int64_t jitter; + } time, bytes, packets; +}; + +/** + * A mark_t defines an optional mark in an IPsec SA. + */ +struct mark_t { + /** Mark value */ + u_int32_t value; + /** Mark mask */ + u_int32_t mask; +}; + /** * Interface to the ipsec subsystem of the kernel. * diff --git a/src/libcharon/kernel/kernel_listener.h b/src/libhydra/kernel/kernel_listener.h similarity index 99% rename from src/libcharon/kernel/kernel_listener.h rename to src/libhydra/kernel/kernel_listener.h index 02e5b809e2..6f2dbd23b8 100644 --- a/src/libcharon/kernel/kernel_listener.h +++ b/src/libhydra/kernel/kernel_listener.h @@ -15,7 +15,7 @@ /** * @defgroup kernel_listener kernel_listener - * @{ @ingroup kernel + * @{ @ingroup hkernel */ #ifndef KERNEL_LISTENER_H_ diff --git a/src/libcharon/kernel/kernel_net.h b/src/libhydra/kernel/kernel_net.h similarity index 99% rename from src/libcharon/kernel/kernel_net.h rename to src/libhydra/kernel/kernel_net.h index 6625332f80..69e01f43f2 100644 --- a/src/libcharon/kernel/kernel_net.h +++ b/src/libhydra/kernel/kernel_net.h @@ -16,7 +16,7 @@ /** * @defgroup kernel_net kernel_net - * @{ @ingroup kernel + * @{ @ingroup hkernel */ #ifndef KERNEL_NET_H_ -- 2.39.5