diff options
Diffstat (limited to 'net/hostapd-devel/files/patch-src_drivers_driver__bsd.c')
-rw-r--r-- | net/hostapd-devel/files/patch-src_drivers_driver__bsd.c | 65 |
1 files changed, 63 insertions, 2 deletions
diff --git a/net/hostapd-devel/files/patch-src_drivers_driver__bsd.c b/net/hostapd-devel/files/patch-src_drivers_driver__bsd.c index f56c30c30ad3..dda055f26664 100644 --- a/net/hostapd-devel/files/patch-src_drivers_driver__bsd.c +++ b/net/hostapd-devel/files/patch-src_drivers_driver__bsd.c @@ -1,5 +1,5 @@ ---- src/drivers/driver_bsd.c.orig 2021-06-02 14:11:18.000000000 -0700 -+++ src/drivers/driver_bsd.c 2021-06-13 23:11:15.089256000 -0700 +--- src/drivers/driver_bsd.c.orig 2022-05-24 13:30:39.000000000 -0700 ++++ src/drivers/driver_bsd.c 2022-06-20 07:18:14.191871000 -0700 @@ -853,14 +853,18 @@ drv = bsd_get_drvindex(global, ifm->ifm_index); if (drv == NULL) @@ -21,3 +21,64 @@ + (drv->flags & IFF_RUNNING) == 0)) { wpa_printf(MSG_DEBUG, "RTM_IFINFO: Interface '%s' UP", drv->ifname); + wpa_supplicant_event(drv->ctx, EVENT_INTERFACE_ENABLED, +@@ -1220,7 +1224,10 @@ + mode = 0 /* STA */; + break; + case IEEE80211_MODE_IBSS: ++#if 0 + mode = IFM_IEEE80211_IBSS; ++#endif ++ mode = IFM_IEEE80211_ADHOC; + break; + case IEEE80211_MODE_AP: + mode = IFM_IEEE80211_HOSTAP; +@@ -1267,6 +1274,13 @@ + params->wpa_ie[0] == WLAN_EID_RSN ? 2 : 1) < 0) + return -1; + ++ /* ++ * NB: interface must be marked UP for association ++ * or scanning (ap_scan=2) ++ */ ++ if (bsd_get_iface_flags(drv) < 0) ++ return -1; ++ + os_memset(&mlme, 0, sizeof(mlme)); + mlme.im_op = IEEE80211_MLME_ASSOC; + if (params->ssid != NULL) +@@ -1485,6 +1499,17 @@ + if (devcaps.dc_drivercaps & IEEE80211_C_WPA2) + drv->capa.key_mgmt = WPA_DRIVER_CAPA_KEY_MGMT_WPA2 | + WPA_DRIVER_CAPA_KEY_MGMT_WPA2_PSK; ++#ifdef __FreeBSD__ ++ drv->capa.enc |= WPA_DRIVER_CAPA_ENC_WEP40 | ++ WPA_DRIVER_CAPA_ENC_WEP104 | ++ WPA_DRIVER_CAPA_ENC_TKIP | ++ WPA_DRIVER_CAPA_ENC_CCMP; ++#else ++ /* ++ * XXX ++ * FreeBSD exports hardware cryptocaps. These have no meaning for wpa ++ * since net80211 performs software crypto. ++ */ + + if (devcaps.dc_cryptocaps & IEEE80211_CRYPTO_WEP) + drv->capa.enc |= WPA_DRIVER_CAPA_ENC_WEP40 | +@@ -1493,6 +1518,7 @@ + drv->capa.enc |= WPA_DRIVER_CAPA_ENC_TKIP; + if (devcaps.dc_cryptocaps & IEEE80211_CRYPTO_AES_CCM) + drv->capa.enc |= WPA_DRIVER_CAPA_ENC_CCMP; ++#endif + + if (devcaps.dc_drivercaps & IEEE80211_C_HOSTAP) + drv->capa.flags |= WPA_DRIVER_FLAGS_AP; +@@ -1545,6 +1571,8 @@ + } + if (ifmr.ifm_current & IFM_IEEE80211_HOSTAP) + return IEEE80211_M_HOSTAP; ++ if (ifmr.ifm_current & IFM_IEEE80211_IBSS) ++ return IEEE80211_M_IBSS; + if (ifmr.ifm_current & IFM_IEEE80211_MONITOR) + return IEEE80211_M_MONITOR; + #ifdef IEEE80211_M_MBSS |