diff options
author | Andreas Steffen <andreas.steffen@strongswan.org> | 2010-11-14 11:23:47 +0100 |
---|---|---|
committer | Andreas Steffen <andreas.steffen@strongswan.org> | 2010-11-14 11:23:47 +0100 |
commit | de1cb3283a788a74e3dfeeeb4c49a4a489dad1cd (patch) | |
tree | 1c506acce6e4bb47c0223e53f723b0bfd80214a1 | |
parent | 77b6f245e48025ce33979d9a3c2eaa8b8136258b (diff) | |
download | strongswan-de1cb3283a788a74e3dfeeeb4c49a4a489dad1cd.tar.bz2 strongswan-de1cb3283a788a74e3dfeeeb4c49a4a489dad1cd.tar.xz |
configure recommendation policy via strongswan.conf
-rw-r--r-- | src/libcharon/Makefile.am | 3 | ||||
-rw-r--r-- | src/libcharon/plugins/tnc_imv/tnc_imv_manager.c | 10 | ||||
-rw-r--r-- | src/libcharon/tnc/imv/imv_recommendations.c | 24 | ||||
-rw-r--r-- | src/libcharon/tnc/imv/imv_recommendations.h | 11 |
4 files changed, 47 insertions, 1 deletions
diff --git a/src/libcharon/Makefile.am b/src/libcharon/Makefile.am index bb820d7c3..3fa2d6b60 100644 --- a/src/libcharon/Makefile.am +++ b/src/libcharon/Makefile.am @@ -90,7 +90,8 @@ sa/tasks/task.c sa/tasks/task.h \ tnc/tncif.h tnc/tncifimc.h tnc/tncifimv.h \ tnc/tncifimv_names.h tnc/tncifimv_names.c \ tnc/imc/imc.h tnc/imc/imc_manager.h \ -tnc/imv/imv.h tnc/imv/imv_manager.h tnc/imv/imv_recommendations.h \ +tnc/imv/imv.h tnc/imv/imv_manager.h \ +tnc/imv/imv_recommendations.c tnc/imv/imv_recommendations.h \ tnc/tnccs/tnccs.c tnc/tnccs/tnccs.h \ tnc/tnccs/tnccs_manager.c tnc/tnccs/tnccs_manager.h diff --git a/src/libcharon/plugins/tnc_imv/tnc_imv_manager.c b/src/libcharon/plugins/tnc_imv/tnc_imv_manager.c index 527879e11..f378510cb 100644 --- a/src/libcharon/plugins/tnc_imv/tnc_imv_manager.c +++ b/src/libcharon/plugins/tnc_imv/tnc_imv_manager.c @@ -46,6 +46,11 @@ struct private_tnc_imv_manager_t { * Next IMV ID to be assigned */ TNC_IMVID next_imv_id; + + /** + * Policy defining how to derive final recommendation from individual ones + */ + recommendation_policy_t policy; }; METHOD(imv_manager_t, add, bool, @@ -255,6 +260,7 @@ METHOD(imv_manager_t, destroy, void, imv_manager_t* tnc_imv_manager_create(void) { private_tnc_imv_manager_t *this; + recommendation_policy_t policy; INIT(this, .public = { @@ -272,6 +278,10 @@ imv_manager_t* tnc_imv_manager_create(void) .imvs = linked_list_create(), .next_imv_id = 1, ); + policy = enum_from_name(recommendation_policy_names, + lib->settings->get_str(lib->settings, + "charon.plugins.tnc-imv.recommendation_policy", "any")); + this->policy = (policy != -1) ? policy : RECOMMENDATION_POLICY_NONE; return &this->public; } diff --git a/src/libcharon/tnc/imv/imv_recommendations.c b/src/libcharon/tnc/imv/imv_recommendations.c new file mode 100644 index 000000000..99c92c78f --- /dev/null +++ b/src/libcharon/tnc/imv/imv_recommendations.c @@ -0,0 +1,24 @@ +/* + * Copyright (C) 2010 Andreas Steffen + * HSR Hochschule fuer Technik Rapperswil + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. See <http://www.fsf.org/copyleft/gpl.txt>. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + */ + +#include "imv_recommendations.h" + +ENUM(recommendation_policy_names, RECOMMENDATION_POLICY_NONE, + RECOMMENDATION_POLICY_ALL, + "none", + "any", + "all" +); + diff --git a/src/libcharon/tnc/imv/imv_recommendations.h b/src/libcharon/tnc/imv/imv_recommendations.h index daf618b65..c0fe01b60 100644 --- a/src/libcharon/tnc/imv/imv_recommendations.h +++ b/src/libcharon/tnc/imv/imv_recommendations.h @@ -24,6 +24,17 @@ #include <tnc/tncifimv.h> #include <library.h> +typedef enum recommendation_policy_t recommendation_policy_t; + +enum recommendation_policy_t { + RECOMMENDATION_POLICY_NONE, + RECOMMENDATION_POLICY_ANY, + RECOMMENDATION_POLICY_ALL +}; + +extern enum_name_t *recommendation_policy_names; + + typedef struct recommendations_t recommendations_t; /** |