diff options
author | Daniel Golle <daniel@makrotopia.org> | 2018-04-28 21:12:19 +0200 |
---|---|---|
committer | Daniel Golle <daniel@makrotopia.org> | 2018-05-24 22:21:10 +0200 |
commit | 69f544937f8498e856690f9809a016f0d7f5f68b (patch) | |
tree | c960bb0f4672ca1427fc7a8a8ea2741602b543b4 /package/network/services/hostapd/patches/002-mesh-factor-out-rsn-initialization.patch | |
parent | 51740777fb37cb7bdc250d74b366840269439cf3 (diff) | |
download | mtk-20170518-69f544937f8498e856690f9809a016f0d7f5f68b.zip mtk-20170518-69f544937f8498e856690f9809a016f0d7f5f68b.tar.gz mtk-20170518-69f544937f8498e856690f9809a016f0d7f5f68b.tar.bz2 |
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.patch | 133 |
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 0000000..322f1c1 --- /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 + |