BEACON_REQ_DURATION,
BEACON_REQ_BSSID,
BEACON_REQ_SSID,
+ BEACON_REQ_REPORTING_DETAIL,
+ BEACON_REQ_CHANNEL_REPORTS,
__BEACON_REQ_MAX,
};
[BEACON_REQ_MODE] = { "mode", BLOBMSG_TYPE_INT32 },
[BEACON_REQ_BSSID] = { "bssid", BLOBMSG_TYPE_STRING },
[BEACON_REQ_SSID] = { "ssid", BLOBMSG_TYPE_STRING },
+ [BEACON_REQ_REPORTING_DETAIL] = { "reporting_detail", BLOBMSG_TYPE_INT32 },
+ [BEACON_REQ_CHANNEL_REPORTS] = { "channel_reports", BLOBMSG_TYPE_ARRAY },
};
static int
u8 addr[ETH_ALEN];
int mode, rem, ret;
int buf_len = 13;
+ int reporting_detail = 255;
blobmsg_parse(beacon_req_policy, __BEACON_REQ_MAX, tb, blob_data(msg), blob_len(msg));
hwaddr_aton(blobmsg_data(tb[BEACON_REQ_BSSID]), bssid))
return UBUS_STATUS_INVALID_ARGUMENT;
+ if (tb[BEACON_REQ_REPORTING_DETAIL])
+ reporting_detail = blobmsg_get_u32(tb[BEACON_REQ_REPORTING_DETAIL]);
+
req = wpabuf_alloc(buf_len);
if (!req)
return UBUS_STATUS_UNKNOWN_ERROR;
wpabuf_put_data(req, blobmsg_data(cur), blobmsg_data_len(cur) - 1);
}
+ /* as per 9-106 */
+ if (reporting_detail >= 0 && reporting_detail < 3) {
+ /* as per 9-104 */
+ wpabuf_put_u8(req, 2);
+ wpabuf_put_u8(req, 1);
+ wpabuf_put_le16(req, reporting_detail);
+ }
+
ret = hostapd_send_beacon_req(hapd, addr, 0, req);
if (ret < 0)
return -ret;