Allow clients to request a configured EAP method via EAP-Nak

This commit is contained in:
Tobias Brunner
2012-08-31 11:40:27 +02:00
parent 34742f1bf8
commit 78e8dca94f
5 changed files with 37 additions and 8 deletions
@@ -336,7 +336,8 @@ static void write_type(bio_writer_t *writer, eap_type_t type, u_int32_t vendor,
/*
* Described in header
*/
eap_payload_t *eap_payload_create_nak(u_int8_t identifier, bool expanded)
eap_payload_t *eap_payload_create_nak(u_int8_t identifier, eap_type_t type,
u_int32_t vendor, bool expanded)
{
enumerator_t *enumerator;
eap_type_t reg_type;
@@ -356,6 +357,11 @@ eap_payload_t *eap_payload_create_nak(u_int8_t identifier, bool expanded)
enumerator = charon->eap->create_enumerator(charon->eap, EAP_PEER);
while (enumerator->enumerate(enumerator, &reg_type, &reg_vendor))
{
if ((type && type != reg_type) ||
(type && vendor && vendor != reg_vendor))
{ /* the preferred type is only sent if we actually find it */
continue;
}
if (!reg_vendor || expanded)
{
write_type(writer, reg_type, reg_vendor, expanded);