From fa1749e6683823f7fd00109e33fb777f3a89b9ad Mon Sep 17 00:00:00 2001 From: Felix Fietkau Date: Mon, 4 Mar 2013 17:16:38 +0000 Subject: [PATCH] hostapd: update to git version 2013-03-02 SVN-Revision: 35887 --- package/network/services/hostapd/Makefile | 6 +- .../hostapd/patches/001-CVE-2012-4445.patch | 17 -- .../hostapd/patches/100-pending_work.patch | 165 ------------------ .../patches/300-nl80211_multicall_fixes.patch | 8 +- .../patches/310-multicall_bridge_fix.patch | 8 +- .../services/hostapd/patches/400-noscan.patch | 6 +- .../hostapd/patches/410-multicall.patch | 26 +-- .../patches/430-rescan_immediately.patch | 4 +- .../hostapd/patches/440-optional_rfkill.patch | 24 +-- .../patches/450-reload_freq_change.patch | 8 +- .../patches/451-nl80211_del_beacon_bss.patch | 8 +- .../patches/452-ctrl_iface_reload.patch | 2 +- .../hostapd/patches/453-ap_sta_support.patch | 41 ++--- .../patches/460-disable_ctrl_iface_mib.patch | 40 ++--- .../patches/470-wpa_ie_cap_workaround.patch | 4 +- .../480-terminate_on_setup_failure.patch | 16 +- .../patches/500-random_pool_add_kernel.patch | 8 +- .../patches/510-bring_down_interface.patch | 4 +- .../patches/520-fix_wps_pin_crash.patch | 2 +- .../530-wps_single_auth_enc_type.patch | 4 +- .../patches/540-dynamic_20_40_mhz.patch | 24 +-- .../patches/550-limit_debug_messages.patch | 2 +- .../hostapd/patches/580-fix_bss_addr.patch | 11 -- .../patches/590-hostapd_cli_ifdef.patch | 14 +- ...dd-new-config-params-to-be-used-with.patch | 20 +-- ...-use-new-parameters-during-ibss-join.patch | 4 +- .../604-wpa_s-support-htmode-param.patch | 16 +- .../patches/610-max_num_sta_probe.patch | 2 +- 28 files changed, 154 insertions(+), 340 deletions(-) delete mode 100644 package/network/services/hostapd/patches/001-CVE-2012-4445.patch delete mode 100644 package/network/services/hostapd/patches/100-pending_work.patch delete mode 100644 package/network/services/hostapd/patches/580-fix_bss_addr.patch diff --git a/package/network/services/hostapd/Makefile b/package/network/services/hostapd/Makefile index 44b6684416..80f9a0dfde 100644 --- a/package/network/services/hostapd/Makefile +++ b/package/network/services/hostapd/Makefile @@ -8,16 +8,16 @@ include $(TOPDIR)/rules.mk PKG_NAME:=hostapd -PKG_VERSION:=20120910 +PKG_VERSION:=20130302 PKG_RELEASE:=1 -PKG_REV:=762b99db7a76803d1ad274e87caa6fe870d47441 +PKG_REV:=a311c61dd664db7c1d16dd3395adf07bea6c141d PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2 PKG_SOURCE_URL:=git://w1.fi/srv/git/hostap.git PKG_SOURCE_SUBDIR:=$(PKG_NAME)-$(PKG_VERSION) PKG_SOURCE_VERSION:=$(PKG_REV) PKG_SOURCE_PROTO:=git -PKG_MIRROR_MD5SUM:=fa3227c146cb50732fe8511ce6d1d862 +PKG_MIRROR_MD5SUM:=d81d1b073521df0c608f42e2cedec60c PKG_MAINTAINER:=Felix Fietkau diff --git a/package/network/services/hostapd/patches/001-CVE-2012-4445.patch b/package/network/services/hostapd/patches/001-CVE-2012-4445.patch deleted file mode 100644 index 1b8bdd00c5..0000000000 --- a/package/network/services/hostapd/patches/001-CVE-2012-4445.patch +++ /dev/null @@ -1,17 +0,0 @@ ---- a/src/eap_server/eap_server_tls_common.c -+++ b/src/eap_server/eap_server_tls_common.c -@@ -228,6 +228,14 @@ static int eap_server_tls_process_fragme - return -1; - } - -+ if (len > message_length) { -+ wpa_printf(MSG_INFO, "SSL: Too much data (%d bytes) in " -+ "first fragment of frame (TLS Message " -+ "Length %d bytes)", -+ (int) len, (int) message_length); -+ return -1; -+ } -+ - data->tls_in = wpabuf_alloc(message_length); - if (data->tls_in == NULL) { - wpa_printf(MSG_DEBUG, "SSL: No memory for message"); diff --git a/package/network/services/hostapd/patches/100-pending_work.patch b/package/network/services/hostapd/patches/100-pending_work.patch deleted file mode 100644 index b7c77283e7..0000000000 --- a/package/network/services/hostapd/patches/100-pending_work.patch +++ /dev/null @@ -1,165 +0,0 @@ ---- a/src/ap/ieee802_11.c -+++ b/src/ap/ieee802_11.c -@@ -1506,13 +1506,6 @@ static void handle_assoc_cb(struct hosta - int new_assoc = 1; - struct ieee80211_ht_capabilities ht_cap; - -- if (!ok) { -- hostapd_logger(hapd, mgmt->da, HOSTAPD_MODULE_IEEE80211, -- HOSTAPD_LEVEL_DEBUG, -- "did not acknowledge association response"); -- return; -- } -- - if (len < IEEE80211_HDRLEN + (reassoc ? sizeof(mgmt->u.reassoc_resp) : - sizeof(mgmt->u.assoc_resp))) { - printf("handle_assoc_cb(reassoc=%d) - too short payload " -@@ -1520,11 +1513,6 @@ static void handle_assoc_cb(struct hosta - return; - } - -- if (reassoc) -- status = le_to_host16(mgmt->u.reassoc_resp.status_code); -- else -- status = le_to_host16(mgmt->u.assoc_resp.status_code); -- - sta = ap_get_sta(hapd, mgmt->da); - if (!sta) { - printf("handle_assoc_cb: STA " MACSTR " not found\n", -@@ -1532,6 +1520,19 @@ static void handle_assoc_cb(struct hosta - return; - } - -+ if (!ok) { -+ hostapd_logger(hapd, mgmt->da, HOSTAPD_MODULE_IEEE80211, -+ HOSTAPD_LEVEL_DEBUG, -+ "did not acknowledge association response"); -+ sta->flags &= ~WLAN_STA_ASSOC_REQ_OK; -+ return; -+ } -+ -+ if (reassoc) -+ status = le_to_host16(mgmt->u.reassoc_resp.status_code); -+ else -+ status = le_to_host16(mgmt->u.assoc_resp.status_code); -+ - if (status != WLAN_STATUS_SUCCESS) - goto fail; - -@@ -1830,6 +1831,9 @@ void ieee802_11_rx_from_unknown(struct h - - sta = ap_get_sta(hapd, src); - if (sta && (sta->flags & WLAN_STA_ASSOC)) { -+ if (!hapd->conf->wds_sta) -+ return; -+ - if (wds && !(sta->flags & WLAN_STA_WDS)) { - wpa_printf(MSG_DEBUG, "Enable 4-address WDS mode for " - "STA " MACSTR " (aid %u)", ---- a/src/drivers/driver_nl80211.c -+++ b/src/drivers/driver_nl80211.c -@@ -2661,10 +2661,10 @@ static int wpa_driver_nl80211_capa(struc - drv->data_tx_status = info.data_tx_status; - - /* -- * If poll command is supported mac80211 is new enough to -- * have everything we need to not need monitor interfaces. -+ * If poll command and tx status are supported, mac80211 is new enough -+ * to have everything we need to not need monitor interfaces. - */ -- drv->use_monitor = !info.poll_command_supported; -+ drv->use_monitor = !info.poll_command_supported || !info.data_tx_status; - - if (drv->device_ap_sme && drv->use_monitor) { - /* -@@ -6392,8 +6392,8 @@ static int wpa_driver_nl80211_hapd_send_ - pos = (u8 *) (hdr + 1); - - if (qos) { -- /* add an empty QoS header if needed */ -- pos[0] = 0; -+ /* Set highest priority in QoS header */ -+ pos[0] = 7; - pos[1] = 0; - pos += 2; - } -@@ -7698,6 +7698,10 @@ static int i802_set_wds_sta(void *priv, - } - return i802_set_sta_vlan(priv, addr, name, 0); - } else { -+ if (bridge_ifname) -+ linux_br_del_if(drv->global->ioctl_sock, bridge_ifname, -+ name); -+ - i802_set_sta_vlan(priv, addr, bss->ifname, 0); - return wpa_driver_nl80211_if_remove(priv, WPA_IF_AP_VLAN, - name); -@@ -8065,7 +8069,12 @@ static int wpa_driver_nl80211_if_remove( - if (ifindex <= 0) - return -1; - -+ nl80211_remove_iface(drv, ifindex); -+ - #ifdef HOSTAPD -+ if (type != WPA_IF_AP_BSS) -+ return 0; -+ - if (bss->added_if_into_bridge) { - if (linux_br_del_if(drv->global->ioctl_sock, bss->brname, - bss->ifname) < 0) -@@ -8079,13 +8088,6 @@ static int wpa_driver_nl80211_if_remove( - "bridge %s: %s", - bss->brname, strerror(errno)); - } --#endif /* HOSTAPD */ -- -- nl80211_remove_iface(drv, ifindex); -- --#ifdef HOSTAPD -- if (type != WPA_IF_AP_BSS) -- return 0; - - if (bss != &drv->first_bss) { - struct i802_bss *tbss; ---- a/src/ap/drv_callbacks.c -+++ b/src/ap/drv_callbacks.c -@@ -672,12 +672,15 @@ static void hostapd_event_eapol_rx(struc - const u8 *data, size_t data_len) - { - struct hostapd_iface *iface = hapd->iface; -+ struct sta_info *sta; - size_t j; - - for (j = 0; j < iface->num_bss; j++) { -- if (ap_get_sta(iface->bss[j], src)) { -- hapd = iface->bss[j]; -- break; -+ if ((sta = ap_get_sta(iface->bss[j], src))) { -+ if (sta->flags & WLAN_STA_ASSOC) { -+ hapd = iface->bss[j]; -+ break; -+ } - } - } - ---- a/src/eap_peer/eap.c -+++ b/src/eap_peer/eap.c -@@ -348,6 +348,7 @@ SM_STATE(EAP, METHOD) - { - struct wpabuf *eapReqData; - struct eap_method_ret ret; -+ int min_len = 1; - - SM_ENTRY(EAP, METHOD); - if (sm->m == NULL) { -@@ -356,7 +357,9 @@ SM_STATE(EAP, METHOD) - } - - eapReqData = eapol_get_eapReqData(sm); -- if (!eap_hdr_len_valid(eapReqData, 1)) -+ if (sm->m->vendor == EAP_VENDOR_IETF && sm->m->method == EAP_TYPE_LEAP) -+ min_len = 0; /* LEAP uses EAP-Success without payload */ -+ if (!eap_hdr_len_valid(eapReqData, min_len)) - return; - - /* diff --git a/package/network/services/hostapd/patches/300-nl80211_multicall_fixes.patch b/package/network/services/hostapd/patches/300-nl80211_multicall_fixes.patch index 1d2519a937..6c4f46fb3e 100644 --- a/package/network/services/hostapd/patches/300-nl80211_multicall_fixes.patch +++ b/package/network/services/hostapd/patches/300-nl80211_multicall_fixes.patch @@ -1,6 +1,6 @@ --- a/src/drivers/driver_nl80211.c +++ b/src/drivers/driver_nl80211.c -@@ -2988,6 +2988,7 @@ static void * wpa_driver_nl80211_init(vo +@@ -3129,6 +3129,7 @@ static void * wpa_driver_nl80211_init(vo drv->monitor_sock = -1; drv->eapol_tx_sock = -1; drv->ap_scan_as_station = NL80211_IFTYPE_UNSPECIFIED; @@ -8,7 +8,7 @@ if (wpa_driver_nl80211_init_nl(drv)) { os_free(drv); -@@ -3302,17 +3303,12 @@ static void wpa_driver_nl80211_send_rfki +@@ -3446,17 +3447,12 @@ static void wpa_driver_nl80211_send_rfki wpa_supplicant_event(timeout_ctx, EVENT_INTERFACE_DISABLED, NULL); } @@ -28,7 +28,7 @@ /* * Make sure the interface starts up in station mode unless this is a * dynamically added interface (e.g., P2P) that was already configured -@@ -3331,7 +3327,7 @@ wpa_driver_nl80211_finish_drv_init(struc +@@ -3475,7 +3471,7 @@ wpa_driver_nl80211_finish_drv_init(struc "interface '%s' due to rfkill", bss->ifname); drv->if_disabled = 1; @@ -37,7 +37,7 @@ } else { wpa_printf(MSG_ERROR, "nl80211: Could not set " "interface '%s' UP", bss->ifname); -@@ -3341,7 +3337,19 @@ wpa_driver_nl80211_finish_drv_init(struc +@@ -3485,7 +3481,19 @@ wpa_driver_nl80211_finish_drv_init(struc netlink_send_oper_ifla(drv->global->netlink, drv->ifindex, 1, IF_OPER_DORMANT); diff --git a/package/network/services/hostapd/patches/310-multicall_bridge_fix.patch b/package/network/services/hostapd/patches/310-multicall_bridge_fix.patch index 59bfe5177a..e167ba76ea 100644 --- a/package/network/services/hostapd/patches/310-multicall_bridge_fix.patch +++ b/package/network/services/hostapd/patches/310-multicall_bridge_fix.patch @@ -1,6 +1,6 @@ --- a/src/drivers/driver_nl80211.c +++ b/src/drivers/driver_nl80211.c -@@ -893,6 +893,10 @@ static void wpa_driver_nl80211_event_rtm +@@ -897,6 +897,10 @@ static void wpa_driver_nl80211_event_rtm return; } @@ -11,7 +11,7 @@ wpa_printf(MSG_DEBUG, "RTM_NEWLINK: operstate=%d ifi_flags=0x%x " "(%s%s%s%s)", drv->operstate, ifi->ifi_flags, -@@ -1000,6 +1004,10 @@ static void wpa_driver_nl80211_event_rtm +@@ -1004,6 +1008,10 @@ static void wpa_driver_nl80211_event_rtm attrlen = len; attr = (struct rtattr *) buf; @@ -22,7 +22,7 @@ rta_len = RTA_ALIGN(sizeof(struct rtattr)); while (RTA_OK(attr, attrlen)) { if (attr->rta_type == IFLA_IFNAME) { -@@ -2990,6 +2998,11 @@ static void * wpa_driver_nl80211_init(vo +@@ -3131,6 +3139,11 @@ static void * wpa_driver_nl80211_init(vo drv->ap_scan_as_station = NL80211_IFTYPE_UNSPECIFIED; drv->nlmode = NL80211_IFTYPE_STATION; @@ -34,7 +34,7 @@ if (wpa_driver_nl80211_init_nl(drv)) { os_free(drv); return NULL; -@@ -7819,8 +7832,6 @@ static void *i802_init(struct hostapd_da +@@ -8021,8 +8034,6 @@ static void *i802_init(struct hostapd_da br_ifindex = 0; } diff --git a/package/network/services/hostapd/patches/400-noscan.patch b/package/network/services/hostapd/patches/400-noscan.patch index 69d026b3da..b1b25ffe19 100644 --- a/package/network/services/hostapd/patches/400-noscan.patch +++ b/package/network/services/hostapd/patches/400-noscan.patch @@ -1,6 +1,6 @@ --- a/hostapd/config_file.c +++ b/hostapd/config_file.c -@@ -2485,6 +2485,8 @@ static int hostapd_config_fill(struct ho +@@ -2464,6 +2464,8 @@ static int hostapd_config_fill(struct ho } #endif /* CONFIG_IEEE80211W */ #ifdef CONFIG_IEEE80211N @@ -11,7 +11,7 @@ } else if (os_strcmp(buf, "ht_capab") == 0) { --- a/src/ap/ap_config.h +++ b/src/ap/ap_config.h -@@ -497,6 +497,7 @@ struct hostapd_config { +@@ -510,6 +510,7 @@ struct hostapd_config { int ht_op_mode_fixed; u16 ht_capab; @@ -21,7 +21,7 @@ int require_ht; --- a/src/ap/hw_features.c +++ b/src/ap/hw_features.c -@@ -493,7 +493,7 @@ static int ieee80211n_check_40mhz(struct +@@ -494,7 +494,7 @@ static int ieee80211n_check_40mhz(struct { struct wpa_driver_scan_params params; diff --git a/package/network/services/hostapd/patches/410-multicall.patch b/package/network/services/hostapd/patches/410-multicall.patch index a774603b40..4c6f8c9258 100644 --- a/package/network/services/hostapd/patches/410-multicall.patch +++ b/package/network/services/hostapd/patches/410-multicall.patch @@ -8,7 +8,7 @@ ifndef CONFIG_OS ifdef CONFIG_NATIVE_WINDOWS -@@ -188,10 +189,14 @@ ifdef CONFIG_IEEE80211AC +@@ -192,10 +193,14 @@ ifdef CONFIG_IEEE80211AC CFLAGS += -DCONFIG_IEEE80211AC endif @@ -26,7 +26,7 @@ LIBS += $(DRV_AP_LIBS) ifdef CONFIG_L2_PACKET -@@ -867,6 +872,12 @@ install: all +@@ -860,6 +865,12 @@ install: all BCHECK=../src/drivers/build.hostapd @@ -39,7 +39,7 @@ hostapd: $(BCHECK) $(OBJS) $(Q)$(CC) $(LDFLAGS) -o hostapd $(OBJS) $(LIBS) @$(E) " LD " $@ -@@ -905,6 +916,12 @@ HOBJS += ../src/crypto/aes-internal.o +@@ -898,6 +909,12 @@ HOBJS += ../src/crypto/aes-internal.o HOBJS += ../src/crypto/aes-internal-enc.o endif @@ -62,7 +62,7 @@ BINALL=wpa_supplicant wpa_cli -@@ -705,6 +706,10 @@ ifdef CONFIG_DYNAMIC_EAP_METHODS +@@ -704,6 +705,10 @@ ifdef CONFIG_DYNAMIC_EAP_METHODS CFLAGS += -DCONFIG_DYNAMIC_EAP_METHODS LIBS += -ldl -rdynamic endif @@ -73,7 +73,7 @@ endif ifdef CONFIG_AP -@@ -713,9 +718,11 @@ NEED_EAP_COMMON=y +@@ -712,9 +717,11 @@ NEED_EAP_COMMON=y NEED_RSN_AUTHENTICATOR=y CFLAGS += -DCONFIG_AP OBJS += ap.o @@ -85,7 +85,7 @@ OBJS += ../src/ap/hostapd.o OBJS += ../src/ap/wpa_auth_glue.o OBJS += ../src/ap/utils.o -@@ -770,10 +777,18 @@ endif +@@ -769,10 +776,18 @@ endif ifdef CONFIG_HS20 OBJS += ../src/ap/hs20.o endif @@ -104,7 +104,7 @@ NEED_AES_WRAP=y OBJS += ../src/ap/wpa_auth.o OBJS += ../src/ap/wpa_auth_ie.o -@@ -1515,6 +1530,12 @@ wpa_priv: $(BCHECK) $(OBJS_priv) +@@ -1521,6 +1536,12 @@ wpa_priv: $(BCHECK) $(OBJS_priv) $(OBJS_c) $(OBJS_t) $(OBJS_t2) $(OBJS) $(BCHECK) $(EXTRA_progs): .config @@ -117,7 +117,7 @@ wpa_supplicant: $(BCHECK) $(OBJS) $(EXTRA_progs) $(Q)$(LDO) $(LDFLAGS) -o wpa_supplicant $(OBJS) $(LIBS) $(EXTRALIBS) @$(E) " LD " $@ -@@ -1585,6 +1606,12 @@ eap_ikev2.so: ../src/eap_peer/eap_ikev2. +@@ -1591,6 +1612,12 @@ eap_ikev2.so: ../src/eap_peer/eap_ikev2. %@.service: %.service.arg.in sed -e 's|\@BINDIR\@|$(BINDIR)|g' $< >$@ @@ -132,7 +132,7 @@ wpa_cli.exe: wpa_cli --- a/src/drivers/driver.h +++ b/src/drivers/driver.h -@@ -3686,8 +3686,8 @@ union wpa_event_data { +@@ -3726,8 +3726,8 @@ union wpa_event_data { * Driver wrapper code should call this function whenever an event is received * from the driver. */ @@ -145,7 +145,7 @@ /* --- a/src/ap/drv_callbacks.c +++ b/src/ap/drv_callbacks.c -@@ -688,8 +688,8 @@ static void hostapd_event_eapol_rx(struc +@@ -714,8 +714,8 @@ static void hostapd_event_eapol_rx(struc } @@ -179,7 +179,7 @@ for (;;) { --- a/wpa_supplicant/events.c +++ b/wpa_supplicant/events.c -@@ -2258,8 +2258,8 @@ static void wnm_action_rx(struct wpa_sup +@@ -2333,8 +2333,8 @@ static void wpa_supplicant_event_unprot_ } @@ -192,7 +192,7 @@ u16 reason_code = 0; --- a/wpa_supplicant/wpa_supplicant.c +++ b/wpa_supplicant/wpa_supplicant.c -@@ -2921,6 +2921,9 @@ static void wpa_supplicant_deinit_iface( +@@ -2972,6 +2972,9 @@ static void wpa_supplicant_deinit_iface( } } @@ -202,7 +202,7 @@ /** * wpa_supplicant_add_iface - Add a new network interface -@@ -3113,6 +3116,7 @@ struct wpa_global * wpa_supplicant_init( +@@ -3164,6 +3167,7 @@ struct wpa_global * wpa_supplicant_init( wpa_msg_register_ifname_cb(wpa_supplicant_msg_ifname_cb); #endif /* CONFIG_NO_WPA_MSG */ diff --git a/package/network/services/hostapd/patches/430-rescan_immediately.patch b/package/network/services/hostapd/patches/430-rescan_immediately.patch index 51d41f8001..082344ac28 100644 --- a/package/network/services/hostapd/patches/430-rescan_immediately.patch +++ b/package/network/services/hostapd/patches/430-rescan_immediately.patch @@ -1,9 +1,9 @@ --- a/wpa_supplicant/wpa_supplicant.c +++ b/wpa_supplicant/wpa_supplicant.c -@@ -2388,7 +2388,7 @@ static struct wpa_supplicant * wpa_suppl +@@ -2416,7 +2416,7 @@ static struct wpa_supplicant * wpa_suppl if (wpa_s == NULL) return NULL; - wpa_s->scan_req = 1; + wpa_s->scan_req = INITIAL_SCAN_REQ; - wpa_s->scan_interval = 5; + wpa_s->scan_interval = 1; wpa_s->new_connection = 1; diff --git a/package/network/services/hostapd/patches/440-optional_rfkill.patch b/package/network/services/hostapd/patches/440-optional_rfkill.patch index be18458b24..8ed4d99c23 100644 --- a/package/network/services/hostapd/patches/440-optional_rfkill.patch +++ b/package/network/services/hostapd/patches/440-optional_rfkill.patch @@ -10,7 +10,7 @@ struct wpa_driver_capa capa; int has_capability; -@@ -2828,7 +2830,7 @@ static int wpa_driver_nl80211_init_nl(st +@@ -2967,7 +2969,7 @@ static int wpa_driver_nl80211_init_nl(st return 0; } @@ -19,7 +19,7 @@ static void wpa_driver_nl80211_rfkill_blocked(void *ctx) { wpa_printf(MSG_DEBUG, "nl80211: RFKILL blocked"); -@@ -2851,6 +2853,7 @@ static void wpa_driver_nl80211_rfkill_un +@@ -2990,6 +2992,7 @@ static void wpa_driver_nl80211_rfkill_un } /* rtnetlink ifup handler will report interface as enabled */ } @@ -27,7 +27,7 @@ static void nl80211_get_phy_name(struct wpa_driver_nl80211_data *drv) -@@ -2979,7 +2982,9 @@ static void * wpa_driver_nl80211_init(vo +@@ -3118,7 +3121,9 @@ static void * wpa_driver_nl80211_init(vo void *global_priv) { struct wpa_driver_nl80211_data *drv; @@ -37,7 +37,7 @@ struct i802_bss *bss; if (global_priv == NULL) -@@ -3013,6 +3018,7 @@ static void * wpa_driver_nl80211_init(vo +@@ -3154,6 +3159,7 @@ static void * wpa_driver_nl80211_init(vo nl80211_get_phy_name(drv); @@ -45,7 +45,7 @@ rcfg = os_zalloc(sizeof(*rcfg)); if (rcfg == NULL) goto failed; -@@ -3025,6 +3031,7 @@ static void * wpa_driver_nl80211_init(vo +@@ -3166,6 +3172,7 @@ static void * wpa_driver_nl80211_init(vo wpa_printf(MSG_DEBUG, "nl80211: RFKILL status not available"); os_free(rcfg); } @@ -53,7 +53,7 @@ if (wpa_driver_nl80211_finish_drv_init(drv)) goto failed; -@@ -3311,10 +3318,12 @@ static void nl80211_mgmt_unsubscribe(str +@@ -3455,10 +3462,12 @@ static void nl80211_mgmt_unsubscribe(str } @@ -66,7 +66,7 @@ static int wpa_driver_nl80211_finish_drv_init_sta(struct wpa_driver_nl80211_data *drv, -@@ -3335,13 +3344,16 @@ wpa_driver_nl80211_finish_drv_init_sta(s +@@ -3479,13 +3488,16 @@ wpa_driver_nl80211_finish_drv_init_sta(s } if (linux_set_iface_flags(drv->global->ioctl_sock, bss->ifname, 1)) { @@ -84,7 +84,7 @@ wpa_printf(MSG_ERROR, "nl80211: Could not set " "interface '%s' UP", bss->ifname); return -1; -@@ -3372,8 +3384,10 @@ wpa_driver_nl80211_finish_drv_init(struc +@@ -3516,8 +3528,10 @@ wpa_driver_nl80211_finish_drv_init(struc return -1; if (send_rfkill_event) { @@ -95,7 +95,7 @@ } return 0; -@@ -3460,7 +3474,9 @@ static void wpa_driver_nl80211_deinit(vo +@@ -3603,7 +3617,9 @@ static void wpa_driver_nl80211_deinit(st netlink_send_oper_ifla(drv->global->netlink, drv->ifindex, 0, IF_OPER_UP); @@ -223,7 +223,7 @@ ifdef CONFIG_LIBNL32 DRV_LIBS += -lnl-3 -@@ -101,7 +100,6 @@ DRV_WPA_CFLAGS += -DCONFIG_DRIVER_WEXT +@@ -109,7 +108,6 @@ DRV_WPA_CFLAGS += -DCONFIG_DRIVER_WEXT CONFIG_WIRELESS_EXTENSION=y NEED_NETLINK=y NEED_LINUX_IOCTL=y @@ -231,7 +231,7 @@ endif ifdef CONFIG_DRIVER_NDIS -@@ -127,7 +125,6 @@ endif +@@ -135,7 +133,6 @@ endif ifdef CONFIG_WIRELESS_EXTENSION DRV_WPA_CFLAGS += -DCONFIG_WIRELESS_EXTENSION DRV_WPA_OBJS += ../src/drivers/driver_wext.o @@ -239,7 +239,7 @@ endif ifdef NEED_NETLINK -@@ -140,6 +137,7 @@ endif +@@ -148,6 +145,7 @@ endif ifdef NEED_RFKILL DRV_OBJS += ../src/drivers/rfkill.o diff --git a/package/network/services/hostapd/patches/450-reload_freq_change.patch b/package/network/services/hostapd/patches/450-reload_freq_change.patch index f11593fcd5..bf48fe41fb 100644 --- a/package/network/services/hostapd/patches/450-reload_freq_change.patch +++ b/package/network/services/hostapd/patches/450-reload_freq_change.patch @@ -1,6 +1,6 @@ --- a/src/ap/hostapd.c +++ b/src/ap/hostapd.c -@@ -140,6 +140,20 @@ int hostapd_reload_config(struct hostapd +@@ -140,6 +140,24 @@ int hostapd_reload_config(struct hostapd oldconf = hapd->iconf; iface->conf = newconf; @@ -10,7 +10,11 @@ + if (hostapd_set_freq(hapd, newconf->hw_mode, iface->freq, + newconf->channel, + newconf->ieee80211n, -+ newconf->secondary_channel)) { ++ newconf->ieee80211ac, ++ newconf->secondary_channel, ++ newconf->vht_oper_chwidth, ++ newconf->vht_oper_centr_freq_seg0_idx, ++ newconf->vht_oper_centr_freq_seg1_idx)) { + wpa_printf(MSG_ERROR, "Could not set channel for " + "kernel driver"); + } diff --git a/package/network/services/hostapd/patches/451-nl80211_del_beacon_bss.patch b/package/network/services/hostapd/patches/451-nl80211_del_beacon_bss.patch index 801b78b124..2eaa5dc60b 100644 --- a/package/network/services/hostapd/patches/451-nl80211_del_beacon_bss.patch +++ b/package/network/services/hostapd/patches/451-nl80211_del_beacon_bss.patch @@ -1,6 +1,6 @@ --- a/src/drivers/driver_nl80211.c +++ b/src/drivers/driver_nl80211.c -@@ -3394,16 +3394,18 @@ wpa_driver_nl80211_finish_drv_init(struc +@@ -3538,16 +3538,18 @@ wpa_driver_nl80211_finish_drv_init(struc } @@ -21,7 +21,7 @@ return send_and_recv_msgs(drv, msg, NULL, NULL); nla_put_failure: -@@ -3411,6 +3413,21 @@ static int wpa_driver_nl80211_del_beacon +@@ -3555,6 +3557,21 @@ static int wpa_driver_nl80211_del_beacon return -ENOBUFS; } @@ -43,7 +43,7 @@ /** * wpa_driver_nl80211_deinit - Deinitialize nl80211 driver interface -@@ -9238,4 +9255,5 @@ const struct wpa_driver_ops wpa_driver_n +@@ -9547,4 +9564,5 @@ const struct wpa_driver_ops wpa_driver_n .send_tdls_mgmt = nl80211_send_tdls_mgmt, .tdls_oper = nl80211_tdls_oper, #endif /* CONFIG_TDLS */ @@ -51,7 +51,7 @@ }; --- a/src/drivers/driver.h +++ b/src/drivers/driver.h -@@ -2053,6 +2053,9 @@ struct wpa_driver_ops { +@@ -2071,6 +2071,9 @@ struct wpa_driver_ops { */ int (*probe_req_report)(void *priv, int report); diff --git a/package/network/services/hostapd/patches/452-ctrl_iface_reload.patch b/package/network/services/hostapd/patches/452-ctrl_iface_reload.patch index 81dcfedde5..85e871f457 100644 --- a/package/network/services/hostapd/patches/452-ctrl_iface_reload.patch +++ b/package/network/services/hostapd/patches/452-ctrl_iface_reload.patch @@ -85,7 +85,7 @@ #ifdef CONFIG_IEEE80211W #ifdef NEED_AP_MLME -@@ -864,6 +928,10 @@ static void hostapd_ctrl_iface_receive(i +@@ -902,6 +966,10 @@ static void hostapd_ctrl_iface_receive(i reply_len += res; } #endif /* CONFIG_NO_RADIUS */ diff --git a/package/network/services/hostapd/patches/453-ap_sta_support.patch b/package/network/services/hostapd/patches/453-ap_sta_support.patch index 4b6c0f1646..df04d3d4b9 100644 --- a/package/network/services/hostapd/patches/453-ap_sta_support.patch +++ b/package/network/services/hostapd/patches/453-ap_sta_support.patch @@ -1,6 +1,6 @@ --- a/wpa_supplicant/wpa_supplicant_i.h +++ b/wpa_supplicant/wpa_supplicant_i.h -@@ -95,6 +95,8 @@ struct wpa_interface { +@@ -96,6 +96,8 @@ struct wpa_interface { * receiving of EAPOL frames from an additional interface. */ const char *bridge_ifname; @@ -9,7 +9,7 @@ }; /** -@@ -294,6 +296,8 @@ struct wpa_supplicant { +@@ -305,6 +307,8 @@ struct wpa_supplicant { #endif /* CONFIG_CTRL_IFACE_DBUS_NEW */ char bridge_ifname[16]; @@ -100,7 +100,7 @@ /* Configure default/group WEP keys for static WEP */ int wpa_set_wep_keys(struct wpa_supplicant *wpa_s, struct wpa_ssid *ssid) { -@@ -672,8 +721,16 @@ void wpa_supplicant_set_state(struct wpa +@@ -676,8 +725,16 @@ void wpa_supplicant_set_state(struct wpa #endif /* CONFIG_P2P */ sme_sched_obss_scan(wpa_s, 1); @@ -117,7 +117,7 @@ wpa_s->new_connection = 1; wpa_drv_set_operstate(wpa_s, 0); #ifndef IEEE8021X_EAPOL -@@ -2727,6 +2784,21 @@ static int wpa_supplicant_init_iface(str +@@ -2778,6 +2835,21 @@ static int wpa_supplicant_init_iface(str os_strlcpy(wpa_s->bridge_ifname, iface->bridge_ifname, sizeof(wpa_s->bridge_ifname)); } @@ -149,16 +149,16 @@ #include "drivers/driver.h" #include "wpa_supplicant_i.h" #include "config.h" -@@ -139,6 +140,8 @@ struct wpa_bss * wpa_bss_get(struct wpa_ - - static void wpa_bss_copy_res(struct wpa_bss *dst, struct wpa_scan_res *src) +@@ -227,6 +228,8 @@ struct wpa_bss * wpa_bss_get(struct wpa_ + static void wpa_bss_copy_res(struct wpa_bss *dst, struct wpa_scan_res *src, + struct os_time *fetch_time) { + struct ieee80211_ht_capabilities *capab; + struct ieee802_11_elems elems; os_time_t usec; dst->flags = src->flags; -@@ -151,6 +154,12 @@ static void wpa_bss_copy_res(struct wpa_ +@@ -239,6 +242,12 @@ static void wpa_bss_copy_res(struct wpa_ dst->level = src->level; dst->tsf = src->tsf; @@ -168,19 +168,9 @@ + if (capab) + dst->ht_capab = le_to_host16(capab->ht_capabilities_info); + - os_get_time(&dst->last_update); + dst->last_update.sec = fetch_time->sec; + dst->last_update.usec = fetch_time->usec; dst->last_update.sec -= src->age / 1000; - usec = (src->age % 1000) * 1000; ---- a/wpa_supplicant/bss.h -+++ b/wpa_supplicant/bss.h -@@ -72,6 +72,7 @@ struct wpa_bss { - u8 bssid[ETH_ALEN]; - u8 hessid[ETH_ALEN]; - u8 ssid[32]; -+ u16 ht_capab; - size_t ssid_len; - int freq; - u16 beacon_int; --- a/wpa_supplicant/main.c +++ b/wpa_supplicant/main.c @@ -25,7 +25,7 @@ static void usage(void) @@ -219,3 +209,14 @@ case 'i': iface->ifname = optarg; break; +--- a/wpa_supplicant/bss.h ++++ b/wpa_supplicant/bss.h +@@ -69,6 +69,8 @@ struct wpa_bss { + u8 ssid[32]; + /** Length of SSID */ + size_t ssid_len; ++ /** HT caapbilities */ ++ u16 ht_capab; + /** Frequency of the channel in MHz (e.g., 2412 = channel 1) */ + int freq; + /** Beacon interval in TUs (host byte order) */ diff --git a/package/network/services/hostapd/patches/460-disable_ctrl_iface_mib.patch b/package/network/services/hostapd/patches/460-disable_ctrl_iface_mib.patch index 2f03179a0a..e5db6b4403 100644 --- a/package/network/services/hostapd/patches/460-disable_ctrl_iface_mib.patch +++ b/package/network/services/hostapd/patches/460-disable_ctrl_iface_mib.patch @@ -1,6 +1,6 @@ --- a/hostapd/Makefile +++ b/hostapd/Makefile -@@ -135,6 +135,9 @@ endif +@@ -136,6 +136,9 @@ endif ifdef CONFIG_NO_CTRL_IFACE CFLAGS += -DCONFIG_NO_CTRL_IFACE else @@ -12,7 +12,7 @@ endif --- a/hostapd/ctrl_iface.c +++ b/hostapd/ctrl_iface.c -@@ -899,6 +899,7 @@ static void hostapd_ctrl_iface_receive(i +@@ -937,6 +937,7 @@ static void hostapd_ctrl_iface_receive(i } else if (os_strncmp(buf, "RELOG", 5) == 0) { if (wpa_debug_reopen_file() < 0) reply_len = -1; @@ -20,7 +20,7 @@ } else if (os_strcmp(buf, "MIB") == 0) { reply_len = ieee802_11_get_mib(hapd, reply, reply_size); if (reply_len >= 0) { -@@ -928,10 +929,12 @@ static void hostapd_ctrl_iface_receive(i +@@ -966,10 +967,12 @@ static void hostapd_ctrl_iface_receive(i reply_len += res; } #endif /* CONFIG_NO_RADIUS */ @@ -33,7 +33,7 @@ } else if (os_strcmp(buf, "STA-FIRST") == 0) { reply_len = hostapd_ctrl_iface_sta_first(hapd, reply, reply_size); -@@ -941,6 +944,7 @@ static void hostapd_ctrl_iface_receive(i +@@ -979,6 +982,7 @@ static void hostapd_ctrl_iface_receive(i } else if (os_strncmp(buf, "STA-NEXT ", 9) == 0) { reply_len = hostapd_ctrl_iface_sta_next(hapd, buf + 9, reply, reply_size); @@ -43,8 +43,8 @@ reply_len = -1; --- a/wpa_supplicant/Makefile +++ b/wpa_supplicant/Makefile -@@ -751,6 +751,9 @@ ifdef CONFIG_IEEE80211N - OBJS += ../src/ap/ieee802_11_ht.o +@@ -754,6 +754,9 @@ ifdef CONFIG_WNM + OBJS += ../src/ap/wnm_ap.o endif ifdef CONFIG_CTRL_IFACE +ifdef CONFIG_CTRL_IFACE_MIB @@ -55,7 +55,7 @@ --- a/wpa_supplicant/ctrl_iface.c +++ b/wpa_supplicant/ctrl_iface.c -@@ -4382,6 +4382,7 @@ char * wpa_supplicant_ctrl_iface_process +@@ -4933,6 +4933,7 @@ char * wpa_supplicant_ctrl_iface_process reply_len = -1; } else if (os_strncmp(buf, "NOTE ", 5) == 0) { wpa_printf(MSG_INFO, "NOTE: %s", buf + 5); @@ -63,7 +63,7 @@ } else if (os_strcmp(buf, "MIB") == 0) { reply_len = wpa_sm_get_mib(wpa_s->wpa, reply, reply_size); if (reply_len >= 0) { -@@ -4393,6 +4394,7 @@ char * wpa_supplicant_ctrl_iface_process +@@ -4944,6 +4945,7 @@ char * wpa_supplicant_ctrl_iface_process else reply_len += res; } @@ -71,7 +71,7 @@ } else if (os_strncmp(buf, "STATUS", 6) == 0) { reply_len = wpa_supplicant_ctrl_iface_status( wpa_s, buf + 6, reply, reply_size); -@@ -4792,6 +4794,7 @@ char * wpa_supplicant_ctrl_iface_process +@@ -5350,6 +5352,7 @@ char * wpa_supplicant_ctrl_iface_process reply_len = wpa_supplicant_ctrl_iface_bss( wpa_s, buf + 4, reply, reply_size); #ifdef CONFIG_AP @@ -79,7 +79,7 @@ } else if (os_strcmp(buf, "STA-FIRST") == 0) { reply_len = ap_ctrl_iface_sta_first(wpa_s, reply, reply_size); } else if (os_strncmp(buf, "STA ", 4) == 0) { -@@ -4800,6 +4803,7 @@ char * wpa_supplicant_ctrl_iface_process +@@ -5358,6 +5361,7 @@ char * wpa_supplicant_ctrl_iface_process } else if (os_strncmp(buf, "STA-NEXT ", 9) == 0) { reply_len = ap_ctrl_iface_sta_next(wpa_s, buf + 9, reply, reply_size); @@ -95,9 +95,9 @@ +#ifdef CONFIG_CTRL_IFACE_MIB - static int hostapd_ctrl_iface_sta_mib(struct hostapd_data *hapd, - struct sta_info *sta, -@@ -103,6 +104,7 @@ int hostapd_ctrl_iface_sta_next(struct h + static int hostapd_get_sta_conn_time(struct sta_info *sta, + char *buf, size_t buflen) +@@ -129,6 +130,7 @@ int hostapd_ctrl_iface_sta_next(struct h return hostapd_ctrl_iface_sta_mib(hapd, sta->next, buf, buflen); } @@ -105,14 +105,14 @@ #ifdef CONFIG_P2P_MANAGER static int p2p_manager_disconnect(struct hostapd_data *hapd, u16 stype, -@@ -269,3 +271,4 @@ int hostapd_ctrl_iface_disassociate(stru +@@ -303,3 +305,4 @@ int hostapd_ctrl_iface_disassociate(stru return 0; } + --- a/src/ap/ieee802_1x.c +++ b/src/ap/ieee802_1x.c -@@ -2034,6 +2034,7 @@ static const char * bool_txt(Boolean boo +@@ -2048,6 +2048,7 @@ static const char * bool_txt(Boolean boo return bool ? "TRUE" : "FALSE"; } @@ -120,7 +120,7 @@ int ieee802_1x_get_mib(struct hostapd_data *hapd, char *buf, size_t buflen) { -@@ -2186,6 +2187,7 @@ int ieee802_1x_get_mib_sta(struct hostap +@@ -2200,6 +2201,7 @@ int ieee802_1x_get_mib_sta(struct hostap return len; } @@ -130,7 +130,7 @@ struct sta_info *sta, int success) --- a/src/ap/wpa_auth.c +++ b/src/ap/wpa_auth.c -@@ -2729,6 +2729,7 @@ static const char * wpa_bool_txt(int boo +@@ -2687,6 +2687,7 @@ static const char * wpa_bool_txt(int boo return bool ? "TRUE" : "FALSE"; } @@ -138,7 +138,7 @@ #define RSN_SUITE "%02x-%02x-%02x-%d" #define RSN_SUITE_ARG(s) \ -@@ -2873,7 +2874,7 @@ int wpa_get_mib_sta(struct wpa_state_mac +@@ -2831,7 +2832,7 @@ int wpa_get_mib_sta(struct wpa_state_mac return len; } @@ -149,7 +149,7 @@ { --- a/src/rsn_supp/wpa.c +++ b/src/rsn_supp/wpa.c -@@ -1844,6 +1844,8 @@ static u32 wpa_key_mgmt_suite(struct wpa +@@ -1848,6 +1848,8 @@ static u32 wpa_key_mgmt_suite(struct wpa } @@ -158,7 +158,7 @@ #define RSN_SUITE "%02x-%02x-%02x-%d" #define RSN_SUITE_ARG(s) \ ((s) >> 24) & 0xff, ((s) >> 16) & 0xff, ((s) >> 8) & 0xff, (s) & 0xff -@@ -1927,6 +1929,7 @@ int wpa_sm_get_mib(struct wpa_sm *sm, ch +@@ -1931,6 +1933,7 @@ int wpa_sm_get_mib(struct wpa_sm *sm, ch return (int) len; } diff --git a/package/network/services/hostapd/patches/470-wpa_ie_cap_workaround.patch b/package/network/services/hostapd/patches/470-wpa_ie_cap_workaround.patch index 00a32229d4..974ec3ded5 100644 --- a/package/network/services/hostapd/patches/470-wpa_ie_cap_workaround.patch +++ b/package/network/services/hostapd/patches/470-wpa_ie_cap_workaround.patch @@ -1,6 +1,6 @@ --- a/src/common/wpa_common.c +++ b/src/common/wpa_common.c -@@ -959,6 +959,31 @@ const char * wpa_key_mgmt_txt(int key_mg +@@ -965,6 +965,31 @@ const char * wpa_key_mgmt_txt(int key_mg } @@ -32,7 +32,7 @@ int wpa_compare_rsn_ie(int ft_initial_assoc, const u8 *ie1, size_t ie1len, const u8 *ie2, size_t ie2len) -@@ -966,8 +991,19 @@ int wpa_compare_rsn_ie(int ft_initial_as +@@ -972,8 +997,19 @@ int wpa_compare_rsn_ie(int ft_initial_as if (ie1 == NULL || ie2 == NULL) return -1; diff --git a/package/network/services/hostapd/patches/480-terminate_on_setup_failure.patch b/package/network/services/hostapd/patches/480-terminate_on_setup_failure.patch index 6168a5cfc3..f9d7425965 100644 --- a/package/network/services/hostapd/patches/480-terminate_on_setup_failure.patch +++ b/package/network/services/hostapd/patches/480-terminate_on_setup_failure.patch @@ -1,6 +1,6 @@ --- a/src/ap/hostapd.c +++ b/src/ap/hostapd.c -@@ -886,11 +886,8 @@ int hostapd_setup_interface_complete(str +@@ -895,11 +895,8 @@ int hostapd_setup_interface_complete(str size_t j; u8 *prev_addr; @@ -14,8 +14,8 @@ wpa_printf(MSG_DEBUG, "Completing interface initialization"); if (hapd->iconf->channel) { -@@ -906,7 +903,7 @@ int hostapd_setup_interface_complete(str - hapd->iconf->secondary_channel)) { +@@ -919,7 +916,7 @@ int hostapd_setup_interface_complete(str + hapd->iconf->vht_oper_centr_freq_seg1_idx)) { wpa_printf(MSG_ERROR, "Could not set channel for " "kernel driver"); - return -1; @@ -23,7 +23,7 @@ } } -@@ -917,7 +914,7 @@ int hostapd_setup_interface_complete(str +@@ -930,7 +927,7 @@ int hostapd_setup_interface_complete(str hostapd_logger(hapd, NULL, HOSTAPD_MODULE_IEEE80211, HOSTAPD_LEVEL_WARNING, "Failed to prepare rates table."); @@ -32,7 +32,7 @@ } } -@@ -925,14 +922,14 @@ int hostapd_setup_interface_complete(str +@@ -938,14 +935,14 @@ int hostapd_setup_interface_complete(str hostapd_set_rts(hapd, hapd->iconf->rts_threshold)) { wpa_printf(MSG_ERROR, "Could not set RTS threshold for " "kernel driver"); @@ -49,7 +49,7 @@ } prev_addr = hapd->own_addr; -@@ -942,7 +939,7 @@ int hostapd_setup_interface_complete(str +@@ -955,7 +952,7 @@ int hostapd_setup_interface_complete(str if (j) os_memcpy(hapd->own_addr, prev_addr, ETH_ALEN); if (hostapd_setup_bss(hapd, j == 0)) @@ -58,7 +58,7 @@ if (hostapd_mac_comp_empty(hapd->conf->bssid) == 0) prev_addr = hapd->own_addr; } -@@ -954,7 +951,7 @@ int hostapd_setup_interface_complete(str +@@ -967,7 +964,7 @@ int hostapd_setup_interface_complete(str if (hostapd_driver_commit(hapd) < 0) { wpa_printf(MSG_ERROR, "%s: Failed to commit driver " "configuration", __func__); @@ -67,7 +67,7 @@ } /* -@@ -975,6 +972,11 @@ int hostapd_setup_interface_complete(str +@@ -988,6 +985,11 @@ int hostapd_setup_interface_complete(str iface->bss[0]->conf->iface); return 0; diff --git a/package/network/services/hostapd/patches/500-random_pool_add_kernel.patch b/package/network/services/hostapd/patches/500-random_pool_add_kernel.patch index 55b8f716e5..22805371cc 100644 --- a/package/network/services/hostapd/patches/500-random_pool_add_kernel.patch +++ b/package/network/services/hostapd/patches/500-random_pool_add_kernel.patch @@ -117,7 +117,7 @@ +} --- a/wpa_supplicant/Makefile +++ b/wpa_supplicant/Makefile -@@ -1217,9 +1217,8 @@ endif +@@ -1222,9 +1222,8 @@ endif ifdef CONFIG_NO_RANDOM_POOL CFLAGS += -DCONFIG_NO_RANDOM_POOL @@ -130,7 +130,7 @@ ifeq ($(CONFIG_CTRL_IFACE), y) --- a/wpa_supplicant/Android.mk +++ b/wpa_supplicant/Android.mk -@@ -1161,9 +1161,8 @@ endif +@@ -1162,9 +1162,8 @@ endif ifdef CONFIG_NO_RANDOM_POOL L_CFLAGS += -DCONFIG_NO_RANDOM_POOL @@ -143,7 +143,7 @@ ifeq ($(CONFIG_CTRL_IFACE), y) --- a/hostapd/Android.mk +++ b/hostapd/Android.mk -@@ -748,11 +748,11 @@ endif +@@ -745,11 +745,11 @@ endif ifdef CONFIG_NO_RANDOM_POOL L_CFLAGS += -DCONFIG_NO_RANDOM_POOL else @@ -159,7 +159,7 @@ L_CFLAGS += -DRADIUS_SERVER --- a/hostapd/Makefile +++ b/hostapd/Makefile -@@ -755,12 +755,12 @@ endif +@@ -748,12 +748,12 @@ endif ifdef CONFIG_NO_RANDOM_POOL CFLAGS += -DCONFIG_NO_RANDOM_POOL else diff --git a/package/network/services/hostapd/patches/510-bring_down_interface.patch b/package/network/services/hostapd/patches/510-bring_down_interface.patch index 7481eb152a..1288e9e6db 100644 --- a/package/network/services/hostapd/patches/510-bring_down_interface.patch +++ b/package/network/services/hostapd/patches/510-bring_down_interface.patch @@ -1,6 +1,6 @@ --- a/src/drivers/driver_nl80211.c +++ b/src/drivers/driver_nl80211.c -@@ -7144,8 +7144,6 @@ static int wpa_driver_nl80211_set_mode(s +@@ -7346,8 +7346,6 @@ static int wpa_driver_nl80211_set_mode(s ret = nl80211_set_mode(drv, drv->ifindex, nlmode); if (ret == -EACCES) break; @@ -9,7 +9,7 @@ if (res && !ret) ret = -1; else if (ret != -EBUSY) -@@ -7161,6 +7159,7 @@ static int wpa_driver_nl80211_set_mode(s +@@ -7363,6 +7361,7 @@ static int wpa_driver_nl80211_set_mode(s "interface is down"); drv->nlmode = nlmode; drv->ignore_if_down_event = 1; diff --git a/package/network/services/hostapd/patches/520-fix_wps_pin_crash.patch b/package/network/services/hostapd/patches/520-fix_wps_pin_crash.patch index 29d154cef3..80d562c8c2 100644 --- a/package/network/services/hostapd/patches/520-fix_wps_pin_crash.patch +++ b/package/network/services/hostapd/patches/520-fix_wps_pin_crash.patch @@ -1,6 +1,6 @@ --- a/hostapd/ctrl_iface.c +++ b/hostapd/ctrl_iface.c -@@ -450,6 +450,9 @@ static int hostapd_ctrl_iface_wps_ap_pin +@@ -479,6 +479,9 @@ static int hostapd_ctrl_iface_wps_ap_pin char *pos; const char *pin_txt; diff --git a/package/network/services/hostapd/patches/530-wps_single_auth_enc_type.patch b/package/network/services/hostapd/patches/530-wps_single_auth_enc_type.patch index f05ea35cf9..51c7669ed1 100644 --- a/package/network/services/hostapd/patches/530-wps_single_auth_enc_type.patch +++ b/package/network/services/hostapd/patches/530-wps_single_auth_enc_type.patch @@ -1,6 +1,6 @@ --- a/src/ap/wps_hostapd.c +++ b/src/ap/wps_hostapd.c -@@ -873,11 +873,9 @@ int hostapd_init_wps(struct hostapd_data +@@ -871,11 +871,9 @@ int hostapd_init_wps(struct hostapd_data if (conf->rsn_pairwise & WPA_CIPHER_CCMP) wps->encr_types |= WPS_ENCR_AES; @@ -14,7 +14,7 @@ if (conf->wpa_key_mgmt & WPA_KEY_MGMT_PSK) wps->auth_types |= WPS_AUTH_WPAPSK; if (conf->wpa_key_mgmt & WPA_KEY_MGMT_IEEE8021X) -@@ -885,7 +883,7 @@ int hostapd_init_wps(struct hostapd_data +@@ -883,7 +881,7 @@ int hostapd_init_wps(struct hostapd_data if (conf->wpa_pairwise & WPA_CIPHER_CCMP) wps->encr_types |= WPS_ENCR_AES; diff --git a/package/network/services/hostapd/patches/540-dynamic_20_40_mhz.patch b/package/network/services/hostapd/patches/540-dynamic_20_40_mhz.patch index d58358c083..ce2a339346 100644 --- a/package/network/services/hostapd/patches/540-dynamic_20_40_mhz.patch +++ b/package/network/services/hostapd/patches/540-dynamic_20_40_mhz.patch @@ -1,6 +1,6 @@ --- a/hostapd/config_file.c +++ b/hostapd/config_file.c -@@ -2495,6 +2495,10 @@ static int hostapd_config_fill(struct ho +@@ -2474,6 +2474,10 @@ static int hostapd_config_fill(struct ho "ht_capab", line); errors++; } @@ -13,7 +13,7 @@ #endif /* CONFIG_IEEE80211N */ --- a/src/ap/ap_config.h +++ b/src/ap/ap_config.h -@@ -501,6 +501,7 @@ struct hostapd_config { +@@ -514,6 +514,7 @@ struct hostapd_config { int ieee80211n; int secondary_channel; int require_ht; @@ -31,7 +31,7 @@ #include "ieee802_11_auth.h" #include "vlan_init.h" #include "wpa_auth.h" -@@ -323,6 +324,7 @@ static void hostapd_cleanup_iface_pre(st +@@ -332,6 +333,7 @@ static void hostapd_cleanup_iface_pre(st static void hostapd_cleanup_iface_partial(struct hostapd_iface *iface) { @@ -41,7 +41,7 @@ os_free(iface->current_rates); --- a/src/ap/hostapd.h +++ b/src/ap/hostapd.h -@@ -251,6 +251,9 @@ struct hostapd_iface { +@@ -265,6 +265,9 @@ struct hostapd_iface { /* Overlapping BSS information */ int olbc_ht; @@ -53,7 +53,7 @@ }; --- a/src/ap/ieee802_11.c +++ b/src/ap/ieee802_11.c -@@ -1220,6 +1220,9 @@ static void handle_beacon(struct hostapd +@@ -1484,6 +1484,9 @@ static void handle_beacon(struct hostapd sizeof(mgmt->u.beacon)), &elems, 0); @@ -65,7 +65,7 @@ --- a/src/ap/ieee802_11.h +++ b/src/ap/ieee802_11.h -@@ -78,4 +78,17 @@ int hostapd_update_time_adv(struct hosta +@@ -81,4 +81,17 @@ int hostapd_update_time_adv(struct hosta void hostapd_client_poll_ok(struct hostapd_data *hapd, const u8 *addr); u8 * hostapd_eid_bss_max_idle_period(struct hostapd_data *hapd, u8 *eid); @@ -119,7 +119,7 @@ pos += sizeof(*oper); -@@ -271,3 +276,80 @@ void hostapd_get_ht_capab(struct hostapd +@@ -270,3 +275,84 @@ void hostapd_get_ht_capab(struct hostapd neg_ht_cap->ht_capabilities_info = host_to_le16(cap); } @@ -168,9 +168,13 @@ + secondary_channel = hapd->iconf->secondary_channel; + + if (hostapd_set_freq(hapd, hapd->iconf->hw_mode, iface->freq, -+ hapd->iconf->channel, -+ hapd->iconf->ieee80211n, -+ secondary_channel)) { ++ hapd->iconf->channel, ++ hapd->iconf->ieee80211n, ++ hapd->iconf->ieee80211ac, ++ secondary_channel, ++ hapd->iconf->vht_oper_chwidth, ++ hapd->iconf->vht_oper_centr_freq_seg0_idx, ++ hapd->iconf->vht_oper_centr_freq_seg1_idx)) { + wpa_printf(MSG_ERROR, "Could not set channel for " + "kernel driver"); + } diff --git a/package/network/services/hostapd/patches/550-limit_debug_messages.patch b/package/network/services/hostapd/patches/550-limit_debug_messages.patch index ba38d3cf93..659e980112 100644 --- a/package/network/services/hostapd/patches/550-limit_debug_messages.patch +++ b/package/network/services/hostapd/patches/550-limit_debug_messages.patch @@ -165,7 +165,7 @@ /** * wpa_hexdump_ascii_key - conditional hex dump, hide keys -@@ -138,8 +173,14 @@ void wpa_hexdump_ascii(int level, const +@@ -138,8 +173,14 @@ void wpa_hexdump_ascii(int level, const * bytes per line will be shown. This works like wpa_hexdump_ascii(), but by * default, does not include secret keys (passwords, etc.) in debug output. */ diff --git a/package/network/services/hostapd/patches/580-fix_bss_addr.patch b/package/network/services/hostapd/patches/580-fix_bss_addr.patch deleted file mode 100644 index 9ee6af0d89..0000000000 --- a/package/network/services/hostapd/patches/580-fix_bss_addr.patch +++ /dev/null @@ -1,11 +0,0 @@ ---- a/src/drivers/driver_nl80211.c -+++ b/src/drivers/driver_nl80211.c -@@ -7738,7 +7738,7 @@ static int i802_set_wds_sta(void *priv, - if (!if_nametoindex(name)) { - if (nl80211_create_iface(drv, name, - NL80211_IFTYPE_AP_VLAN, -- NULL, 1) < 0) -+ bss->addr, 1) < 0) - return -1; - if (bridge_ifname && - linux_br_add_if(drv->global->ioctl_sock, diff --git a/package/network/services/hostapd/patches/590-hostapd_cli_ifdef.patch b/package/network/services/hostapd/patches/590-hostapd_cli_ifdef.patch index 705cef13d5..cbf1e485cd 100644 --- a/package/network/services/hostapd/patches/590-hostapd_cli_ifdef.patch +++ b/package/network/services/hostapd/patches/590-hostapd_cli_ifdef.patch @@ -8,7 +8,7 @@ " wps_pin [timeout] [addr] add WPS Enrollee PIN\n" " wps_check_pin verify PIN checksum\n" " wps_pbc indicate button pushed to initiate PBC\n" -@@ -82,7 +81,6 @@ static const char *commands_help = +@@ -79,7 +78,6 @@ static const char *commands_help = #endif /* CONFIG_WPS_NFC */ " wps_ap_pin [params..] enable/disable AP PIN\n" " wps_config configure AP\n" @@ -16,7 +16,7 @@ " get_config show current configuration\n" " help show this usage help\n" " interface [ifname] show interfaces/select interface\n" -@@ -343,7 +341,6 @@ static int hostapd_cli_cmd_sa_query(stru +@@ -340,7 +338,6 @@ static int hostapd_cli_cmd_sa_query(stru #endif /* CONFIG_IEEE80211W */ @@ -24,15 +24,15 @@ static int hostapd_cli_cmd_wps_pin(struct wpa_ctrl *ctrl, int argc, char *argv[]) { -@@ -573,7 +570,6 @@ static int hostapd_cli_cmd_wps_config(st +@@ -559,7 +556,6 @@ static int hostapd_cli_cmd_wps_config(st ssid_hex, argv[1]); return wpa_ctrl_command(ctrl, buf); } -#endif /* CONFIG_WPS */ - static int hostapd_cli_cmd_ess_disassoc(struct wpa_ctrl *ctrl, int argc, -@@ -799,7 +795,6 @@ static struct hostapd_cli_cmd hostapd_cl + static int hostapd_cli_cmd_disassoc_imminent(struct wpa_ctrl *ctrl, int argc, +@@ -805,7 +801,6 @@ static struct hostapd_cli_cmd hostapd_cl #ifdef CONFIG_IEEE80211W { "sa_query", hostapd_cli_cmd_sa_query }, #endif /* CONFIG_IEEE80211W */ @@ -40,11 +40,11 @@ { "wps_pin", hostapd_cli_cmd_wps_pin }, { "wps_check_pin", hostapd_cli_cmd_wps_check_pin }, { "wps_pbc", hostapd_cli_cmd_wps_pbc }, -@@ -814,7 +809,6 @@ static struct hostapd_cli_cmd hostapd_cl +@@ -818,7 +813,6 @@ static struct hostapd_cli_cmd hostapd_cl #endif /* CONFIG_WPS_NFC */ { "wps_ap_pin", hostapd_cli_cmd_wps_ap_pin }, { "wps_config", hostapd_cli_cmd_wps_config }, -#endif /* CONFIG_WPS */ + { "disassoc_imminent", hostapd_cli_cmd_disassoc_imminent }, { "ess_disassoc", hostapd_cli_cmd_ess_disassoc }, { "get_config", hostapd_cli_cmd_get_config }, - { "help", hostapd_cli_cmd_help }, diff --git a/package/network/services/hostapd/patches/601-wpa_supplicant-add-new-config-params-to-be-used-with.patch b/package/network/services/hostapd/patches/601-wpa_supplicant-add-new-config-params-to-be-used-with.patch index ac0d247d76..977bce4e78 100644 --- a/package/network/services/hostapd/patches/601-wpa_supplicant-add-new-config-params-to-be-used-with.patch +++ b/package/network/services/hostapd/patches/601-wpa_supplicant-add-new-config-params-to-be-used-with.patch @@ -22,7 +22,7 @@ Signed-hostap: Antonio Quartulli #include "common/defs.h" #define HOSTAPD_CHAN_DISABLED 0x00000001 -@@ -351,6 +352,11 @@ struct wpa_driver_associate_params { +@@ -363,6 +364,11 @@ struct wpa_driver_associate_params { */ int freq; @@ -44,7 +44,7 @@ Signed-hostap: Antonio Quartulli #include "config.h" -@@ -1463,6 +1464,97 @@ static char * wpa_config_write_p2p_clien +@@ -1369,6 +1370,97 @@ static char * wpa_config_write_p2p_clien #endif /* CONFIG_P2P */ @@ -142,12 +142,11 @@ Signed-hostap: Antonio Quartulli /* Helper macros for network block parser */ #ifdef OFFSET -@@ -1638,6 +1730,10 @@ static const struct parse_data ssid_fiel - #endif /* CONFIG_HT_OVERRIDES */ +@@ -1546,6 +1638,9 @@ static const struct parse_data ssid_fiel { INT(ap_max_inactivity) }, { INT(dtim_period) }, + { INT(beacon_int) }, + { INT_RANGE(fixed_freq, 0, 1) }, -+ { INT_RANGE(beacon_interval, 0, 1000) }, + { FUNC(rates) }, + { FUNC(mcast_rate) }, }; @@ -163,13 +162,12 @@ Signed-hostap: Antonio Quartulli #define MAX_SSID_LEN 32 -@@ -529,6 +530,11 @@ struct wpa_ssid { - * disabled_until - Network block disabled until this time if non-zero +@@ -571,6 +572,10 @@ struct wpa_ssid { + * dereferences since it may not be updated in all cases. */ - struct os_time disabled_until; + void *parent_cred; + + int fixed_freq; -+ int beacon_interval; + unsigned char rates[NL80211_MAX_SUPP_RATES]; + double mcast_rate; }; @@ -177,7 +175,7 @@ Signed-hostap: Antonio Quartulli #endif /* CONFIG_SSID_H */ --- a/wpa_supplicant/wpa_supplicant.c +++ b/wpa_supplicant/wpa_supplicant.c -@@ -1561,15 +1561,24 @@ void wpa_supplicant_associate(struct wpa +@@ -1570,15 +1570,24 @@ void wpa_supplicant_associate(struct wpa params.ssid_len = ssid->ssid_len; } @@ -194,7 +192,7 @@ Signed-hostap: Antonio Quartulli + /* Initial channel for IBSS */ + params.freq = ssid->frequency; + params.fixed_freq = ssid->fixed_freq; -+ params.beacon_interval = ssid->beacon_interval; ++ params.beacon_interval = ssid->beacon_int; + i = 0; + while (i < NL80211_MAX_SUPP_RATES) { + params.rates[i] = ssid->rates[i]; diff --git a/package/network/services/hostapd/patches/602-driver_nl80211-use-new-parameters-during-ibss-join.patch b/package/network/services/hostapd/patches/602-driver_nl80211-use-new-parameters-during-ibss-join.patch index c426a0bb2d..bf80185c0d 100644 --- a/package/network/services/hostapd/patches/602-driver_nl80211-use-new-parameters-during-ibss-join.patch +++ b/package/network/services/hostapd/patches/602-driver_nl80211-use-new-parameters-during-ibss-join.patch @@ -10,7 +10,7 @@ Signed-hostap: Antonio Quartulli --- a/src/drivers/driver_nl80211.c +++ b/src/drivers/driver_nl80211.c -@@ -6587,7 +6587,7 @@ static int wpa_driver_nl80211_ibss(struc +@@ -6806,7 +6806,7 @@ static int wpa_driver_nl80211_ibss(struc struct wpa_driver_associate_params *params) { struct nl_msg *msg; @@ -19,7 +19,7 @@ Signed-hostap: Antonio Quartulli int count = 0; wpa_printf(MSG_DEBUG, "nl80211: Join IBSS (ifindex=%d)", drv->ifindex); -@@ -6620,6 +6620,37 @@ retry: +@@ -6839,6 +6839,37 @@ retry: wpa_printf(MSG_DEBUG, " * freq=%d", params->freq); NLA_PUT_U32(msg, NL80211_ATTR_WIPHY_FREQ, params->freq); diff --git a/package/network/services/hostapd/patches/604-wpa_s-support-htmode-param.patch b/package/network/services/hostapd/patches/604-wpa_s-support-htmode-param.patch index 44931f2f3b..00272a591a 100644 --- a/package/network/services/hostapd/patches/604-wpa_s-support-htmode-param.patch +++ b/package/network/services/hostapd/patches/604-wpa_s-support-htmode-param.patch @@ -16,7 +16,7 @@ Signed-off-by: Antonio Quartulli --- a/src/drivers/driver.h +++ b/src/drivers/driver.h -@@ -356,6 +356,8 @@ struct wpa_driver_associate_params { +@@ -368,6 +368,8 @@ struct wpa_driver_associate_params { int fixed_freq; unsigned char rates[NL80211_MAX_SUPP_RATES]; int mcast_rate; @@ -27,7 +27,7 @@ Signed-off-by: Antonio Quartulli * bg_scan_period - Background scan period in seconds, 0 to disable --- a/src/drivers/driver_nl80211.c +++ b/src/drivers/driver_nl80211.c -@@ -6651,6 +6651,22 @@ retry: +@@ -6870,6 +6870,22 @@ retry: NLA_PUT_U32(msg, NL80211_ATTR_MCAST_RATE, params->mcast_rate); } @@ -52,7 +52,7 @@ Signed-off-by: Antonio Quartulli goto nla_put_failure; --- a/wpa_supplicant/config.c +++ b/wpa_supplicant/config.c -@@ -1495,6 +1495,71 @@ static char * wpa_config_write_mcast_rat +@@ -1401,6 +1401,71 @@ static char * wpa_config_write_mcast_rat } #endif /* NO_CONFIG_WRITE */ @@ -124,8 +124,8 @@ Signed-off-by: Antonio Quartulli static int wpa_config_parse_rates(const struct parse_data *data, struct wpa_ssid *ssid, int line, const char *value) -@@ -1734,6 +1799,7 @@ static const struct parse_data ssid_fiel - { INT_RANGE(beacon_interval, 0, 1000) }, +@@ -1641,6 +1706,7 @@ static const struct parse_data ssid_fiel + { INT_RANGE(fixed_freq, 0, 1) }, { FUNC(rates) }, { FUNC(mcast_rate) }, + { FUNC(htmode) }, @@ -134,8 +134,8 @@ Signed-off-by: Antonio Quartulli #undef OFFSET --- a/wpa_supplicant/config_ssid.h +++ b/wpa_supplicant/config_ssid.h -@@ -535,6 +535,8 @@ struct wpa_ssid { - int beacon_interval; +@@ -576,6 +576,8 @@ struct wpa_ssid { + int fixed_freq; unsigned char rates[NL80211_MAX_SUPP_RATES]; double mcast_rate; + int ht_set; @@ -145,7 +145,7 @@ Signed-off-by: Antonio Quartulli #endif /* CONFIG_SSID_H */ --- a/wpa_supplicant/wpa_supplicant.c +++ b/wpa_supplicant/wpa_supplicant.c -@@ -1577,6 +1577,8 @@ void wpa_supplicant_associate(struct wpa +@@ -1586,6 +1586,8 @@ void wpa_supplicant_associate(struct wpa i++; } params.mcast_rate = ssid->mcast_rate; diff --git a/package/network/services/hostapd/patches/610-max_num_sta_probe.patch b/package/network/services/hostapd/patches/610-max_num_sta_probe.patch index e22348c896..141eb5b6e3 100644 --- a/package/network/services/hostapd/patches/610-max_num_sta_probe.patch +++ b/package/network/services/hostapd/patches/610-max_num_sta_probe.patch @@ -1,6 +1,6 @@ --- a/src/ap/beacon.c +++ b/src/ap/beacon.c -@@ -413,6 +413,10 @@ void handle_probe_req(struct hostapd_dat +@@ -455,6 +455,10 @@ void handle_probe_req(struct hostapd_dat return; }