Implemented support for multiple RADIUS servers

This commit is contained in:
Martin Willi
2010-07-21 17:25:09 +02:00
parent 58d2ef6e14
commit ce7967c50c
10 changed files with 911 additions and 423 deletions
+6 -11
View File
@@ -52,11 +52,6 @@ struct private_eap_radius_t {
*/
u_int32_t vendor;
/**
* EAP MSK, if method established one
*/
chunk_t msk;
/**
* RADIUS client instance
*/
@@ -248,8 +243,6 @@ METHOD(eap_method_t, process, status_t,
status = FAILED;
break;
case RMC_ACCESS_ACCEPT:
this->msk = this->client->decrypt_msk(this->client,
response, request);
if (this->class_group)
{
process_class(this, response);
@@ -277,11 +270,14 @@ METHOD(eap_method_t, get_type, eap_type_t,
}
METHOD(eap_method_t, get_msk, status_t,
private_eap_radius_t *this, chunk_t *msk)
private_eap_radius_t *this, chunk_t *out)
{
if (this->msk.ptr)
chunk_t msk;
msk = this->client->get_msk(this->client);
if (msk.len)
{
*msk = this->msk;
*out = msk;
return SUCCESS;
}
return FAILED;
@@ -306,7 +302,6 @@ METHOD(eap_method_t, destroy, void,
this->peer->destroy(this->peer);
this->server->destroy(this->server);
this->client->destroy(this->client);
chunk_clear(&this->msk);
free(this);
}