summaryrefslogtreecommitdiff
path: root/src/libcharon/plugins/eap_dynamic/eap_dynamic.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/libcharon/plugins/eap_dynamic/eap_dynamic.c')
-rw-r--r--src/libcharon/plugins/eap_dynamic/eap_dynamic.c12
1 files changed, 12 insertions, 0 deletions
diff --git a/src/libcharon/plugins/eap_dynamic/eap_dynamic.c b/src/libcharon/plugins/eap_dynamic/eap_dynamic.c
index d0f0595de..83ccd3a8a 100644
--- a/src/libcharon/plugins/eap_dynamic/eap_dynamic.c
+++ b/src/libcharon/plugins/eap_dynamic/eap_dynamic.c
@@ -94,6 +94,13 @@ static eap_method_t *load_method(private_eap_dynamic_t *this,
return method;
}
+METHOD(eap_method_t, get_auth, auth_cfg_t*,
+ private_eap_dynamic_t *this)
+{
+ /* get_auth() is only registered if the EAP method supports it */
+ return this->method->get_auth(this->method);
+}
+
/**
* Select the first method we can instantiate and is supported by both peers.
*/
@@ -135,6 +142,10 @@ static void select_method(private_eap_dynamic_t *this)
this->method = load_method(this, entry->type, entry->vendor);
if (this->method)
{
+ if (this->method->get_auth)
+ {
+ this->public.interface.get_auth = _get_auth;
+ }
if (entry->vendor)
{
DBG1(DBG_IKE, "vendor specific EAP method %d-%d selected",
@@ -211,6 +222,7 @@ METHOD(eap_method_t, process, status_t,
/* restart with a different method */
this->method->destroy(this->method);
this->method = NULL;
+ this->public.interface.get_auth = NULL;
return initiate(this, out);
}
if (!this->other_types)