[PATCH] supplicant: Use ap_vendor_elements in probe and assoc requests.
greearb at candelatech.com
greearb at candelatech.com
Fri Apr 1 17:25:09 PDT 2016
From: Ben Greear <greearb at candelatech.com>
This lets user specify additional IEs for probe requests and
association requests. This patch re-uses much of the existing
ap_vendor_elements support in wpa_supplicant.
Signed-off-by: Ben Greear <greearb at candelatech.com>
---
wpa_supplicant/scan.c | 8 ++++++++
wpa_supplicant/sme.c | 14 ++++++++++++++
wpa_supplicant/wpa_supplicant.c | 13 +++++++++++++
3 files changed, 35 insertions(+)
diff --git a/wpa_supplicant/scan.c b/wpa_supplicant/scan.c
index 619654b..2f68a90 100644
--- a/wpa_supplicant/scan.c
+++ b/wpa_supplicant/scan.c
@@ -512,6 +512,14 @@ static struct wpabuf * wpa_supplicant_extra_ies(struct wpa_supplicant *wpa_s)
wpas_mbo_scan_ie(wpa_s, extra_ie);
#endif /* CONFIG_MBO */
+ /* Add user-specified IE */
+ if (wpa_s->conf->ap_vendor_elements) {
+ int ln = wpabuf_len(wpa_s->conf->ap_vendor_elements);
+ if (wpabuf_resize(&extra_ie, ln) == 0) {
+ wpabuf_put_buf(extra_ie, wpa_s->conf->ap_vendor_elements);
+ }
+ }
+
return extra_ie;
}
diff --git a/wpa_supplicant/sme.c b/wpa_supplicant/sme.c
index a6ace1a..35cadcc 100644
--- a/wpa_supplicant/sme.c
+++ b/wpa_supplicant/sme.c
@@ -464,6 +464,20 @@ static void sme_send_authentication(struct wpa_supplicant *wpa_s,
os_memcpy(pos, ext_capab, ext_capab_len);
}
+ /* Add user-specified IE */
+ if (wpa_s->conf->ap_vendor_elements) {
+ int v_ies_len = wpabuf_len(wpa_s->conf->ap_vendor_elements);
+
+ if (wpa_s->sme.assoc_req_ie_len + v_ies_len <= sizeof(wpa_s->sme.assoc_req_ie)) {
+ os_memcpy(wpa_s->sme.assoc_req_ie + wpa_s->sme.assoc_req_ie_len,
+ wpabuf_head(wpa_s->conf->ap_vendor_elements), v_ies_len);
+ wpa_s->sme.assoc_req_ie_len += v_ies_len;
+ wpa_msg(wpa_s, MSG_INFO, "SME: added user-specified vendor elements, len: %d",
+ v_ies_len);
+ }
+ }
+
+
#ifdef CONFIG_HS20
if (is_hs20_network(wpa_s, ssid, bss)) {
struct wpabuf *hs20;
diff --git a/wpa_supplicant/wpa_supplicant.c b/wpa_supplicant/wpa_supplicant.c
index 3df1b7d..d3644d4 100644
--- a/wpa_supplicant/wpa_supplicant.c
+++ b/wpa_supplicant/wpa_supplicant.c
@@ -2434,6 +2434,19 @@ static void wpas_start_assoc_cb(struct wpa_radio_work *work, int deinit)
}
#endif /* CONFIG_MBO */
+ /* Add user-specified IE */
+ if (wpa_s->conf->ap_vendor_elements) {
+ int v_ies_len = wpabuf_len(wpa_s->conf->ap_vendor_elements);
+
+ if (wpa_ie_len + v_ies_len <= sizeof(wpa_ie)) {
+ os_memcpy(wpa_ie + wpa_ie_len,
+ wpabuf_head(wpa_s->conf->ap_vendor_elements), v_ies_len);
+ wpa_ie_len += v_ies_len;
+ wpa_msg(wpa_s, MSG_INFO, "start-assoc-cb, added user-specified vendor elements, len: %d",
+ v_ies_len);
+ }
+ }
+
wpa_clear_keys(wpa_s, bss ? bss->bssid : NULL);
use_crypt = 1;
cipher_pairwise = wpa_s->pairwise_cipher;
--
1.9.3
More information about the Hostap
mailing list