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:
parent
e58b5ffed7
commit
302fc0a3c7
3 changed files with 19 additions and 0 deletions
|
@ -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;
|
||||
|
|
|
@ -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:
|
||||
|
|
|
@ -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 {
|
||||
|
|
Loading…
Reference in a new issue