Merge Official Source
Signed-off-by: Tianling Shen <cnsztl@immortalwrt.org>
This commit is contained in:
@@ -80,8 +80,7 @@ BEGIN {
|
||||
}
|
||||
|
||||
if (ipaddr > start && ipaddr < end) {
|
||||
print "ipaddr inside range" > "/dev/stderr"
|
||||
exit(1)
|
||||
print "warning: ipaddr inside range - this might not be supported in future releases of Openwrt" > "/dev/stderr"
|
||||
}
|
||||
|
||||
print "START="int2ip(start)
|
||||
|
||||
@@ -5,9 +5,9 @@ PKG_RELEASE:=1
|
||||
|
||||
PKG_SOURCE_PROTO:=git
|
||||
PKG_SOURCE_URL=$(PROJECT_GIT)/project/netifd.git
|
||||
PKG_SOURCE_DATE:=2023-09-15.1
|
||||
PKG_SOURCE_VERSION:=afcd3825dad9b6a6712fbf6ed8e4434819a34009
|
||||
PKG_MIRROR_HASH:=d389db5dec7140fc12f69e8d679b9242c72d27b35c789b12adc6ebdf16913a85
|
||||
PKG_SOURCE_DATE:=2023-09-19
|
||||
PKG_SOURCE_VERSION:=7a58b995fdbecd9beed57e4d66d42cb3cf66aee2
|
||||
PKG_MIRROR_HASH:=a460a3b912047f8802eb24bb737084a08dad65b2dd520e5f5e7459379d1fcf8c
|
||||
PKG_MAINTAINER:=Felix Fietkau <nbd@nbd.name>
|
||||
|
||||
PKG_LICENSE:=GPL-2.0
|
||||
|
||||
@@ -26,7 +26,6 @@ function iface_remove(cfg)
|
||||
if (!cfg || !cfg.bss || !cfg.bss[0] || !cfg.bss[0].ifname)
|
||||
return;
|
||||
|
||||
hostapd.remove_iface(cfg.bss[0].ifname);
|
||||
for (let bss in cfg.bss)
|
||||
wdev_remove(bss.ifname);
|
||||
}
|
||||
@@ -95,14 +94,14 @@ function iface_add(phy, config, phy_status)
|
||||
let config_inline = iface_gen_config(phy, config, !!phy_status);
|
||||
|
||||
let bss = config.bss[0];
|
||||
let ret = hostapd.add_iface(`bss_config=${bss.ifname}:${config_inline}`);
|
||||
let ret = hostapd.add_iface(`bss_config=${phy}:${config_inline}`);
|
||||
if (ret < 0)
|
||||
return false;
|
||||
|
||||
if (!phy_status)
|
||||
return true;
|
||||
|
||||
let iface = hostapd.interfaces[bss.ifname];
|
||||
let iface = hostapd.interfaces[phy];
|
||||
if (!iface)
|
||||
return false;
|
||||
|
||||
@@ -127,6 +126,7 @@ function iface_restart(phydev, config, old_config)
|
||||
{
|
||||
let phy = phydev.name;
|
||||
|
||||
hostapd.remove_iface(phy);
|
||||
iface_remove(old_config);
|
||||
iface_remove(config);
|
||||
|
||||
@@ -267,13 +267,13 @@ function iface_reload_config(phydev, config, old_config)
|
||||
if (!old_config.bss || !old_config.bss[0])
|
||||
return false;
|
||||
|
||||
let iface_name = old_config.bss[0].ifname;
|
||||
let iface = hostapd.interfaces[iface_name];
|
||||
let iface = hostapd.interfaces[phy];
|
||||
if (!iface) {
|
||||
hostapd.printf(`Could not find previous interface ${iface_name}`);
|
||||
return false;
|
||||
}
|
||||
|
||||
let iface_name = old_config.bss[0].ifname;
|
||||
let first_bss = hostapd.bss[iface_name];
|
||||
if (!first_bss) {
|
||||
hostapd.printf(`Could not find bss of previous interface ${iface_name}`);
|
||||
@@ -512,8 +512,10 @@ function iface_set_config(phy, config)
|
||||
|
||||
hostapd.data.config[phy] = config;
|
||||
|
||||
if (!config)
|
||||
if (!config) {
|
||||
hostapd.remove_iface(phy);
|
||||
return iface_remove(old_config);
|
||||
}
|
||||
|
||||
let phydev = phy_open(phy);
|
||||
if (!phydev) {
|
||||
@@ -667,7 +669,7 @@ let main_obj = {
|
||||
if (!config || !config.bss || !config.bss[0] || !config.bss[0].ifname)
|
||||
return 0;
|
||||
|
||||
let iface = hostapd.interfaces[config.bss[0].ifname];
|
||||
let iface = hostapd.interfaces[phy];
|
||||
if (!iface)
|
||||
return 0;
|
||||
|
||||
|
||||
@@ -0,0 +1,28 @@
|
||||
From: Felix Fietkau <nbd@nbd.name>
|
||||
Date: Wed, 20 Sep 2023 13:41:10 +0200
|
||||
Subject: [PATCH] hostapd: cancel channel_list_update_timeout in
|
||||
hostapd_cleanup_iface_partial
|
||||
|
||||
Fixes a crash when disabling an interface during channel list update
|
||||
|
||||
Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
---
|
||||
|
||||
--- a/src/ap/hostapd.c
|
||||
+++ b/src/ap/hostapd.c
|
||||
@@ -569,6 +569,7 @@ static void sta_track_deinit(struct host
|
||||
void hostapd_cleanup_iface_partial(struct hostapd_iface *iface)
|
||||
{
|
||||
wpa_printf(MSG_DEBUG, "%s(%p)", __func__, iface);
|
||||
+ eloop_cancel_timeout(channel_list_update_timeout, iface, NULL);
|
||||
#ifdef NEED_AP_MLME
|
||||
hostapd_stop_setup_timers(iface);
|
||||
#endif /* NEED_AP_MLME */
|
||||
@@ -598,7 +599,6 @@ void hostapd_cleanup_iface_partial(struc
|
||||
static void hostapd_cleanup_iface(struct hostapd_iface *iface)
|
||||
{
|
||||
wpa_printf(MSG_DEBUG, "%s(%p)", __func__, iface);
|
||||
- eloop_cancel_timeout(channel_list_update_timeout, iface, NULL);
|
||||
eloop_cancel_timeout(hostapd_interface_setup_failure_handler, iface,
|
||||
NULL);
|
||||
|
||||
@@ -107,14 +107,14 @@
|
||||
hostapd_ubus_free_bss(hapd);
|
||||
accounting_deinit(hapd);
|
||||
hostapd_deinit_wpa(hapd);
|
||||
@@ -599,6 +602,7 @@ void hostapd_cleanup_iface_partial(struc
|
||||
static void hostapd_cleanup_iface(struct hostapd_iface *iface)
|
||||
@@ -570,6 +573,7 @@ static void sta_track_deinit(struct host
|
||||
void hostapd_cleanup_iface_partial(struct hostapd_iface *iface)
|
||||
{
|
||||
wpa_printf(MSG_DEBUG, "%s(%p)", __func__, iface);
|
||||
+ hostapd_ucode_free_iface(iface);
|
||||
eloop_cancel_timeout(channel_list_update_timeout, iface, NULL);
|
||||
eloop_cancel_timeout(hostapd_interface_setup_failure_handler, iface,
|
||||
NULL);
|
||||
#ifdef NEED_AP_MLME
|
||||
hostapd_stop_setup_timers(iface);
|
||||
@@ -1189,6 +1193,7 @@ static int hostapd_start_beacon(struct h
|
||||
hapd->driver->set_operstate(hapd->drv_priv, 1);
|
||||
|
||||
@@ -142,6 +142,16 @@
|
||||
{
|
||||
if (!hapd)
|
||||
return;
|
||||
@@ -3491,7 +3495,8 @@ int hostapd_remove_iface(struct hapd_int
|
||||
hapd_iface = interfaces->iface[i];
|
||||
if (hapd_iface == NULL)
|
||||
return -1;
|
||||
- if (!os_strcmp(hapd_iface->conf->bss[0]->iface, buf)) {
|
||||
+ if (!os_strcmp(hapd_iface->phy, buf) ||
|
||||
+ !os_strcmp(hapd_iface->conf->bss[0]->iface, buf)) {
|
||||
wpa_printf(MSG_INFO, "Remove interface '%s'", buf);
|
||||
hapd_iface->driver_ap_teardown =
|
||||
!!(hapd_iface->drv_flags &
|
||||
--- a/wpa_supplicant/Makefile
|
||||
+++ b/wpa_supplicant/Makefile
|
||||
@@ -195,8 +195,20 @@ endif
|
||||
|
||||
@@ -20,7 +20,7 @@ Signed-off-by: Stijn Tintel <stijn@linux-ipv6.be>
|
||||
|
||||
--- a/src/ap/hostapd.c
|
||||
+++ b/src/ap/hostapd.c
|
||||
@@ -3563,6 +3563,8 @@ int hostapd_remove_iface(struct hapd_int
|
||||
@@ -3564,6 +3564,8 @@ int hostapd_remove_iface(struct hapd_int
|
||||
void hostapd_new_assoc_sta(struct hostapd_data *hapd, struct sta_info *sta,
|
||||
int reassoc)
|
||||
{
|
||||
@@ -29,7 +29,7 @@ Signed-off-by: Stijn Tintel <stijn@linux-ipv6.be>
|
||||
if (hapd->tkip_countermeasures) {
|
||||
hostapd_drv_sta_deauth(hapd, sta->addr,
|
||||
WLAN_REASON_MICHAEL_MIC_FAILURE);
|
||||
@@ -3570,10 +3572,16 @@ void hostapd_new_assoc_sta(struct hostap
|
||||
@@ -3571,10 +3573,16 @@ void hostapd_new_assoc_sta(struct hostap
|
||||
}
|
||||
|
||||
#ifdef CONFIG_IEEE80211BE
|
||||
|
||||
@@ -471,6 +471,9 @@ uc_hostapd_iface_stop(uc_vm_t *vm, size_t nargs)
|
||||
struct hostapd_iface *iface = uc_fn_thisval("hostapd.iface");
|
||||
int i;
|
||||
|
||||
if (!iface)
|
||||
return NULL;
|
||||
|
||||
switch (iface->state) {
|
||||
case HAPD_IFACE_ENABLED:
|
||||
case HAPD_IFACE_DISABLED:
|
||||
|
||||
@@ -8,7 +8,10 @@ boardname="${board##*,}"
|
||||
board_config_update
|
||||
|
||||
case $board in
|
||||
enterasys,ws-ap3715i|\
|
||||
enterasys,ws-ap3715i)
|
||||
ucidef_set_led_netdev "lan1" "LAN1" "green:lan1" "eth0"
|
||||
ucidef_set_led_netdev "lan2" "LAN2" "green:lan2" "eth1"
|
||||
;;
|
||||
extreme-networks,ws-ap3825i)
|
||||
ucidef_set_led_netdev "lan1" "LAN1" "green:lan1" "eth1"
|
||||
ucidef_set_led_netdev "lan2" "LAN2" "green:lan2" "eth0"
|
||||
|
||||
Reference in New Issue
Block a user