diff --git a/backports/0019-hostapd-update-to-latest-HEAD.patch b/backports/0019-hostapd-update-to-latest-HEAD.patch index 77a69be11..444bb28a2 100644 --- a/backports/0019-hostapd-update-to-latest-HEAD.patch +++ b/backports/0019-hostapd-update-to-latest-HEAD.patch @@ -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 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 --- 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 .../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 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) {