hostapd: update to latest HEAD

This fixes an issue where WDS would not work reliably upon AP->STA transition.

Signed-off-by: John Crispin <john@phrozen.org>
This commit is contained in:
John Crispin
2021-10-21 11:32:50 +02:00
parent 7d9594c3c8
commit 895e501b93

View File

@@ -1,14 +1,14 @@
From c2ac5b5848fe54c08c1fb3a7ab9667dfed160be1 Mon Sep 17 00:00:00 2001
From be83f513eea5f222916c193716896d31953a26da Mon Sep 17 00:00:00 2001
From: John Crispin <john@phrozen.org>
Date: Sat, 4 Sep 2021 05:48:27 +0200
Subject: [PATCH 01/56] hostapd: update to latest HEAD
Subject: [PATCH 03/58] hostapd: update to latest HEAD
Signed-off-by: John Crispin <john@phrozen.org>
---
package/network/services/hostapd/Makefile | 15 +-
.../hostapd/files/hostapd-basic.config | 2 +-
.../hostapd/files/hostapd-full.config | 4 +-
.../network/services/hostapd/files/hostapd.sh | 177 ++++++++---
.../network/services/hostapd/files/hostapd.sh | 179 +++++++++---
...-fix-frequency-setup-with-HE-enabled.patch | 196 -------------
...> 001-wolfssl-init-RNG-with-ECC-key.patch} | 11 +-
...-init-order-disable-pri-sec-channel-.patch | 126 --------
@@ -63,16 +63,17 @@ Signed-off-by: John Crispin <john@phrozen.org>
.../hostapd/patches/600-ubus_support.patch | 166 ++++++++---
.../hostapd/patches/700-wifi-reload.patch | 51 ++--
.../hostapd/patches/710-vlan_no_bridge.patch | 41 +++
.../patches/711-wds_bridge_force.patch | 26 ++
.../720-ACS-fix-channel-100-frequency.patch | 30 ++
.../patches/720-iface_max_num_sta.patch | 82 ++++++
.../hostapd/patches/730-ft_iface.patch | 38 +++
.../hostapd/patches/740-snoop_iface.patch | 66 +++++
.../hostapd/patches/740-snoop_iface.patch | 72 +++++
...ate-if-no-available-channel-is-found.patch | 37 ---
...of-secondary-device-types-for-P2P-gr.patch | 33 ---
.../services/hostapd/src/src/ap/ubus.c | 214 +++++++++++++-
.../services/hostapd/src/src/ap/ubus.h | 16 +
.../hostapd/src/src/utils/build_features.h | 2 -
67 files changed, 1302 insertions(+), 2345 deletions(-)
68 files changed, 1335 insertions(+), 2346 deletions(-)
delete mode 100644 package/network/services/hostapd/patches/001-HE-VHT-fix-frequency-setup-with-HE-enabled.patch
rename package/network/services/hostapd/patches/{802-wolfssl-init-RNG-with-ECC-key.patch => 001-wolfssl-init-RNG-with-ECC-key.patch} (76%)
delete mode 100644 package/network/services/hostapd/patches/002-mesh-fix-channel-init-order-disable-pri-sec-channel-.patch
@@ -103,6 +104,7 @@ Signed-off-by: John Crispin <john@phrozen.org>
delete mode 100644 package/network/services/hostapd/patches/110-wolfssl-compile-fix.patch
delete mode 100644 package/network/services/hostapd/patches/120-reconfigure-wps-credentials.patch
create mode 100644 package/network/services/hostapd/patches/710-vlan_no_bridge.patch
create mode 100644 package/network/services/hostapd/patches/711-wds_bridge_force.patch
create mode 100644 package/network/services/hostapd/patches/720-ACS-fix-channel-100-frequency.patch
create mode 100644 package/network/services/hostapd/patches/720-iface_max_num_sta.patch
create mode 100644 package/network/services/hostapd/patches/730-ft_iface.patch
@@ -179,7 +181,7 @@ index df272e443a..61b6daf861 100644
# EAP-SAKE for the integrated EAP server
#CONFIG_EAP_SAKE=y
diff --git a/package/network/services/hostapd/files/hostapd.sh b/package/network/services/hostapd/files/hostapd.sh
index aa72e09eba..c95784f054 100644
index aa72e09eba..3414a1a42b 100644
--- a/package/network/services/hostapd/files/hostapd.sh
+++ b/package/network/services/hostapd/files/hostapd.sh
@@ -48,13 +48,17 @@ hostapd_append_wpa_key_mgmt() {
@@ -463,10 +465,12 @@ index aa72e09eba..c95784f054 100644
[ -n "$ownip" ] && append bss_conf "own_ip_addr=$ownip" "$N"
[ -n "$radius_client_addr" ] && append bss_conf "radius_client_addr=$radius_client_addr" "$N"
@@ -700,6 +758,7 @@ hostapd_set_bss_options() {
@@ -699,7 +757,8 @@ hostapd_set_bss_options() {
}
append bss_conf "ssid=$ssid" "$N"
[ -n "$network_bridge" ] && append bss_conf "bridge=$network_bridge" "$N"
- [ -n "$network_bridge" ] && append bss_conf "bridge=$network_bridge" "$N"
+ [ -n "$network_bridge" ] && append bss_conf "bridge=$network_bridge${N}wds_bridge=" "$N"
+ [ -n "$network_ifname" ] && append bss_conf "snoop_iface=$network_ifname" "$N"
[ -n "$iapp_interface" ] && {
local ifname
@@ -5183,6 +5187,38 @@ index 0000000000..73db32e54a
+ } else if (os_strcmp(buf, "per_sta_vif") == 0) {
+ bss->ssid.per_sta_vif = atoi(pos);
+ } else if (os_strcmp(buf, "vlan_file") == 0) {
diff --git a/package/network/services/hostapd/patches/711-wds_bridge_force.patch b/package/network/services/hostapd/patches/711-wds_bridge_force.patch
new file mode 100644
index 0000000000..76a3547805
--- /dev/null
+++ b/package/network/services/hostapd/patches/711-wds_bridge_force.patch
@@ -0,0 +1,26 @@
+Index: hostapd-2021-05-22-b102f19b/hostapd/config_file.c
+===================================================================
+--- hostapd-2021-05-22-b102f19b.orig/hostapd/config_file.c
++++ hostapd-2021-05-22-b102f19b/hostapd/config_file.c
+@@ -2357,6 +2357,8 @@ static int hostapd_config_fill(struct ho
+ sizeof(conf->bss[0]->iface));
+ } else if (os_strcmp(buf, "bridge") == 0) {
+ os_strlcpy(bss->bridge, pos, sizeof(bss->bridge));
++ if (!bss->wds_bridge[0])
++ os_strlcpy(bss->wds_bridge, pos, sizeof(bss->wds_bridge));
+ } else if (os_strcmp(buf, "vlan_bridge") == 0) {
+ os_strlcpy(bss->vlan_bridge, pos, sizeof(bss->vlan_bridge));
+ } else if (os_strcmp(buf, "wds_bridge") == 0) {
+Index: hostapd-2021-05-22-b102f19b/src/ap/ap_drv_ops.c
+===================================================================
+--- hostapd-2021-05-22-b102f19b.orig/src/ap/ap_drv_ops.c
++++ hostapd-2021-05-22-b102f19b/src/ap/ap_drv_ops.c
+@@ -340,8 +340,6 @@ int hostapd_set_wds_sta(struct hostapd_d
+ return -1;
+ if (hapd->conf->wds_bridge[0])
+ bridge = hapd->conf->wds_bridge;
+- else if (hapd->conf->bridge[0])
+- bridge = hapd->conf->bridge;
+ return hapd->driver->set_wds_sta(hapd->drv_priv, addr, aid, val,
+ bridge, ifname_wds);
+ }
diff --git a/package/network/services/hostapd/patches/720-ACS-fix-channel-100-frequency.patch b/package/network/services/hostapd/patches/720-ACS-fix-channel-100-frequency.patch
new file mode 100644
index 0000000000..3ef19e5298
@@ -5353,12 +5389,14 @@ index 0000000000..793e8e0194
+ if (!hapd->l2) {
diff --git a/package/network/services/hostapd/patches/740-snoop_iface.patch b/package/network/services/hostapd/patches/740-snoop_iface.patch
new file mode 100644
index 0000000000..8d928f8505
index 0000000000..6e60cde844
--- /dev/null
+++ b/package/network/services/hostapd/patches/740-snoop_iface.patch
@@ -0,0 +1,66 @@
+--- a/src/ap/ap_config.h
++++ b/src/ap/ap_config.h
@@ -0,0 +1,72 @@
+Index: hostapd-2021-05-22-b102f19b/src/ap/ap_config.h
+===================================================================
+--- hostapd-2021-05-22-b102f19b.orig/src/ap/ap_config.h
++++ hostapd-2021-05-22-b102f19b/src/ap/ap_config.h
+@@ -278,6 +278,7 @@ struct hostapd_bss_config {
+ char iface[IFNAMSIZ + 1];
+ char bridge[IFNAMSIZ + 1];
@@ -5367,8 +5405,10 @@ index 0000000000..8d928f8505
+ char vlan_bridge[IFNAMSIZ + 1];
+ char wds_bridge[IFNAMSIZ + 1];
+
+--- a/src/ap/x_snoop.c
++++ b/src/ap/x_snoop.c
+Index: hostapd-2021-05-22-b102f19b/src/ap/x_snoop.c
+===================================================================
+--- hostapd-2021-05-22-b102f19b.orig/src/ap/x_snoop.c
++++ hostapd-2021-05-22-b102f19b/src/ap/x_snoop.c
+@@ -31,14 +31,16 @@ int x_snoop_init(struct hostapd_data *ha
+ return -1;
+ }
@@ -5412,12 +5452,14 @@ index 0000000000..8d928f8505
+ if (l2 == NULL) {
+ wpa_printf(MSG_DEBUG,
+ "x_snoop: Failed to initialize L2 packet processing %s",
+--- a/hostapd/config_file.c
++++ b/hostapd/config_file.c
+@@ -2357,6 +2357,8 @@ static int hostapd_config_fill(struct ho
+ sizeof(conf->bss[0]->iface));
+ } else if (os_strcmp(buf, "bridge") == 0) {
+Index: hostapd-2021-05-22-b102f19b/hostapd/config_file.c
+===================================================================
+--- hostapd-2021-05-22-b102f19b.orig/hostapd/config_file.c
++++ hostapd-2021-05-22-b102f19b/hostapd/config_file.c
+@@ -2359,6 +2359,8 @@ static int hostapd_config_fill(struct ho
+ os_strlcpy(bss->bridge, pos, sizeof(bss->bridge));
+ if (!bss->wds_bridge[0])
+ os_strlcpy(bss->wds_bridge, pos, sizeof(bss->wds_bridge));
++ } else if (os_strcmp(buf, "snoop_iface") == 0) {
++ os_strlcpy(bss->snoop_iface, pos, sizeof(bss->snoop_iface));
+ } else if (os_strcmp(buf, "vlan_bridge") == 0) {