git: d2399d0b089b - main - net/hostapd-devel: Sync driver_bsd.c with base system
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Fri, 13 Sep 2024 23:06:24 UTC
The branch main has been updated by cy: URL: https://cgit.FreeBSD.org/ports/commit/?id=d2399d0b089b9524d2a39f0680fe20e482497796 commit d2399d0b089b9524d2a39f0680fe20e482497796 Author: Cy Schubert <cy@FreeBSD.org> AuthorDate: 2024-09-13 23:05:28 +0000 Commit: Cy Schubert <cy@FreeBSD.org> CommitDate: 2024-09-13 23:05:28 +0000 net/hostapd-devel: Sync driver_bsd.c with base system Replace driver_bsd.c with the one from src. It utilizes facilities and features already in FreeBSD. --- net/hostapd-devel/Makefile | 1 + .../files/patch-src_drivers_driver__bsd.c | 83 ++++++++-------------- 2 files changed, 30 insertions(+), 54 deletions(-) diff --git a/net/hostapd-devel/Makefile b/net/hostapd-devel/Makefile index e0e0b89fc968..a84831f9c0f6 100644 --- a/net/hostapd-devel/Makefile +++ b/net/hostapd-devel/Makefile @@ -1,5 +1,6 @@ PORTNAME= hostapd PORTVERSION= ${COMMIT_DATE} +PORTREVISION= 1 CATEGORIES= net PKGNAMESUFFIX= -devel 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 af68d8957755..eab6a22e82f3 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 2023-09-05 10:38:47.000000000 -0700 -+++ src/drivers/driver_bsd.c 2023-09-10 23:12:00.594370000 -0700 +--- src/drivers/driver_bsd.c.orig 2024-09-01 06:39:57.000000000 -0700 ++++ src/drivers/driver_bsd.c 2024-09-13 15:40:52.262309000 -0700 @@ -14,6 +14,7 @@ #include "driver.h" #include "eloop.h" @@ -19,10 +19,14 @@ struct ifreq ifr; os_memset(&ifr, 0, sizeof(ifr)); -@@ -306,7 +308,34 @@ - return -1; - } - drv->flags = ifr.ifr_flags; +@@ -302,10 +304,37 @@ + + if (ioctl(drv->global->sock, SIOCGIFFLAGS, &ifr) < 0) { + wpa_printf(MSG_ERROR, "ioctl[SIOCGIFFLAGS]: %s", ++ strerror(errno)); ++ return -1; ++ } ++ drv->flags = ifr.ifr_flags; + + + if (enable) { @@ -37,23 +41,22 @@ + + if (ioctl(drv->global->sock, SIOCSIFFLAGS, &ifr) < 0) { + wpa_printf(MSG_ERROR, "ioctl[SIOCSIFFLAGS]: %s", -+ strerror(errno)); -+ return -1; -+ } + strerror(errno)); + return -1; + } + + wpa_printf(MSG_DEBUG, "%s: if %s (changed) enable %d IFF_UP %d ", + __func__, drv->ifname, enable, ((ifr.ifr_flags & IFF_UP) != 0)); + -+ drv->flags = ifr.ifr_flags; - return 0; + drv->flags = ifr.ifr_flags; ++ return 0; + +nochange: + wpa_printf(MSG_DEBUG, "%s: if %s (no change) enable %d IFF_UP %d ", + __func__, drv->ifname, enable, ((ifr.ifr_flags & IFF_UP) != 0)); -+ return 0; + return 0; } - static int @@ -525,7 +554,7 @@ __func__); return -1; @@ -164,7 +167,7 @@ break; case IEEE80211_MODE_AP: mode = IFM_IEEE80211_HOSTAP; -@@ -1251,24 +1317,33 @@ +@@ -1251,22 +1317,31 @@ ret = -1; if (wpa_driver_bsd_set_auth_alg(drv, params->auth_alg) < 0) ret = -1; @@ -177,6 +180,9 @@ - params->key_mgmt_suite == WPA_KEY_MGMT_NONE && - params->wpa_ie_len == 0); - wpa_printf(MSG_DEBUG, "%s: set PRIVACY %u", __func__, privacy); +- +- if (set80211param(drv, IEEE80211_IOC_PRIVACY, privacy) < 0) +- return -1; + if (params->wpa_ie_len) { + rsn_ie = get_ie(params->wpa_ie, params->wpa_ie_len, + WLAN_EID_RSN); @@ -196,7 +202,9 @@ + } + } -- if (set80211param(drv, IEEE80211_IOC_PRIVACY, privacy) < 0) +- if (params->wpa_ie_len && +- set80211param(drv, IEEE80211_IOC_WPA, +- params->wpa_ie[0] == WLAN_EID_RSN ? 2 : 1) < 0) + /* + * NB: interface must be marked UP for association + * or scanning (ap_scan=2) @@ -204,14 +212,7 @@ + if (bsd_ctrl_iface(drv, 1) < 0) return -1; -- if (params->wpa_ie_len && -- set80211param(drv, IEEE80211_IOC_WPA, -- params->wpa_ie[0] == WLAN_EID_RSN ? 2 : 1) < 0) -- return -1; -- os_memset(&mlme, 0, sizeof(mlme)); - mlme.im_op = IEEE80211_MLME_ASSOC; - if (params->ssid != NULL) @@ -1311,11 +1386,8 @@ } @@ -225,33 +226,7 @@ #ifdef IEEE80211_IOC_SCAN_MAX_SSID os_memset(&sr, 0, sizeof(sr)); -@@ -1487,6 +1559,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 | -@@ -1495,6 +1578,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; -@@ -1547,6 +1631,8 @@ +@@ -1547,6 +1619,8 @@ } if (ifmr.ifm_current & IFM_IEEE80211_HOSTAP) return IEEE80211_M_HOSTAP; @@ -260,7 +235,7 @@ if (ifmr.ifm_current & IFM_IEEE80211_MONITOR) return IEEE80211_M_MONITOR; #ifdef IEEE80211_M_MBSS -@@ -1607,7 +1693,7 @@ +@@ -1607,7 +1681,7 @@ drv->capa.key_mgmt_iftype[i] = drv->capa.key_mgmt; /* Down interface during setup. */ @@ -269,13 +244,13 @@ goto fail; /* Proven to work, lets go! */ -@@ -1630,6 +1716,9 @@ - +@@ -1631,6 +1705,9 @@ if (drv->ifindex != 0 && !drv->if_removed) { wpa_driver_bsd_set_wpa(drv, 0); -+ + + /* NB: mark interface down */ + bsd_ctrl_iface(drv, 0); - ++ wpa_driver_bsd_set_wpa_internal(drv, drv->prev_wpa, drv->prev_privacy); +