aboutsummaryrefslogtreecommitdiffstats
path: root/package/network/services/hostapd/patches/002-mesh-factor-out-rsn-initialization.patch
diff options
context:
space:
mode:
authorDaniel Golle <daniel@makrotopia.org>2018-04-28 21:12:19 +0200
committerDaniel Golle <daniel@makrotopia.org>2018-05-24 22:21:10 +0200
commit69f544937f8498e856690f9809a016f0d7f5f68b (patch)
treec960bb0f4672ca1427fc7a8a8ea2741602b543b4 /package/network/services/hostapd/patches/002-mesh-factor-out-rsn-initialization.patch
parent51740777fb37cb7bdc250d74b366840269439cf3 (diff)
downloadupstream-69f544937f8498e856690f9809a016f0d7f5f68b.tar.gz
upstream-69f544937f8498e856690f9809a016f0d7f5f68b.tar.bz2
upstream-69f544937f8498e856690f9809a016f0d7f5f68b.zip
hostapd: update to git HEAD of 2018-05-21, allow build against wolfssl
Support for building wpa_supplicant/hostapd against wolfssl has been added upstream recently, add build option to allow users using it. Signed-off-by: Daniel Golle <daniel@makrotopia.org>
Diffstat (limited to 'package/network/services/hostapd/patches/002-mesh-factor-out-rsn-initialization.patch')
-rw-r--r--package/network/services/hostapd/patches/002-mesh-factor-out-rsn-initialization.patch133
1 files changed, 133 insertions, 0 deletions
diff --git a/package/network/services/hostapd/patches/002-mesh-factor-out-rsn-initialization.patch b/package/network/services/hostapd/patches/002-mesh-factor-out-rsn-initialization.patch
new file mode 100644
index 0000000000..322f1c16ea
--- /dev/null
+++ b/package/network/services/hostapd/patches/002-mesh-factor-out-rsn-initialization.patch
@@ -0,0 +1,133 @@
+From 6da64b1e056e0b1be18b6ab37c820acb4a0f3cf4 Mon Sep 17 00:00:00 2001
+From: Peter Oh <peter.oh@bowerswilkins.com>
+Date: Tue, 17 Apr 2018 21:54:59 -0700
+Subject: [PATCH 02/16] mesh: factor out rsn initialization
+
+RSN initialization can be used in different phases
+if mesh initialization and mesh join don't happen
+in sequence such as DFS CAC is done in between,
+hence factor it out to help convering the case.
+
+Signed-off-by: Peter Oh <peter.oh@bowerswilkins.com>
+---
+ wpa_supplicant/mesh.c | 84 +++++++++++++++++++++++++------------------
+ wpa_supplicant/mesh.h | 1 +
+ 2 files changed, 50 insertions(+), 35 deletions(-)
+
+--- a/wpa_supplicant/mesh.c
++++ b/wpa_supplicant/mesh.c
+@@ -147,6 +147,53 @@ static void wpas_mesh_copy_groups(struct
+ }
+
+
++int wpas_mesh_init_rsn(struct wpa_supplicant *wpa_s)
++{
++ struct hostapd_iface *ifmsh = wpa_s->ifmsh;
++ struct mesh_conf *mconf = wpa_s->ifmsh->mconf;
++ struct wpa_ssid *ssid = wpa_s->current_ssid;
++ struct hostapd_data *bss = ifmsh->bss[0];
++ static int default_groups[] = { 19, 20, 21, 25, 26, -1 };
++ const char *password;
++ size_t len;
++
++ if (mconf->security != MESH_CONF_SEC_NONE) {
++ password = ssid->sae_password;
++ if (!password)
++ password = ssid->passphrase;
++ if (!password) {
++ wpa_printf(MSG_ERROR,
++ "mesh: Passphrase for SAE not configured");
++ return -1;
++ }
++
++ bss->conf->wpa = ssid->proto;
++ bss->conf->wpa_key_mgmt = ssid->key_mgmt;
++
++ if (wpa_s->conf->sae_groups &&
++ wpa_s->conf->sae_groups[0] > 0) {
++ wpas_mesh_copy_groups(bss, wpa_s);
++ } else {
++ bss->conf->sae_groups =
++ os_memdup(default_groups,
++ sizeof(default_groups));
++ if (!bss->conf->sae_groups)
++ return -1;
++ }
++
++ len = os_strlen(password);
++ bss->conf->ssid.wpa_passphrase =
++ dup_binstr(password, len);
++
++ wpa_s->mesh_rsn = mesh_rsn_auth_init(wpa_s, mconf);
++ if (!wpa_s->mesh_rsn)
++ return -1;
++ }
++
++ return 0;
++}
++
++
+ static int wpa_supplicant_mesh_init(struct wpa_supplicant *wpa_s,
+ struct wpa_ssid *ssid,
+ struct hostapd_freq_params *freq)
+@@ -156,9 +203,6 @@ static int wpa_supplicant_mesh_init(stru
+ struct hostapd_config *conf;
+ struct mesh_conf *mconf;
+ int basic_rates_erp[] = { 10, 20, 55, 60, 110, 120, 240, -1 };
+- static int default_groups[] = { 19, 20, 21, 25, 26, -1 };
+- const char *password;
+- size_t len;
+ int rate_len;
+ int frequency;
+
+@@ -291,38 +335,8 @@ static int wpa_supplicant_mesh_init(stru
+ return -1;
+ }
+
+- if (mconf->security != MESH_CONF_SEC_NONE) {
+- password = ssid->sae_password;
+- if (!password)
+- password = ssid->passphrase;
+- if (!password) {
+- wpa_printf(MSG_ERROR,
+- "mesh: Passphrase for SAE not configured");
+- goto out_free;
+- }
+-
+- bss->conf->wpa = ssid->proto;
+- bss->conf->wpa_key_mgmt = ssid->key_mgmt;
+-
+- if (wpa_s->conf->sae_groups &&
+- wpa_s->conf->sae_groups[0] > 0) {
+- wpas_mesh_copy_groups(bss, wpa_s);
+- } else {
+- bss->conf->sae_groups =
+- os_memdup(default_groups,
+- sizeof(default_groups));
+- if (!bss->conf->sae_groups)
+- goto out_free;
+- }
+-
+- len = os_strlen(password);
+- bss->conf->ssid.wpa_passphrase =
+- dup_binstr(password, len);
+-
+- wpa_s->mesh_rsn = mesh_rsn_auth_init(wpa_s, mconf);
+- if (!wpa_s->mesh_rsn)
+- goto out_free;
+- }
++ if (wpas_mesh_init_rsn(wpa_s))
++ goto out_free;
+
+ wpa_supplicant_conf_ap_ht(wpa_s, ssid, conf);
+
+--- a/wpa_supplicant/mesh.h
++++ b/wpa_supplicant/mesh.h
+@@ -22,6 +22,7 @@ int wpas_mesh_peer_remove(struct wpa_sup
+ int wpas_mesh_peer_add(struct wpa_supplicant *wpa_s, const u8 *addr,
+ int duration);
+ void wpas_join_mesh(struct wpa_supplicant *wpa_s);
++int wpas_mesh_init_rsn(struct wpa_supplicant *wpa_s);
+
+ #ifdef CONFIG_MESH
+