configure recommendation policy via strongswan.conf
authorAndreas Steffen <andreas.steffen@strongswan.org>
Sun, 14 Nov 2010 10:23:47 +0000 (11:23 +0100)
committerAndreas Steffen <andreas.steffen@strongswan.org>
Sun, 14 Nov 2010 10:23:47 +0000 (11:23 +0100)
src/libcharon/Makefile.am
src/libcharon/plugins/tnc_imv/tnc_imv_manager.c
src/libcharon/tnc/imv/imv_recommendations.c [new file with mode: 0644]
src/libcharon/tnc/imv/imv_recommendations.h

index bb820d7..3fa2d6b 100644 (file)
@@ -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
 
index 527879e..f378510 100644 (file)
@@ -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 (file)
index 0000000..99c92c7
--- /dev/null
@@ -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"
+);
+
index daf618b..c0fe01b 100644 (file)
 #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;
 
 /**