Add features support to tnccs plugins
[strongswan.git] / src / libcharon / tnc / tnccs / tnccs.c
index 575b850..5a6d5a4 100644 (file)
  * for more details.
  */
 
+#define USE_TNC
+
 #include "tnccs.h"
 
+#include <daemon.h>
+
+
 ENUM(tnccs_type_names, TNCCS_UNKNOWN, TNCCS_2_0,
        "unknown TNCCS",
        "TNCCS 1.1",
        "TNCCS SOH",
        "TNCCS 2.0",
 );
+
+/**
+ * See header
+ */
+bool tnccs_method_register(plugin_t *plugin, plugin_feature_t *feature,
+                                                  bool reg, void *data)
+{
+       if (reg)
+       {
+               if (feature->type == FEATURE_CUSTOM)
+               {
+                       tnccs_type_t type = TNCCS_UNKNOWN;
+
+                       if (streq(feature->arg.custom, "tnccs-2.0"))
+                       {
+                               type = TNCCS_2_0;
+                       }
+                       else if (streq(feature->arg.custom, "tnccs-1.1"))
+                       {
+                               type = TNCCS_1_1;
+                       }
+                       else if (streq(feature->arg.custom, "tnccs-dynamic"))
+                       {
+                               type = TNCCS_DYNAMIC;
+                       }
+                       else
+                       {
+                               return FALSE;
+                       }
+                       charon->tnccs->add_method(charon->tnccs, type,
+                                                                        (tnccs_constructor_t)data);
+               }
+       }
+       else
+       {
+               charon->tnccs->remove_method(charon->tnccs, (tnccs_constructor_t)data);
+       }
+       return TRUE;
+}