X-Git-Url: https://git.rohieb.name/openwrt.git/blobdiff_plain/225812219e043068663d61b472d57714fa541a0c..b8d5619ca8ac95b4a0365a7adcce4b0d9c7305ce:/package/hostapd/patches/453-ap_sta_support.patch diff --git a/package/hostapd/patches/453-ap_sta_support.patch b/package/hostapd/patches/453-ap_sta_support.patch index 02b09bf54..a02a38738 100644 --- a/package/hostapd/patches/453-ap_sta_support.patch +++ b/package/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 -@@ -98,6 +98,8 @@ struct wpa_interface { +@@ -95,6 +95,8 @@ struct wpa_interface { * receiving of EAPOL frames from an additional interface. */ const char *bridge_ifname; @@ -9,7 +9,7 @@ }; /** -@@ -316,6 +318,8 @@ struct wpa_supplicant { +@@ -263,6 +265,8 @@ struct wpa_supplicant { #endif /* CONFIG_CTRL_IFACE_DBUS_NEW */ char bridge_ifname[16]; @@ -20,21 +20,31 @@ int countermeasures; --- a/wpa_supplicant/Makefile +++ b/wpa_supplicant/Makefile -@@ -51,6 +51,11 @@ OBJS_p += ../src/utils/wpa_debug.o - OBJS_p += ../src/utils/wpabuf.o - OBJS_c = wpa_cli.o ../src/common/wpa_ctrl.o +@@ -13,6 +13,10 @@ PKG_CONFIG ?= pkg-config + CFLAGS += -I../src + CFLAGS += -I../src/utils +ifdef MULTICALL -+OBJS += ../src/common/wpa_ctrl.o +CFLAGS += -DMULTICALL +endif + -include .config -include $(if $(MULTICALL),../hostapd/.config) +@@ -71,6 +75,10 @@ OBJS_c = wpa_cli.o ../src/common/wpa_ctr + OBJS_c += ../src/utils/wpa_debug.o + OBJS_c += ../src/utils/common.o + ++ifdef MULTICALL ++OBJS += ../src/common/wpa_ctrl.o ++endif ++ + ifndef CONFIG_OS + ifdef CONFIG_NATIVE_WINDOWS + CONFIG_OS=win32 --- a/wpa_supplicant/wpa_supplicant.c +++ b/wpa_supplicant/wpa_supplicant.c -@@ -120,6 +120,58 @@ extern int wpa_debug_show_keys; +@@ -103,6 +103,55 @@ extern int wpa_debug_show_keys; extern int wpa_debug_timestamp; extern struct wpa_driver_ops *wpa_drivers[]; @@ -71,14 +81,11 @@ + channel = (bss->freq - 5000) / 5; + } + -+ if (asprintf(&cmd, "RELOAD channel=%d sec_chan=0 hw_mode=%d ht_capab_mask=%d ieee80211n=%d", -+ channel, hw_mode, bss->ht_capab, !!bss->ht_capab) < 0) { -+ fprintf(stderr, "ASPRINTF FAILED\n"); -+ exit(1); ++ if (asprintf(&cmd, "RELOAD channel=%d sec_chan=0 hw_mode=%d ieee80211n=%d", ++ channel, hw_mode, !!bss->ht_capab) < 0) { + return -1; + } + -+ wpa_printf(MSG_ERROR, "\n\n-------- RUN COMMAND: %s\n\n", cmd); + ret = wpa_ctrl_request(wpa_s->hostapd, cmd, os_strlen(cmd), buf, &len, NULL); + free(cmd); + @@ -93,18 +100,24 @@ /* Configure default/group WEP keys for static WEP */ int wpa_set_wep_keys(struct wpa_supplicant *wpa_s, struct wpa_ssid *ssid) { -@@ -548,6 +600,10 @@ void wpa_supplicant_set_state(struct wpa - #ifndef IEEE8021X_EAPOL - wpa_drv_set_supp_port(wpa_s, 1); - #endif +@@ -607,8 +656,16 @@ void wpa_supplicant_set_state(struct wpa + #ifdef CONFIG_P2P + wpas_p2p_completed(wpa_s); + #endif /* CONFIG_P2P */ +#ifdef MULTICALL + if (wpa_s->hostapd) + hostapd_reload(wpa_s, wpa_s->current_bss); +#endif } else if (state == WPA_DISCONNECTED || state == WPA_ASSOCIATING || state == WPA_ASSOCIATED) { ++#ifdef MULTICALL ++ if (wpa_s->hostapd) ++ hostapd_stop(wpa_s); ++#endif wpa_s->new_connection = 1; -@@ -1957,6 +2013,21 @@ static int wpa_supplicant_init_iface(str + wpa_drv_set_operstate(wpa_s, 0); + #ifndef IEEE8021X_EAPOL +@@ -2498,6 +2555,21 @@ static int wpa_supplicant_init_iface(str os_strlcpy(wpa_s->bridge_ifname, iface->bridge_ifname, sizeof(wpa_s->bridge_ifname)); } @@ -128,7 +141,7 @@ eapol_sm_notify_portEnabled(wpa_s->eapol, FALSE); --- a/wpa_supplicant/bss.c +++ b/wpa_supplicant/bss.c -@@ -17,6 +17,7 @@ +@@ -11,6 +11,7 @@ #include "utils/common.h" #include "utils/eloop.h" #include "common/ieee802_11_defs.h" @@ -136,7 +149,7 @@ #include "drivers/driver.h" #include "wpa_supplicant_i.h" #include "config.h" -@@ -89,6 +90,8 @@ struct wpa_bss * wpa_bss_get(struct wpa_ +@@ -75,6 +76,8 @@ struct wpa_bss * wpa_bss_get(struct wpa_ static void wpa_bss_copy_res(struct wpa_bss *dst, struct wpa_scan_res *src) { @@ -145,7 +158,7 @@ os_time_t usec; dst->flags = src->flags; -@@ -101,6 +104,12 @@ static void wpa_bss_copy_res(struct wpa_ +@@ -87,6 +90,12 @@ static void wpa_bss_copy_res(struct wpa_ dst->level = src->level; dst->tsf = src->tsf; @@ -160,7 +173,7 @@ usec = (src->age % 1000) * 1000; --- a/wpa_supplicant/bss.h +++ b/wpa_supplicant/bss.h -@@ -56,6 +56,7 @@ struct wpa_bss { +@@ -51,6 +51,7 @@ struct wpa_bss { unsigned int flags; u8 bssid[ETH_ALEN]; u8 ssid[32]; @@ -170,33 +183,33 @@ u16 beacon_int; --- a/wpa_supplicant/main.c +++ b/wpa_supplicant/main.c -@@ -31,7 +31,7 @@ static void usage(void) +@@ -25,7 +25,7 @@ static void usage(void) "usage:\n" " wpa_supplicant [-BddhKLqqstuvW] [-P] " "[-g] \\\n" - " -i -c [-C] [-D] " + " -i -c [-C] [-D] [-H]" "[-p] \\\n" - " [-b] [-f] \\\n" - " [-o] [-O] \\\n" -@@ -67,6 +67,7 @@ static void usage(void) + " [-b] [-f] [-e] " + "\\\n" +@@ -63,6 +63,7 @@ static void usage(void) #endif /* CONFIG_DEBUG_SYSLOG */ printf(" -t = include timestamp in debug messages\n" " -h = show this help text\n" + " -H = connect to a hostapd instance to manage state changes\n" - " -L = show license (GPL and BSD)\n" + " -L = show license (BSD)\n" " -o = override driver parameter for new interfaces\n" " -O = override ctrl_interface parameter for new interfaces\n" -@@ -143,7 +144,7 @@ int main(int argc, char *argv[]) +@@ -139,7 +140,7 @@ int main(int argc, char *argv[]) wpa_supplicant_fd_workaround(); for (;;) { -- c = getopt(argc, argv, "b:Bc:C:D:df:g:hi:KLNo:O:p:P:qstuvW"); -+ c = getopt(argc, argv, "b:Bc:C:D:df:g:hH:i:KLNo:O:p:P:qstuvW"); +- c = getopt(argc, argv, "b:Bc:C:D:de:f:g:hi:KLNo:O:p:P:qstuvW"); ++ c = getopt(argc, argv, "b:Bc:C:D:de:f:g:hH:i:KLNo:O:p:P:qstuvW"); if (c < 0) break; switch (c) { -@@ -184,6 +185,9 @@ int main(int argc, char *argv[]) +@@ -183,6 +184,9 @@ int main(int argc, char *argv[]) usage(); exitcode = 0; goto out;