Report received beacon report with BEACON-RESP-RX event
The new hostapd control interface event "BEACON-RESP-RX <STA address> <dialog token> <report mode> <beacon report>" is now used to report received beacon reports as a reponse to the REQ_BEACON operation. Signed-off-by: Jouni Malinen <j@w1.fi>
This commit is contained in:
parent
f3383366aa
commit
ec45927b8a
2 changed files with 32 additions and 3 deletions
33
src/ap/rrm.c
33
src/ap/rrm.c
|
@ -71,24 +71,47 @@ static void hostapd_handle_range_report(struct hostapd_data *hapd, u8 token,
|
|||
}
|
||||
|
||||
|
||||
static void hostapd_handle_beacon_report(struct hostapd_data *hapd,
|
||||
const u8 *addr, u8 token, u8 rep_mode,
|
||||
const u8 *pos, size_t len)
|
||||
{
|
||||
char report[2 * 255 + 1];
|
||||
|
||||
wpa_printf(MSG_DEBUG, "Beacon report token %u len %zu from " MACSTR,
|
||||
token, len, MAC2STR(addr));
|
||||
/* Skip to the beginning of the Beacon report */
|
||||
if (len < 3)
|
||||
return;
|
||||
pos += 3;
|
||||
len -= 3;
|
||||
report[0] = '\0';
|
||||
if (wpa_snprintf_hex(report, sizeof(report), pos, len) < 0)
|
||||
return;
|
||||
wpa_msg(hapd->msg_ctx, MSG_INFO, BEACON_RESP_RX MACSTR " %u %02x %s",
|
||||
MAC2STR(addr), token, rep_mode, report);
|
||||
}
|
||||
|
||||
|
||||
static void hostapd_handle_radio_msmt_report(struct hostapd_data *hapd,
|
||||
const u8 *buf, size_t len)
|
||||
{
|
||||
const struct ieee80211_mgmt *mgmt = (const struct ieee80211_mgmt *) buf;
|
||||
const u8 *pos, *ie, *end;
|
||||
u8 token;
|
||||
u8 token, rep_mode;
|
||||
|
||||
end = buf + len;
|
||||
token = mgmt->u.action.u.rrm.dialog_token;
|
||||
pos = mgmt->u.action.u.rrm.variable;
|
||||
|
||||
while ((ie = get_ie(pos, end - pos, WLAN_EID_MEASURE_REPORT))) {
|
||||
if (ie[1] < 5) {
|
||||
if (ie[1] < 3) {
|
||||
wpa_printf(MSG_DEBUG, "Bad Measurement Report element");
|
||||
break;
|
||||
}
|
||||
|
||||
wpa_printf(MSG_DEBUG, "Measurement report type %u", ie[4]);
|
||||
rep_mode = ie[3];
|
||||
wpa_printf(MSG_DEBUG, "Measurement report mode 0x%x type %u",
|
||||
rep_mode, ie[4]);
|
||||
|
||||
switch (ie[4]) {
|
||||
case MEASURE_TYPE_LCI:
|
||||
|
@ -97,6 +120,10 @@ static void hostapd_handle_radio_msmt_report(struct hostapd_data *hapd,
|
|||
case MEASURE_TYPE_FTM_RANGE:
|
||||
hostapd_handle_range_report(hapd, token, ie + 2, ie[1]);
|
||||
break;
|
||||
case MEASURE_TYPE_BEACON:
|
||||
hostapd_handle_beacon_report(hapd, mgmt->sa, token,
|
||||
rep_mode, ie + 2, ie[1]);
|
||||
break;
|
||||
default:
|
||||
wpa_printf(MSG_DEBUG,
|
||||
"Measurement report type %u is not supported",
|
||||
|
|
|
@ -290,6 +290,8 @@ extern "C" {
|
|||
|
||||
/* parameters: <STA address> <dialog token> <ack=0/1> */
|
||||
#define BEACON_REQ_TX_STATUS "BEACON-REQ-TX-STATUS "
|
||||
/* parameters: <STA address> <dialog token> <report mode> <beacon report> */
|
||||
#define BEACON_RESP_RX "BEACON-RESP-RX "
|
||||
|
||||
/* PMKSA cache entry added; parameters: <BSSID> <network_id> */
|
||||
#define PMKSA_CACHE_ADDED "PMKSA-CACHE-ADDED "
|
||||
|
|
Loading…
Reference in a new issue