if (len < IEEE80211_HDRLEN)
return;
-@@ -996,6 +1002,12 @@ void handle_probe_req(struct hostapd_dat
+@@ -840,6 +846,9 @@ void handle_probe_req(struct hostapd_dat
+ if (!hapd->conf->send_probe_response)
+ return;
+
++ req.raw_elems = ie;
++ req.raw_elems_len = ie_len;
++
+ if (ieee802_11_parse_elems(ie, ie_len, &elems, 0) == ParseFailed) {
+ wpa_printf(MSG_DEBUG, "Could not parse ProbeReq from " MACSTR,
+ MAC2STR(mgmt->sa));
+@@ -996,6 +1005,12 @@ void handle_probe_req(struct hostapd_dat
}
#endif /* CONFIG_P2P */
--- a/src/ap/dfs.c
+++ b/src/ap/dfs.c
-@@ -1066,8 +1066,15 @@ static int hostapd_dfs_start_channel_swi
+@@ -1086,8 +1086,15 @@ static int hostapd_dfs_start_channel_swi
&oper_centr_freq_seg0_idx,
&oper_centr_freq_seg1_idx,
&skip_radar);
const char *type = "mgmt";
struct ubus_event_req ureq = {};
const u8 *addr;
+ char *ie_str;
+ int i;
if (req->mgmt_frame)
addr = req->mgmt_frame->sa;
if (req->ssi_signal)
blobmsg_add_u32(&b, "signal", req->ssi_signal);
blobmsg_add_u32(&b, "freq", hapd->iface->freq);
+
+ /* Add raw IEs */
+ if (req->raw_elems_len > 0) {
+ ie_str = blobmsg_alloc_string_buffer(&b, "raw_elements", req->raw_elems_len * 2 + 1);
+ for (i = 0; i < req->raw_elems_len; i++)
+ snprintf(&ie_str[i*2], 3, "%02X", req->raw_elems[i]);
+ blobmsg_add_string_buffer(&b);
+ }
if (req->elems) {
if(req->elems->ht_capabilities)
enum hostapd_ubus_event_type type;
const struct ieee80211_mgmt *mgmt_frame;
const struct ieee802_11_elems *elems;
+ size_t raw_elems_len;
+ const u8 *raw_elems;
int ssi_signal; /* dBm */
const u8 *addr;
};