RADIUS DAS: Support Chargeable-User-Identity with Disconnect-Request

Chargeable-User-Identity can now be used in Disconnect-Request to
identify the station to be disconnected.

Signed-hostap: Jouni Malinen <j@w1.fi>
This commit is contained in:
Jouni Malinen 2012-06-17 19:44:46 +03:00
parent e58b5ffed7
commit 302fc0a3c7
3 changed files with 19 additions and 0 deletions

View file

@ -541,6 +541,17 @@ static struct sta_info * hostapd_das_find_sta(struct hostapd_data *hapd,
}
}
if (sta == NULL && attr->cui) {
for (sta = hapd->sta_list; sta; sta = sta->next) {
struct wpabuf *cui;
cui = ieee802_1x_get_radius_cui(sta->eapol_sm);
if (cui && wpabuf_len(cui) == attr->cui_len &&
os_memcmp(wpabuf_head(cui), attr->cui,
attr->cui_len) == 0)
break;
}
}
if (sta == NULL && attr->user_name) {
for (sta = hapd->sta_list; sta; sta = sta->next) {
u8 *identity;

View file

@ -97,6 +97,12 @@ static struct radius_msg * radius_das_disconnect(struct radius_das_data *das,
attrs.acct_session_id_len = len;
}
if (radius_msg_get_attr_ptr(msg, RADIUS_ATTR_CHARGEABLE_USER_IDENTITY,
&buf, &len, NULL) == 0) {
attrs.cui = buf;
attrs.cui_len = len;
}
res = das->disconnect(das->ctx, &attrs);
switch (res) {
case RADIUS_DAS_NAS_MISMATCH:

View file

@ -23,6 +23,8 @@ struct radius_das_attrs {
size_t user_name_len;
const u8 *acct_session_id;
size_t acct_session_id_len;
const u8 *cui;
size_t cui_len;
};
struct radius_das_conf {