Copy Chargeable-User-Identity in PMKSA caching case
Maintain a copy of Chargeable-User-Identity in the PMKSA cache to allow it to be included in accounting messages even if full authentication was not completed. Signed-hostap: Jouni Malinen <j@w1.fi>
This commit is contained in:
parent
302fc0a3c7
commit
182748e4fb
2 changed files with 14 additions and 2 deletions
|
@ -1,6 +1,6 @@
|
||||||
/*
|
/*
|
||||||
* hostapd - PMKSA cache for IEEE 802.11i RSN
|
* hostapd - PMKSA cache for IEEE 802.11i RSN
|
||||||
* Copyright (c) 2004-2008, Jouni Malinen <j@w1.fi>
|
* Copyright (c) 2004-2008, 2012, Jouni Malinen <j@w1.fi>
|
||||||
*
|
*
|
||||||
* This software may be distributed under the terms of the BSD license.
|
* This software may be distributed under the terms of the BSD license.
|
||||||
* See README for more details.
|
* See README for more details.
|
||||||
|
@ -40,6 +40,7 @@ static void _pmksa_cache_free_entry(struct rsn_pmksa_cache_entry *entry)
|
||||||
if (entry == NULL)
|
if (entry == NULL)
|
||||||
return;
|
return;
|
||||||
os_free(entry->identity);
|
os_free(entry->identity);
|
||||||
|
wpabuf_free(entry->cui);
|
||||||
#ifndef CONFIG_NO_RADIUS
|
#ifndef CONFIG_NO_RADIUS
|
||||||
radius_free_class(&entry->radius_class);
|
radius_free_class(&entry->radius_class);
|
||||||
#endif /* CONFIG_NO_RADIUS */
|
#endif /* CONFIG_NO_RADIUS */
|
||||||
|
@ -136,6 +137,9 @@ static void pmksa_cache_from_eapol_data(struct rsn_pmksa_cache_entry *entry,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (eapol->radius_cui)
|
||||||
|
entry->cui = wpabuf_dup(eapol->radius_cui);
|
||||||
|
|
||||||
#ifndef CONFIG_NO_RADIUS
|
#ifndef CONFIG_NO_RADIUS
|
||||||
radius_copy_class(&entry->radius_class, &eapol->radius_class);
|
radius_copy_class(&entry->radius_class, &eapol->radius_class);
|
||||||
#endif /* CONFIG_NO_RADIUS */
|
#endif /* CONFIG_NO_RADIUS */
|
||||||
|
@ -163,6 +167,11 @@ void pmksa_cache_to_eapol_data(struct rsn_pmksa_cache_entry *entry,
|
||||||
eapol->identity, eapol->identity_len);
|
eapol->identity, eapol->identity_len);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (entry->cui) {
|
||||||
|
wpabuf_free(eapol->radius_cui);
|
||||||
|
eapol->radius_cui = wpabuf_dup(entry->cui);
|
||||||
|
}
|
||||||
|
|
||||||
#ifndef CONFIG_NO_RADIUS
|
#ifndef CONFIG_NO_RADIUS
|
||||||
radius_free_class(&eapol->radius_class);
|
radius_free_class(&eapol->radius_class);
|
||||||
radius_copy_class(&eapol->radius_class, &entry->radius_class);
|
radius_copy_class(&eapol->radius_class, &entry->radius_class);
|
||||||
|
@ -299,6 +308,8 @@ pmksa_cache_add_okc(struct rsn_pmksa_cache *pmksa,
|
||||||
old_entry->identity_len);
|
old_entry->identity_len);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
if (old_entry->cui)
|
||||||
|
entry->cui = wpabuf_dup(old_entry->cui);
|
||||||
#ifndef CONFIG_NO_RADIUS
|
#ifndef CONFIG_NO_RADIUS
|
||||||
radius_copy_class(&entry->radius_class, &old_entry->radius_class);
|
radius_copy_class(&entry->radius_class, &old_entry->radius_class);
|
||||||
#endif /* CONFIG_NO_RADIUS */
|
#endif /* CONFIG_NO_RADIUS */
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
/*
|
/*
|
||||||
* hostapd - PMKSA cache for IEEE 802.11i RSN
|
* hostapd - PMKSA cache for IEEE 802.11i RSN
|
||||||
* Copyright (c) 2004-2008, Jouni Malinen <j@w1.fi>
|
* Copyright (c) 2004-2008, 2012, Jouni Malinen <j@w1.fi>
|
||||||
*
|
*
|
||||||
* This software may be distributed under the terms of the BSD license.
|
* This software may be distributed under the terms of the BSD license.
|
||||||
* See README for more details.
|
* See README for more details.
|
||||||
|
@ -25,6 +25,7 @@ struct rsn_pmksa_cache_entry {
|
||||||
|
|
||||||
u8 *identity;
|
u8 *identity;
|
||||||
size_t identity_len;
|
size_t identity_len;
|
||||||
|
struct wpabuf *cui;
|
||||||
struct radius_class_data radius_class;
|
struct radius_class_data radius_class;
|
||||||
u8 eap_type_authsrv;
|
u8 eap_type_authsrv;
|
||||||
int vlan_id;
|
int vlan_id;
|
||||||
|
|
Loading…
Reference in a new issue