This also syncs the configuration files with the default configuration files, but no extra options are activated or deactivated. The mesh patches were partially merged into hostapd 2.8, the remaining patches were extracted from patchwork and are now applied by OpenWrt. The patches still have open questions which are not fixed by the author. They were taken from this page: https://patchwork.ozlabs.org/project/hostap/list/?series=62725&state=* The changes in 007-mesh-apply-channel-attributes-before-running-Mesh.patch where first applied to hostapd, but later reverted in hostapd commit 3e949655ccc5 because they caused memory leaks. The size of the ipkgs increase a bit (between 1.3% and 2.3%): old 2018-12-02 (2.7): 283337 wpad-basic_2018-12-02-c2c6c01b-11_mipsel_24kc.ipk 252857 wpad-mini_2018-12-02-c2c6c01b-11_mipsel_24kc.ipk 417473 wpad-openssl_2018-12-02-c2c6c01b-11_mipsel_24kc.ipk 415105 wpad-wolfssl_2018-12-02-c2c6c01b-11_mipsel_24kc.ipk new 2019-04-21 (2.8): 288264 wpad-basic_2019-04-21-63962824-1_mipsel_24kc.ipk 256188 wpad-mini_2019-04-21-63962824-1_mipsel_24kc.ipk 427475 wpad-openssl_2019-04-21-63962824-1_mipsel_24kc.ipk 423071 wpad-wolfssl_2019-04-21-63962824-1_mipsel_24kc.ipk Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de> Tested-by: Stefan Lippers-Hollmann <s.l-h@gmx.de>
189 lines
4.6 KiB
Diff
189 lines
4.6 KiB
Diff
From 4bb69d15477e0f2b00e166845341dc933de47c58 Mon Sep 17 00:00:00 2001
|
|
From: Antonio Quartulli <ordex@autistici.org>
|
|
Date: Sun, 3 Jun 2012 18:22:56 +0200
|
|
Subject: [PATCHv2 601/602] wpa_supplicant: add new config params to be used
|
|
with the ibss join command
|
|
|
|
Signed-hostap: Antonio Quartulli <ordex@autistici.org>
|
|
---
|
|
src/drivers/driver.h | 6 +++
|
|
wpa_supplicant/config.c | 96 +++++++++++++++++++++++++++++++++++++++
|
|
wpa_supplicant/config_ssid.h | 6 +++
|
|
wpa_supplicant/wpa_supplicant.c | 23 +++++++---
|
|
4 files changed, 124 insertions(+), 7 deletions(-)
|
|
|
|
--- a/src/drivers/driver.h
|
|
+++ b/src/drivers/driver.h
|
|
@@ -19,6 +19,7 @@
|
|
|
|
#define WPA_SUPPLICANT_DRIVER_VERSION 4
|
|
|
|
+#include "ap/sta_info.h"
|
|
#include "common/defs.h"
|
|
#include "common/ieee802_11_defs.h"
|
|
#include "common/wpa_common.h"
|
|
@@ -791,6 +792,9 @@ struct wpa_driver_associate_params {
|
|
* responsible for selecting with which BSS to associate. */
|
|
const u8 *bssid;
|
|
|
|
+ unsigned char rates[WLAN_SUPP_RATES_MAX];
|
|
+ int mcast_rate;
|
|
+
|
|
/**
|
|
* bssid_hint - BSSID of a proposed AP
|
|
*
|
|
--- a/wpa_supplicant/config.c
|
|
+++ b/wpa_supplicant/config.c
|
|
@@ -17,6 +17,7 @@
|
|
#include "eap_peer/eap.h"
|
|
#include "p2p/p2p.h"
|
|
#include "fst/fst.h"
|
|
+#include "ap/sta_info.h"
|
|
#include "config.h"
|
|
|
|
|
|
@@ -2130,6 +2131,97 @@ static char * wpa_config_write_peerkey(c
|
|
#endif /* NO_CONFIG_WRITE */
|
|
|
|
|
|
+static int wpa_config_parse_mcast_rate(const struct parse_data *data,
|
|
+ struct wpa_ssid *ssid, int line,
|
|
+ const char *value)
|
|
+{
|
|
+ ssid->mcast_rate = (int)(strtod(value, NULL) * 10);
|
|
+
|
|
+ return 0;
|
|
+}
|
|
+
|
|
+#ifndef NO_CONFIG_WRITE
|
|
+static char * wpa_config_write_mcast_rate(const struct parse_data *data,
|
|
+ struct wpa_ssid *ssid)
|
|
+{
|
|
+ char *value;
|
|
+ int res;
|
|
+
|
|
+ if (!ssid->mcast_rate == 0)
|
|
+ return NULL;
|
|
+
|
|
+ value = os_malloc(6); /* longest: 300.0 */
|
|
+ if (value == NULL)
|
|
+ return NULL;
|
|
+ res = os_snprintf(value, 5, "%.1f", (double)ssid->mcast_rate / 10);
|
|
+ if (res < 0) {
|
|
+ os_free(value);
|
|
+ return NULL;
|
|
+ }
|
|
+ return value;
|
|
+}
|
|
+#endif /* NO_CONFIG_WRITE */
|
|
+
|
|
+static int wpa_config_parse_rates(const struct parse_data *data,
|
|
+ struct wpa_ssid *ssid, int line,
|
|
+ const char *value)
|
|
+{
|
|
+ int i;
|
|
+ char *pos, *r, *sptr, *end;
|
|
+ double rate;
|
|
+
|
|
+ pos = (char *)value;
|
|
+ r = strtok_r(pos, ",", &sptr);
|
|
+ i = 0;
|
|
+ while (pos && i < WLAN_SUPP_RATES_MAX) {
|
|
+ rate = 0.0;
|
|
+ if (r)
|
|
+ rate = strtod(r, &end);
|
|
+ ssid->rates[i] = rate * 2;
|
|
+ if (*end != '\0' || rate * 2 != ssid->rates[i])
|
|
+ return 1;
|
|
+
|
|
+ i++;
|
|
+ r = strtok_r(NULL, ",", &sptr);
|
|
+ }
|
|
+
|
|
+ return 0;
|
|
+}
|
|
+
|
|
+#ifndef NO_CONFIG_WRITE
|
|
+static char * wpa_config_write_rates(const struct parse_data *data,
|
|
+ struct wpa_ssid *ssid)
|
|
+{
|
|
+ char *value, *pos;
|
|
+ int res, i;
|
|
+
|
|
+ if (ssid->rates[0] <= 0)
|
|
+ return NULL;
|
|
+
|
|
+ value = os_malloc(6 * WLAN_SUPP_RATES_MAX + 1);
|
|
+ if (value == NULL)
|
|
+ return NULL;
|
|
+ pos = value;
|
|
+ for (i = 0; i < WLAN_SUPP_RATES_MAX - 1; i++) {
|
|
+ res = os_snprintf(pos, 6, "%.1f,", (double)ssid->rates[i] / 2);
|
|
+ if (res < 0) {
|
|
+ os_free(value);
|
|
+ return NULL;
|
|
+ }
|
|
+ pos += res;
|
|
+ }
|
|
+ res = os_snprintf(pos, 6, "%.1f",
|
|
+ (double)ssid->rates[WLAN_SUPP_RATES_MAX - 1] / 2);
|
|
+ if (res < 0) {
|
|
+ os_free(value);
|
|
+ return NULL;
|
|
+ }
|
|
+
|
|
+ value[6 * WLAN_SUPP_RATES_MAX] = '\0';
|
|
+ return value;
|
|
+}
|
|
+#endif /* NO_CONFIG_WRITE */
|
|
+
|
|
/* Helper macros for network block parser */
|
|
|
|
#ifdef OFFSET
|
|
@@ -2382,6 +2474,8 @@ static const struct parse_data ssid_fiel
|
|
{ INT(ap_max_inactivity) },
|
|
{ INT(dtim_period) },
|
|
{ INT(beacon_int) },
|
|
+ { FUNC(rates) },
|
|
+ { FUNC(mcast_rate) },
|
|
#ifdef CONFIG_MACSEC
|
|
{ INT_RANGE(macsec_policy, 0, 1) },
|
|
{ INT_RANGE(macsec_integ_only, 0, 1) },
|
|
--- a/wpa_supplicant/config_ssid.h
|
|
+++ b/wpa_supplicant/config_ssid.h
|
|
@@ -10,8 +10,10 @@
|
|
#define CONFIG_SSID_H
|
|
|
|
#include "common/defs.h"
|
|
+#include "ap/sta_info.h"
|
|
#include "utils/list.h"
|
|
#include "eap_peer/eap_config.h"
|
|
+#include "drivers/nl80211_copy.h"
|
|
|
|
|
|
#define DEFAULT_EAP_WORKAROUND ((unsigned int) -1)
|
|
@@ -788,6 +790,9 @@ struct wpa_ssid {
|
|
*/
|
|
void *parent_cred;
|
|
|
|
+ unsigned char rates[WLAN_SUPP_RATES_MAX];
|
|
+ double mcast_rate;
|
|
+
|
|
#ifdef CONFIG_MACSEC
|
|
/**
|
|
* macsec_policy - Determines the policy for MACsec secure session
|
|
--- a/wpa_supplicant/wpa_supplicant.c
|
|
+++ b/wpa_supplicant/wpa_supplicant.c
|
|
@@ -3258,6 +3258,12 @@ static void wpas_start_assoc_cb(struct w
|
|
params.beacon_int = ssid->beacon_int;
|
|
else
|
|
params.beacon_int = wpa_s->conf->beacon_int;
|
|
+ i = 0;
|
|
+ while (i < WLAN_SUPP_RATES_MAX) {
|
|
+ params.rates[i] = ssid->rates[i];
|
|
+ i++;
|
|
+ }
|
|
+ params.mcast_rate = ssid->mcast_rate;
|
|
}
|
|
|
|
params.pairwise_suite = cipher_pairwise;
|