summaryrefslogtreecommitdiff
path: root/src/libstrongswan/plugins/plugin_feature.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/libstrongswan/plugins/plugin_feature.c')
-rw-r--r--src/libstrongswan/plugins/plugin_feature.c18
1 files changed, 13 insertions, 5 deletions
diff --git a/src/libstrongswan/plugins/plugin_feature.c b/src/libstrongswan/plugins/plugin_feature.c
index 2d0ce8a4c..0ea5eeaf8 100644
--- a/src/libstrongswan/plugins/plugin_feature.c
+++ b/src/libstrongswan/plugins/plugin_feature.c
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2012-2013 Tobias Brunner
+ * Copyright (C) 2012-2015 Tobias Brunner
* Hochschule fuer Technik Rapperswil
*
* Copyright (C) 2011 Martin Willi
@@ -59,7 +59,7 @@ ENUM(plugin_feature_names, FEATURE_NONE, FEATURE_CUSTOM,
*/
u_int32_t plugin_feature_hash(plugin_feature_t *feature)
{
- chunk_t data;
+ chunk_t data = chunk_empty;
switch (feature->type)
{
@@ -185,7 +185,8 @@ bool plugin_feature_matches(plugin_feature_t *a, plugin_feature_t *b)
return a->arg.container == b->arg.container;
case FEATURE_EAP_SERVER:
case FEATURE_EAP_PEER:
- return a->arg.eap == b->arg.eap;
+ return a->arg.eap.vendor == b->arg.eap.vendor &&
+ a->arg.eap.type == b->arg.eap.type;
case FEATURE_DATABASE:
return a->arg.database == DB_ANY ||
a->arg.database == b->arg.database;
@@ -368,8 +369,15 @@ char* plugin_feature_get_string(plugin_feature_t *feature)
break;
case FEATURE_EAP_SERVER:
case FEATURE_EAP_PEER:
- if (asprintf(&str, "%N:%N", plugin_feature_names, feature->type,
- eap_type_short_names, feature->arg.eap) > 0)
+ if (feature->arg.eap.vendor &&
+ asprintf(&str, "%N:%d-%d", plugin_feature_names, feature->type,
+ feature->arg.eap.type, feature->arg.eap.vendor) > 0)
+ {
+ return str;
+ }
+ else if (!feature->arg.eap.vendor &&
+ asprintf(&str, "%N:%N", plugin_feature_names, feature->type,
+ eap_type_short_names, feature->arg.eap.type) > 0)
{
return str;
}