diff options
author | Hauke Mehrtens <hauke@hauke-m.de> | 2019-05-04 01:52:25 +0200 |
---|---|---|
committer | Petr Štetiar <ynezz@true.cz> | 2019-11-14 20:59:58 +0100 |
commit | 80b58a9db6a514138e979ccf06d0fe4dc52f0907 (patch) | |
tree | 0658866191081fad509033aea534091df2299a27 /package/network/services/hostapd/patches/600-ubus_support.patch | |
parent | e1854815aa4e8d85cc7a831d665a8a43d00f41c0 (diff) | |
download | upstream-80b58a9db6a514138e979ccf06d0fe4dc52f0907.tar.gz upstream-80b58a9db6a514138e979ccf06d0fe4dc52f0907.tar.bz2 upstream-80b58a9db6a514138e979ccf06d0fe4dc52f0907.zip |
hostapd: Update to version 2.8 (2019-04-21)
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>
(cherry picked from commit 8af79550e6c280717660f66032d89d21007b15d2)
Diffstat (limited to 'package/network/services/hostapd/patches/600-ubus_support.patch')
-rw-r--r-- | package/network/services/hostapd/patches/600-ubus_support.patch | 152 |
1 files changed, 32 insertions, 120 deletions
diff --git a/package/network/services/hostapd/patches/600-ubus_support.patch b/package/network/services/hostapd/patches/600-ubus_support.patch index 1125627bfd..508f09624d 100644 --- a/package/network/services/hostapd/patches/600-ubus_support.patch +++ b/package/network/services/hostapd/patches/600-ubus_support.patch @@ -22,7 +22,7 @@ #define OCE_STA_CFON_ENABLED(hapd) \ ((hapd->conf->oce & OCE_STA_CFON) && \ -@@ -136,6 +137,7 @@ struct hostapd_data { +@@ -141,6 +142,7 @@ struct hostapd_data { struct hostapd_iface *iface; struct hostapd_config *iconf; struct hostapd_bss_config *conf; @@ -30,25 +30,17 @@ int interface_added; /* virtual interface added for this BSS */ unsigned int started:1; unsigned int disabled:1; -@@ -547,6 +549,7 @@ hostapd_alloc_bss_data(struct hostapd_if - struct hostapd_bss_config *bss); - int hostapd_setup_interface(struct hostapd_iface *iface); - int hostapd_setup_interface_complete(struct hostapd_iface *iface, int err); -+void hostapd_set_own_neighbor_report(struct hostapd_data *hapd); - void hostapd_interface_deinit(struct hostapd_iface *iface); - void hostapd_interface_free(struct hostapd_iface *iface); - struct hostapd_iface * hostapd_alloc_iface(void); --- a/src/ap/hostapd.c +++ b/src/ap/hostapd.c -@@ -373,6 +373,7 @@ static void hostapd_free_hapd_data(struc - hapd->started = 0; +@@ -374,6 +374,7 @@ static void hostapd_free_hapd_data(struc + hapd->beacon_set_done = 0; wpa_printf(MSG_DEBUG, "%s(%s)", __func__, hapd->conf->iface); + hostapd_ubus_free_bss(hapd); iapp_deinit(hapd->iapp); hapd->iapp = NULL; accounting_deinit(hapd); -@@ -1295,6 +1296,8 @@ static int hostapd_setup_bss(struct host +@@ -1314,6 +1315,8 @@ static int hostapd_setup_bss(struct host if (hapd->driver && hapd->driver->set_operstate) hapd->driver->set_operstate(hapd->drv_priv, 1); @@ -57,16 +49,7 @@ return 0; } -@@ -1709,7 +1712,7 @@ static enum nr_chan_width hostapd_get_nr - #endif /* NEED_AP_MLME */ - - --static void hostapd_set_own_neighbor_report(struct hostapd_data *hapd) -+void hostapd_set_own_neighbor_report(struct hostapd_data *hapd) - { - #ifdef NEED_AP_MLME - u16 capab = hostapd_own_capab_info(hapd); -@@ -1930,6 +1933,7 @@ static int hostapd_setup_interface_compl +@@ -1828,6 +1831,7 @@ static int hostapd_setup_interface_compl if (err) goto fail; @@ -74,7 +57,7 @@ wpa_printf(MSG_DEBUG, "Completing interface initialization"); if (iface->conf->channel) { #ifdef NEED_AP_MLME -@@ -2110,6 +2114,7 @@ dfs_offload: +@@ -2020,6 +2024,7 @@ dfs_offload: fail: wpa_printf(MSG_ERROR, "Interface initialization failed"); @@ -82,7 +65,7 @@ hostapd_set_state(iface, HAPD_IFACE_DISABLED); wpa_msg(hapd->msg_ctx, MSG_INFO, AP_EVENT_DISABLED); #ifdef CONFIG_FST -@@ -2576,6 +2581,7 @@ void hostapd_interface_deinit_free(struc +@@ -2489,6 +2494,7 @@ void hostapd_interface_deinit_free(struc (unsigned int) iface->conf->num_bss); driver = iface->bss[0]->driver; drv_priv = iface->bss[0]->drv_priv; @@ -92,14 +75,7 @@ __func__, driver, drv_priv); --- a/src/ap/ieee802_11.c +++ b/src/ap/ieee802_11.c -@@ -1759,12 +1759,13 @@ ieee802_11_set_radius_info(struct hostap - - - static void handle_auth(struct hostapd_data *hapd, -- const struct ieee80211_mgmt *mgmt, size_t len) -+ const struct ieee80211_mgmt *mgmt, size_t len, -+ struct hostapd_frame_info *fi) - { +@@ -2029,7 +2029,7 @@ static void handle_auth(struct hostapd_d u16 auth_alg, auth_transaction, status_code; u16 resp = WLAN_STATUS_SUCCESS; struct sta_info *sta = NULL; @@ -108,19 +84,19 @@ u16 fc; const u8 *challenge = NULL; u32 session_timeout, acct_interim_interval; -@@ -1775,6 +1776,11 @@ static void handle_auth(struct hostapd_d +@@ -2040,6 +2040,11 @@ static void handle_auth(struct hostapd_d char *identity = NULL; char *radius_cui = NULL; u16 seq_ctrl; + struct hostapd_ubus_request req = { + .type = HOSTAPD_UBUS_AUTH_REQ, + .mgmt_frame = mgmt, -+ .frame_info = fi, ++ .ssi_signal = rssi, + }; if (len < IEEE80211_HDRLEN + sizeof(mgmt->u.auth)) { wpa_printf(MSG_INFO, "handle_auth - too short payload (len=%lu)", -@@ -1935,6 +1941,13 @@ static void handle_auth(struct hostapd_d +@@ -2201,6 +2206,13 @@ static void handle_auth(struct hostapd_d resp = WLAN_STATUS_UNSPECIFIED_FAILURE; goto fail; } @@ -134,13 +110,7 @@ if (res == HOSTAPD_ACL_PENDING) return; -@@ -3287,12 +3300,12 @@ void fils_hlp_timeout(void *eloop_ctx, v - - static void handle_assoc(struct hostapd_data *hapd, - const struct ieee80211_mgmt *mgmt, size_t len, -- int reassoc) -+ int reassoc, struct hostapd_frame_info *fi) - { +@@ -3699,7 +3711,7 @@ static void handle_assoc(struct hostapd_ u16 capab_info, listen_interval, seq_ctrl, fc; u16 resp = WLAN_STATUS_SUCCESS, reply_res; const u8 *pos; @@ -149,19 +119,19 @@ struct sta_info *sta; u8 *tmp = NULL; struct hostapd_sta_wpa_psk_short *psk = NULL; -@@ -3301,6 +3314,11 @@ static void handle_assoc(struct hostapd_ +@@ -3708,6 +3720,11 @@ static void handle_assoc(struct hostapd_ #ifdef CONFIG_FILS int delay_assoc = 0; #endif /* CONFIG_FILS */ + struct hostapd_ubus_request req = { + .type = HOSTAPD_UBUS_ASSOC_REQ, + .mgmt_frame = mgmt, -+ .frame_info = fi, ++ .ssi_signal = rssi, + }; if (len < IEEE80211_HDRLEN + (reassoc ? sizeof(mgmt->u.reassoc_req) : sizeof(mgmt->u.assoc_req))) { -@@ -3472,6 +3490,14 @@ static void handle_assoc(struct hostapd_ +@@ -3887,6 +3904,14 @@ static void handle_assoc(struct hostapd_ } #endif /* CONFIG_MBO */ @@ -176,7 +146,7 @@ /* * sta->capability is used in check_assoc_ies() for RRM enabled * capability element. -@@ -3685,6 +3711,7 @@ static void handle_disassoc(struct hosta +@@ -4114,6 +4139,7 @@ static void handle_disassoc(struct hosta wpa_printf(MSG_DEBUG, "disassocation: STA=" MACSTR " reason_code=%d", MAC2STR(mgmt->sa), le_to_host16(mgmt->u.disassoc.reason_code)); @@ -184,7 +154,7 @@ sta = ap_get_sta(hapd, mgmt->sa); if (sta == NULL) { -@@ -3750,6 +3777,8 @@ static void handle_deauth(struct hostapd +@@ -4179,6 +4205,8 @@ static void handle_deauth(struct hostapd " reason_code=%d", MAC2STR(mgmt->sa), le_to_host16(mgmt->u.deauth.reason_code)); @@ -193,69 +163,22 @@ sta = ap_get_sta(hapd, mgmt->sa); if (sta == NULL) { wpa_msg(hapd->msg_ctx, MSG_DEBUG, "Station " MACSTR " trying " -@@ -4089,7 +4118,7 @@ int ieee802_11_mgmt(struct hostapd_data - - - if (stype == WLAN_FC_STYPE_PROBE_REQ) { -- handle_probe_req(hapd, mgmt, len, ssi_signal); -+ handle_probe_req(hapd, mgmt, len, fi); - return 1; - } - -@@ -4109,17 +4138,17 @@ int ieee802_11_mgmt(struct hostapd_data - switch (stype) { - case WLAN_FC_STYPE_AUTH: - wpa_printf(MSG_DEBUG, "mgmt::auth"); -- handle_auth(hapd, mgmt, len); -+ handle_auth(hapd, mgmt, len, fi); - ret = 1; - break; - case WLAN_FC_STYPE_ASSOC_REQ: - wpa_printf(MSG_DEBUG, "mgmt::assoc_req"); -- handle_assoc(hapd, mgmt, len, 0); -+ handle_assoc(hapd, mgmt, len, 0, fi); - ret = 1; - break; - case WLAN_FC_STYPE_REASSOC_REQ: - wpa_printf(MSG_DEBUG, "mgmt::reassoc_req"); -- handle_assoc(hapd, mgmt, len, 1); -+ handle_assoc(hapd, mgmt, len, 1, fi); - ret = 1; - break; - case WLAN_FC_STYPE_DISASSOC: --- a/src/ap/beacon.c +++ b/src/ap/beacon.c -@@ -725,7 +725,7 @@ void sta_track_claim_taxonomy_info(struc - - void handle_probe_req(struct hostapd_data *hapd, - const struct ieee80211_mgmt *mgmt, size_t len, -- int ssi_signal) -+ struct hostapd_frame_info *fi) - { - u8 *resp; - struct ieee802_11_elems elems; -@@ -734,6 +734,7 @@ void handle_probe_req(struct hostapd_dat - size_t i, resp_len; - int noack; - enum ssid_match_result res; -+ int ssi_signal = fi->ssi_signal; - int ret; - u16 csa_offs[2]; - size_t csa_offs_len; -@@ -742,6 +743,12 @@ void handle_probe_req(struct hostapd_dat +@@ -744,6 +744,12 @@ void handle_probe_req(struct hostapd_dat struct hostapd_sta_wpa_psk_short *psk = NULL; char *identity = NULL; char *radius_cui = NULL; + struct hostapd_ubus_request req = { + .type = HOSTAPD_UBUS_PROBE_REQ, + .mgmt_frame = mgmt, -+ .frame_info = fi, ++ .ssi_signal = ssi_signal, + .elems = &elems, + }; if (len < IEEE80211_HDRLEN) return; -@@ -919,6 +926,12 @@ void handle_probe_req(struct hostapd_dat +@@ -921,6 +927,12 @@ void handle_probe_req(struct hostapd_dat } #endif /* CONFIG_P2P */ @@ -268,20 +191,9 @@ /* TODO: verify that supp_rates contains at least one matching rate * with AP configuration */ ---- a/src/ap/beacon.h -+++ b/src/ap/beacon.h -@@ -14,7 +14,7 @@ struct ieee80211_mgmt; - - void handle_probe_req(struct hostapd_data *hapd, - const struct ieee80211_mgmt *mgmt, size_t len, -- int ssi_signal); -+ struct hostapd_frame_info *fi); - int ieee802_11_set_beacon(struct hostapd_data *hapd); - int ieee802_11_set_beacons(struct hostapd_iface *iface); - int ieee802_11_update_beacons(struct hostapd_iface *iface); --- a/src/ap/drv_callbacks.c +++ b/src/ap/drv_callbacks.c -@@ -116,6 +116,10 @@ int hostapd_notif_assoc(struct hostapd_d +@@ -118,6 +118,10 @@ int hostapd_notif_assoc(struct hostapd_d u16 reason = WLAN_REASON_UNSPECIFIED; u16 status = WLAN_STATUS_SUCCESS; const u8 *p2p_dev_addr = NULL; @@ -292,7 +204,7 @@ if (addr == NULL) { /* -@@ -208,6 +212,12 @@ int hostapd_notif_assoc(struct hostapd_d +@@ -210,6 +214,12 @@ int hostapd_notif_assoc(struct hostapd_d goto fail; } @@ -307,7 +219,7 @@ wpabuf_free(sta->p2p_ie); --- a/src/ap/sta_info.c +++ b/src/ap/sta_info.c -@@ -416,6 +416,7 @@ void ap_handle_timer(void *eloop_ctx, vo +@@ -423,6 +423,7 @@ void ap_handle_timer(void *eloop_ctx, vo HOSTAPD_LEVEL_INFO, "deauthenticated due to " "local deauth request"); ap_free_sta(hapd, sta); @@ -315,7 +227,7 @@ return; } -@@ -563,6 +564,7 @@ skip_poll: +@@ -577,6 +578,7 @@ skip_poll: hapd, sta, WLAN_REASON_PREV_AUTH_NOT_VALID); ap_free_sta(hapd, sta); @@ -323,8 +235,8 @@ break; } } -@@ -1224,6 +1226,7 @@ void ap_sta_set_authorized(struct hostap - buf, ip_addr); +@@ -1273,6 +1275,7 @@ void ap_sta_set_authorized(struct hostap + buf, ip_addr, keyid_buf); } else { wpa_msg(hapd->msg_ctx, MSG_INFO, AP_STA_DISCONNECTED "%s", buf); + hostapd_ubus_notify(hapd, "disassoc", sta->addr); @@ -333,7 +245,7 @@ hapd->msg_ctx_parent != hapd->msg_ctx) --- a/src/ap/wpa_auth_glue.c +++ b/src/ap/wpa_auth_glue.c -@@ -177,6 +177,7 @@ static void hostapd_wpa_auth_psk_failure +@@ -181,6 +181,7 @@ static void hostapd_wpa_auth_psk_failure struct hostapd_data *hapd = ctx; wpa_msg(hapd->msg_ctx, MSG_INFO, AP_STA_POSSIBLE_PSK_MISMATCH MACSTR, MAC2STR(addr)); @@ -343,7 +255,7 @@ --- a/wpa_supplicant/Makefile +++ b/wpa_supplicant/Makefile -@@ -189,6 +189,12 @@ ifdef CONFIG_EAPOL_TEST +@@ -188,6 +188,12 @@ ifdef CONFIG_EAPOL_TEST CFLAGS += -Werror -DEAPOL_TEST endif @@ -356,7 +268,7 @@ ifdef CONFIG_CODE_COVERAGE CFLAGS += -O0 -fprofile-arcs -ftest-coverage LIBS += -lgcov -@@ -915,6 +921,9 @@ endif +@@ -923,6 +929,9 @@ endif ifdef CONFIG_IEEE80211AX OBJS += ../src/ap/ieee802_11_he.o endif @@ -368,7 +280,7 @@ CFLAGS += -DCONFIG_WNM_AP --- a/wpa_supplicant/wpa_supplicant.c +++ b/wpa_supplicant/wpa_supplicant.c -@@ -6080,6 +6080,8 @@ struct wpa_supplicant * wpa_supplicant_a +@@ -6288,6 +6288,8 @@ struct wpa_supplicant * wpa_supplicant_a } #endif /* CONFIG_P2P */ @@ -377,7 +289,7 @@ return wpa_s; } -@@ -6106,6 +6108,8 @@ int wpa_supplicant_remove_iface(struct w +@@ -6314,6 +6316,8 @@ int wpa_supplicant_remove_iface(struct w struct wpa_supplicant *parent = wpa_s->parent; #endif /* CONFIG_MESH */ @@ -396,7 +308,7 @@ extern const char *const wpa_supplicant_version; extern const char *const wpa_supplicant_license; -@@ -500,6 +501,7 @@ struct wpa_supplicant { +@@ -506,6 +507,7 @@ struct wpa_supplicant { unsigned char own_addr[ETH_ALEN]; unsigned char perm_addr[ETH_ALEN]; char ifname[100]; |