eap-dynamic: Publish the get_auth() method of the wrapped EAP method

Fixes #2238.
This commit is contained in:
Tobias Brunner
2017-02-07 10:52:24 +01:00
parent 124a1eb8cf
commit 865fd804ee
@@ -94,6 +94,13 @@ static eap_method_t *load_method(private_eap_dynamic_t *this,
return method; 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. * 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); this->method = load_method(this, entry->type, entry->vendor);
if (this->method) if (this->method)
{ {
if (this->method->get_auth)
{
this->public.interface.get_auth = _get_auth;
}
if (entry->vendor) if (entry->vendor)
{ {
DBG1(DBG_IKE, "vendor specific EAP method %d-%d selected", 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 */ /* restart with a different method */
this->method->destroy(this->method); this->method->destroy(this->method);
this->method = NULL; this->method = NULL;
this->public.interface.get_auth = NULL;
return initiate(this, out); return initiate(this, out);
} }
if (!this->other_types) if (!this->other_types)