diff options
author | Melanie Scheirer | 2022-09-04 13:46:22 -0400 |
---|---|---|
committer | Melanie Scheirer | 2022-09-04 13:46:22 -0400 |
commit | ef3c28d327eb32bb88df80a3c0af86e3716fd45e (patch) | |
tree | 354befea598b4ab8a471595621f596c91a8dce22 | |
download | aur-hostapd-git-intel-lar.tar.gz |
Initial
-rw-r--r-- | .SRCINFO | 24 | ||||
-rw-r--r-- | PKGBUILD | 76 | ||||
-rw-r--r-- | config | 425 | ||||
-rw-r--r-- | hostapd-2.10-lar.patch | 139 | ||||
-rw-r--r-- | hostapd.service | 10 |
5 files changed, 674 insertions, 0 deletions
diff --git a/.SRCINFO b/.SRCINFO new file mode 100644 index 000000000000..ee3eb4cf82e2 --- /dev/null +++ b/.SRCINFO @@ -0,0 +1,24 @@ +pkgbase = hostapd-git-intel-lar + pkgdesc = hostapd with prescan LAR workaround for Intel NICs + pkgver = 20220902.6f8af5974 + pkgrel = 1 + url = http://w1.fi/hostapd/ + arch = x86_64 + license = BSD + makedepends = git + depends = libnl + depends = openssl + depends = sqlite + provides = hostapd + conflicts = hostapd + options = emptydirs + source = git://w1.fi/hostap.git + source = config + source = hostapd.service + source = https://tildearrow.org/storage/hostapd-2.10-lar.patch + sha256sums = SKIP + sha256sums = 7b2bb1628c44ea41445fcde0e6e45484ab94280bef57cf36f7ea022186cf3a73 + sha256sums = 989bc6855f44c0b360e3d4cd4a146c35b7c12f8a0ced627b4b033f58edcade8e + sha256sums = 561d03e730af458017e68d59a4caa834fcf310f9b16ac543e92063290f586b8d + +pkgname = hostapd-git-intel-lar diff --git a/PKGBUILD b/PKGBUILD new file mode 100644 index 000000000000..396a31941785 --- /dev/null +++ b/PKGBUILD @@ -0,0 +1,76 @@ +# Maintainer: Melanie Scheirer <mel@nie.rs> +# Contributor: Sergej Pupykin <pupykin.s+arch@gmail.com> +# Contribuor: Gaetan Bisson <bisson@archlinux.org> + +pkgname=hostapd-git-intel-lar +_gitname=${pkgname/d-git-intel-lar} +_name=${pkgname/-git-intel-lar} +pkgver=20220902.6f8af5974 +pkgrel=1 +pkgdesc='hostapd with prescan LAR workaround for Intel NICs' +url='http://w1.fi/hostapd/' +arch=(x86_64) +license=(BSD) +makedepends=(git) +depends=(libnl openssl sqlite) +source=('git://w1.fi/hostap.git' + config + hostapd.service + 'https://tildearrow.org/storage/hostapd-2.10-lar.patch') +sha256sums=('SKIP' + '7b2bb1628c44ea41445fcde0e6e45484ab94280bef57cf36f7ea022186cf3a73' + '989bc6855f44c0b360e3d4cd4a146c35b7c12f8a0ced627b4b033f58edcade8e' + '561d03e730af458017e68d59a4caa834fcf310f9b16ac543e92063290f586b8d') +options=('emptydirs') +conflicts=('hostapd') +provides=('hostapd') + +pkgver() { + cd "$_gitname" + git log -1 --format='%cd.%h' --date=short | tr -d - +} + +prepare() { + cd "$_gitname" + # fix include locations in main configuration file + sed -e 's|/etc/hostapd|/etc/hostapd/hostapd|g' \ + -e 's|/var/run|/run|g' \ + -e 's|radius_attr.sqlite|/var/lib/hostapd/radius_attr.sqlite|g' \ + -e 's|hostapd.cred|/var/lib/hostapd/hostapd.cred|g' \ + -e 's|hostapd.ap_settings|/var/lib/hostapd/hostapd.ap_settings|g' \ + -e 's|hostapd_wps_pin_requests|hostapd/wps_pin_requests|g' \ + -i "$_name/$_name.conf" + + # extract license + cat "${pkgname}/README" | head -n47 | tail -n5 > LICENSE + + # link build configuration into place: + # an up-to-date version of the build configuration can be found in + # hostapd/defconfig and should be diffed with the packaged one before every + # build + ln -svf "$srcdir/config" "$_name/.config" + + patch -p1 < "$srcdir/hostapd-2.10-lar.patch" +} + +build() { + make -C "$_gitname/$_name" +} + +package() { + cd "$_gitname" + make -C "$_name" install DESTDIR="$pkgdir" BINDIR="/usr/bin" + # systemd service + install -vDm 644 "../$_name.service" -t "$pkgdir/usr/lib/systemd/system/" + # license + install -vDm 644 LICENSE -t "$pkgdir/usr/share/licenses/$_name/" + # config + install -vDm 640 "$_name/$_name."{accept,conf,deny,eap_user,radius_clients,vlan,wpa_psk} -t "$pkgdir/etc/$_name" + # docs + install -vDm 644 "$_name/"{hostapd.sim_db,wired.conf,hlr_auc_gw.{txt,milenage_db}} "$_name/"{README*,ChangeLog} -t "$pkgdir/usr/share/doc/$_name" + # man pages + install -vDm 644 "$_name/$_name.8" -t "$pkgdir/usr/share/man/man8/" + install -vDm 644 "$_name/${_name}_cli.1" -t "$pkgdir/usr/share/man/man1/" + # state dir + install -vdm 750 "$pkgdir/var/lib/$_name" +} diff --git a/config b/config new file mode 100644 index 000000000000..ba9ab72bccf2 --- /dev/null +++ b/config @@ -0,0 +1,425 @@ +# Example hostapd build time configuration +# +# This file lists the configuration options that are used when building the +# hostapd binary. All lines starting with # are ignored. Configuration option +# lines must be commented out complete, if they are not to be included, i.e., +# just setting VARIABLE=n is not disabling that variable. +# +# This file is included in Makefile, so variables like CFLAGS and LIBS can also +# be modified from here. In most cass, these lines should use += in order not +# to override previous values of the variables. + +# Driver interface for Host AP driver +CONFIG_DRIVER_HOSTAP=y + +# Driver interface for wired authenticator +CONFIG_DRIVER_WIRED=y + +# Driver interface for drivers using the nl80211 kernel interface +CONFIG_DRIVER_NL80211=y + +# QCA vendor extensions to nl80211 +#CONFIG_DRIVER_NL80211_QCA=y + +# driver_nl80211.c requires libnl. If you are compiling it yourself +# you may need to point hostapd to your version of libnl. +# +#CFLAGS += -I$<path to libnl include files> +#LIBS += -L$<path to libnl library files> + +# Use libnl v2.0 (or 3.0) libraries. +#CONFIG_LIBNL20=y + +# Use libnl 3.2 libraries (if this is selected, CONFIG_LIBNL20 is ignored) +CONFIG_LIBNL32=y + + +# Driver interface for FreeBSD net80211 layer (e.g., Atheros driver) +#CONFIG_DRIVER_BSD=y +#CFLAGS += -I/usr/local/include +#LIBS += -L/usr/local/lib +#LIBS_p += -L/usr/local/lib +#LIBS_c += -L/usr/local/lib + +# Driver interface for no driver (e.g., RADIUS server only) +#CONFIG_DRIVER_NONE=y + +# WPA2/IEEE 802.11i RSN pre-authentication +CONFIG_RSN_PREAUTH=y + +# Support Operating Channel Validation +#CONFIG_OCV=y + +# Integrated EAP server +CONFIG_EAP=y + +# EAP Re-authentication Protocol (ERP) in integrated EAP server +CONFIG_ERP=y + +# EAP-MD5 for the integrated EAP server +CONFIG_EAP_MD5=y + +# EAP-TLS for the integrated EAP server +CONFIG_EAP_TLS=y + +# EAP-MSCHAPv2 for the integrated EAP server +CONFIG_EAP_MSCHAPV2=y + +# EAP-PEAP for the integrated EAP server +CONFIG_EAP_PEAP=y + +# EAP-GTC for the integrated EAP server +CONFIG_EAP_GTC=y + +# EAP-TTLS for the integrated EAP server +CONFIG_EAP_TTLS=y + +# EAP-SIM for the integrated EAP server +CONFIG_EAP_SIM=y + +# EAP-AKA for the integrated EAP server +CONFIG_EAP_AKA=y + +# EAP-AKA' for the integrated EAP server +# This requires CONFIG_EAP_AKA to be enabled, too. +#CONFIG_EAP_AKA_PRIME=y + +# EAP-PAX for the integrated EAP server +CONFIG_EAP_PAX=y + +# EAP-PSK for the integrated EAP server (this is _not_ needed for WPA-PSK) +CONFIG_EAP_PSK=y + +# EAP-pwd for the integrated EAP server (secure authentication with a password) +#CONFIG_EAP_PWD=y + +# EAP-SAKE for the integrated EAP server +CONFIG_EAP_SAKE=y + +# EAP-GPSK for the integrated EAP server +CONFIG_EAP_GPSK=y +# Include support for optional SHA256 cipher suite in EAP-GPSK +CONFIG_EAP_GPSK_SHA256=y + +# EAP-FAST for the integrated EAP server +#CONFIG_EAP_FAST=y + +# EAP-TEAP for the integrated EAP server +# Note: The current EAP-TEAP implementation is experimental and should not be +# enabled for production use. The IETF RFC 7170 that defines EAP-TEAP has number +# of conflicting statements and missing details and the implementation has +# vendor specific workarounds for those and as such, may not interoperate with +# any other implementation. This should not be used for anything else than +# experimentation and interoperability testing until those issues has been +# resolved. +#CONFIG_EAP_TEAP=y + +# Wi-Fi Protected Setup (WPS) +#CONFIG_WPS=y +# Enable UPnP support for external WPS Registrars +#CONFIG_WPS_UPNP=y +# Enable WPS support with NFC config method +#CONFIG_WPS_NFC=y + +# EAP-IKEv2 +#CONFIG_EAP_IKEV2=y + +# Trusted Network Connect (EAP-TNC) +#CONFIG_EAP_TNC=y + +# EAP-EKE for the integrated EAP server +#CONFIG_EAP_EKE=y + +# PKCS#12 (PFX) support (used to read private key and certificate file from +# a file that usually has extension .p12 or .pfx) +CONFIG_PKCS12=y + +# RADIUS authentication server. This provides access to the integrated EAP +# server from external hosts using RADIUS. +CONFIG_RADIUS_SERVER=y + +# Build IPv6 support for RADIUS operations +CONFIG_IPV6=y + +# IEEE Std 802.11r-2008 (Fast BSS Transition) +CONFIG_IEEE80211R=y + +# Use the hostapd's IEEE 802.11 authentication (ACL), but without +# the IEEE 802.11 Management capability (e.g., FreeBSD/net80211) +CONFIG_DRIVER_RADIUS_ACL=y + +# Wireless Network Management (IEEE Std 802.11v-2011) +# Note: This is experimental and not complete implementation. +CONFIG_WNM=y + +# IEEE 802.11ac (Very High Throughput) support +CONFIG_IEEE80211AC=y + +# IEEE 802.11ax HE support +CONFIG_IEEE80211AX=y + +# IEEE 802.11be EHT support +# CONFIG_IEEE80211AX is mandatory for setting CONFIG_IEEE80211BE. +# Note: This is experimental and work in progress. The definitions are still +# subject to change and this should not be expected to interoperate with the +# final IEEE 802.11be version. +#CONFIG_IEEE80211BE=y + +# Simultaneous Authentication of Equals (SAE), WPA3-Personal +CONFIG_SAE=y + +# SAE Public Key, WPA3-Personal +#CONFIG_SAE_PK=y + +# Remove debugging code that is printing out debug messages to stdout. +# This can be used to reduce the size of the hostapd considerably if debugging +# code is not needed. +#CONFIG_NO_STDOUT_DEBUG=y + +# Add support for writing debug log to a file: -f /tmp/hostapd.log +# Disabled by default. +#CONFIG_DEBUG_FILE=y + +# Send debug messages to syslog instead of stdout +#CONFIG_DEBUG_SYSLOG=y + +# Add support for sending all debug messages (regardless of debug verbosity) +# to the Linux kernel tracing facility. This helps debug the entire stack by +# making it easy to record everything happening from the driver up into the +# same file, e.g., using trace-cmd. +CONFIG_DEBUG_LINUX_TRACING=y + +# Remove support for RADIUS accounting +#CONFIG_NO_ACCOUNTING=y + +# Remove support for RADIUS +#CONFIG_NO_RADIUS=y + +# Remove support for VLANs +#CONFIG_NO_VLAN=y + +# Enable support for fully dynamic VLANs. This enables hostapd to +# automatically create bridge and VLAN interfaces if necessary. +#CONFIG_FULL_DYNAMIC_VLAN=y + +# Use netlink-based kernel API for VLAN operations instead of ioctl() +# Note: This requires libnl 3.1 or newer. +#CONFIG_VLAN_NETLINK=y + +# Remove support for dumping internal state through control interface commands +# This can be used to reduce binary size at the cost of disabling a debugging +# option. +#CONFIG_NO_DUMP_STATE=y + +# Enable tracing code for developer debugging +# This tracks use of memory allocations and other registrations and reports +# incorrect use with a backtrace of call (or allocation) location. +#CONFIG_WPA_TRACE=y +# For BSD, comment out these. +#LIBS += -lexecinfo +#LIBS_p += -lexecinfo +#LIBS_c += -lexecinfo + +# Use libbfd to get more details for developer debugging +# This enables use of libbfd to get more detailed symbols for the backtraces +# generated by CONFIG_WPA_TRACE=y. +#CONFIG_WPA_TRACE_BFD=y +# For BSD, comment out these. +#LIBS += -lbfd -liberty -lz +#LIBS_p += -lbfd -liberty -lz +#LIBS_c += -lbfd -liberty -lz + +# hostapd depends on strong random number generation being available from the +# operating system. os_get_random() function is used to fetch random data when +# needed, e.g., for key generation. On Linux and BSD systems, this works by +# reading /dev/urandom. It should be noted that the OS entropy pool needs to be +# properly initialized before hostapd is started. This is important especially +# on embedded devices that do not have a hardware random number generator and +# may by default start up with minimal entropy available for random number +# generation. +# +# As a safety net, hostapd is by default trying to internally collect +# additional entropy for generating random data to mix in with the data +# fetched from the OS. This by itself is not considered to be very strong, but +# it may help in cases where the system pool is not initialized properly. +# However, it is very strongly recommended that the system pool is initialized +# with enough entropy either by using hardware assisted random number +# generator or by storing state over device reboots. +# +# hostapd can be configured to maintain its own entropy store over restarts to +# enhance random number generation. This is not perfect, but it is much more +# secure than using the same sequence of random numbers after every reboot. +# This can be enabled with -e<entropy file> command line option. The specified +# file needs to be readable and writable by hostapd. +# +# If the os_get_random() is known to provide strong random data (e.g., on +# Linux/BSD, the board in question is known to have reliable source of random +# data from /dev/urandom), the internal hostapd random pool can be disabled. +# This will save some in binary size and CPU use. However, this should only be +# considered for builds that are known to be used on devices that meet the +# requirements described above. +#CONFIG_NO_RANDOM_POOL=y + +# Should we attempt to use the getrandom(2) call that provides more reliable +# yet secure randomness source than /dev/random on Linux 3.17 and newer. +# Requires glibc 2.25 to build, falls back to /dev/random if unavailable. +#CONFIG_GETRANDOM=y + +# Should we use poll instead of select? Select is used by default. +#CONFIG_ELOOP_POLL=y + +# Should we use epoll instead of select? Select is used by default. +#CONFIG_ELOOP_EPOLL=y + +# Should we use kqueue instead of select? Select is used by default. +#CONFIG_ELOOP_KQUEUE=y + +# Select TLS implementation +# openssl = OpenSSL (default) +# gnutls = GnuTLS +# internal = Internal TLSv1 implementation (experimental) +# linux = Linux kernel AF_ALG and internal TLSv1 implementation (experimental) +# none = Empty template +#CONFIG_TLS=openssl + +# TLS-based EAP methods require at least TLS v1.0. Newer version of TLS (v1.1) +# can be enabled to get a stronger construction of messages when block ciphers +# are used. +#CONFIG_TLSV11=y + +# TLS-based EAP methods require at least TLS v1.0. Newer version of TLS (v1.2) +# can be enabled to enable use of stronger crypto algorithms. +#CONFIG_TLSV12=y + +# Select which ciphers to use by default with OpenSSL if the user does not +# specify them. +#CONFIG_TLS_DEFAULT_CIPHERS="DEFAULT:!EXP:!LOW" + +# If CONFIG_TLS=internal is used, additional library and include paths are +# needed for LibTomMath. Alternatively, an integrated, minimal version of +# LibTomMath can be used. See beginning of libtommath.c for details on benefits +# and drawbacks of this option. +#CONFIG_INTERNAL_LIBTOMMATH=y +#ifndef CONFIG_INTERNAL_LIBTOMMATH +#LTM_PATH=/usr/src/libtommath-0.39 +#CFLAGS += -I$(LTM_PATH) +#LIBS += -L$(LTM_PATH) +#LIBS_p += -L$(LTM_PATH) +#endif +# At the cost of about 4 kB of additional binary size, the internal LibTomMath +# can be configured to include faster routines for exptmod, sqr, and div to +# speed up DH and RSA calculation considerably +#CONFIG_INTERNAL_LIBTOMMATH_FAST=y + +# Interworking (IEEE 802.11u) +# This can be used to enable functionality to improve interworking with +# external networks. +#CONFIG_INTERWORKING=y + +# Hotspot 2.0 +#CONFIG_HS20=y + +# Enable SQLite database support in hlr_auc_gw, EAP-SIM DB, and eap_user_file +CONFIG_SQLITE=y + +# Enable Fast Session Transfer (FST) +#CONFIG_FST=y + +# Enable CLI commands for FST testing +#CONFIG_FST_TEST=y + +# Testing options +# This can be used to enable some testing options (see also the example +# configuration file) that are really useful only for testing clients that +# connect to this hostapd. These options allow, for example, to drop a +# certain percentage of probe requests or auth/(re)assoc frames. +# +#CONFIG_TESTING_OPTIONS=y + +# Automatic Channel Selection +# This will allow hostapd to pick the channel automatically when channel is set +# to "acs_survey" or "0". Eventually, other ACS algorithms can be added in +# similar way. +# +# Automatic selection is currently only done through initialization, later on +# we hope to do background checks to keep us moving to more ideal channels as +# time goes by. ACS is currently only supported through the nl80211 driver and +# your driver must have survey dump capability that is filled by the driver +# during scanning. +# +# You can customize the ACS survey algorithm with the hostapd.conf variable +# acs_num_scans. +# +# Supported ACS drivers: +# * ath9k +# * ath5k +# * ath10k +# +# For more details refer to: +# https://wireless.wiki.kernel.org/en/users/documentation/acs +# +#CONFIG_ACS=y + +# Multiband Operation support +# These extensions facilitate efficient use of multiple frequency bands +# available to the AP and the devices that may associate with it. +#CONFIG_MBO=y + +# Client Taxonomy +# Has the AP retain the Probe Request and (Re)Association Request frames from +# a client, from which a signature can be produced which can identify the model +# of client device like "Nexus 6P" or "iPhone 5s". +#CONFIG_TAXONOMY=y + +# Fast Initial Link Setup (FILS) (IEEE 802.11ai) +#CONFIG_FILS=y +# FILS shared key authentication with PFS +#CONFIG_FILS_SK_PFS=y + +# Include internal line edit mode in hostapd_cli. This can be used to provide +# limited command line editing and history support. +#CONFIG_WPA_CLI_EDIT=y + +# Opportunistic Wireless Encryption (OWE) +# Experimental implementation of draft-harkins-owe-07.txt +#CONFIG_OWE=y + +# Airtime policy support +#CONFIG_AIRTIME_POLICY=y + +# Override default value for the wpa_disable_eapol_key_retries configuration +# parameter. See that parameter in hostapd.conf for more details. +#CFLAGS += -DDEFAULT_WPA_DISABLE_EAPOL_KEY_RETRIES=1 + +# Wired equivalent privacy (WEP) +# WEP is an obsolete cryptographic data confidentiality algorithm that is not +# considered secure. It should not be used for anything anymore. The +# functionality needed to use WEP is available in the current hostapd +# release under this optional build parameter. This functionality is subject to +# be completely removed in a future release. +#CONFIG_WEP=y + +# Remove all TKIP functionality +# TKIP is an old cryptographic data confidentiality algorithm that is not +# considered secure. It should not be used anymore. For now, the default hostapd +# build includes this to allow mixed mode WPA+WPA2 networks to be enabled, but +# that functionality is subject to be removed in the future. +CONFIG_NO_TKIP=y + +# Pre-Association Security Negotiation (PASN) +# Experimental implementation based on IEEE P802.11z/D2.6 and the protocol +# design is still subject to change. As such, this should not yet be enabled in +# production use. +# This requires CONFIG_IEEE80211W=y to be enabled, too. +#CONFIG_PASN=y + +# Device Provisioning Protocol (DPP) (also known as Wi-Fi Easy Connect) +CONFIG_DPP=y +# DPP version 2 support +CONFIG_DPP2=y +# DPP version 3 support (experimental and still changing; do not enable for +# production use) +#CONFIG_DPP3=y + +CONFIG_IEEE80211W=y +CONFIG_MESH=y diff --git a/hostapd-2.10-lar.patch b/hostapd-2.10-lar.patch new file mode 100644 index 000000000000..23fde210b1d6 --- /dev/null +++ b/hostapd-2.10-lar.patch @@ -0,0 +1,139 @@ +diff -ru a/hostapd/config_file.c b/hostapd/config_file.c +--- a/hostapd/config_file.c 2022-01-16 15:51:29.000000000 -0500 ++++ b/hostapd/config_file.c 2022-07-06 15:58:31.206322430 -0500 +@@ -2906,6 +2906,8 @@ + line, bss->wpa_deny_ptk0_rekey); + return 1; + } ++ } else if (os_strcmp(buf, "noscan") == 0) { ++ conf->noscan = atoi(pos); + } else if (os_strcmp(buf, "wpa_group_update_count") == 0) { + char *endp; + unsigned long val = strtoul(pos, &endp, 0); +@@ -3474,6 +3476,8 @@ + if (bss->ocv && !bss->ieee80211w) + bss->ieee80211w = 1; + #endif /* CONFIG_OCV */ ++ } else if (os_strcmp(buf, "noscan") == 0) { ++ conf->noscan = atoi(pos); + } else if (os_strcmp(buf, "ieee80211n") == 0) { + conf->ieee80211n = atoi(pos); + } else if (os_strcmp(buf, "ht_capab") == 0) { +diff -ru a/src/ap/ap_config.h b/src/ap/ap_config.h +--- a/src/ap/ap_config.h 2022-01-16 15:51:29.000000000 -0500 ++++ b/src/ap/ap_config.h 2022-07-06 15:58:31.206322430 -0500 +@@ -1014,6 +1014,7 @@ + + int ht_op_mode_fixed; + u16 ht_capab; ++ int noscan; + int ieee80211n; + int secondary_channel; + int no_pri_sec_switch; +diff -ru a/src/ap/hw_features.c b/src/ap/hw_features.c +--- a/src/ap/hw_features.c 2022-01-16 15:51:29.000000000 -0500 ++++ b/src/ap/hw_features.c 2022-07-06 22:57:53.007315518 -0500 +@@ -24,6 +24,17 @@ + #include "beacon.h" + #include "hw_features.h" + ++static void ieee80211n_do_nothing(struct hostapd_iface *iface) ++{ ++ wpa_printf(MSG_DEBUG, ++ "Scan finished!"); ++} ++ ++static void ieee80211n_scan_channels_2g4(struct hostapd_iface *iface, ++ struct wpa_driver_scan_params *params); ++static void ieee80211n_scan_channels_5g(struct hostapd_iface *iface, ++ struct wpa_driver_scan_params *params); ++ + + void hostapd_free_hw_features(struct hostapd_hw_modes *hw_features, + size_t num_hw_features) +@@ -82,6 +93,33 @@ + + if (hostapd_drv_none(hapd)) + return -1; ++ ++ ++ ++ // scan ++ struct wpa_driver_scan_params params; ++ int ret1; ++ ++ os_memset(¶ms, 0, sizeof(params)); ++ ieee80211n_scan_channels_5g(iface, ¶ms); ++ ++ ret1 = hostapd_driver_scan(iface->bss[0], ¶ms); ++ ++ if (ret1 == -EBUSY) { ++ wpa_printf(MSG_ERROR, ++ "Failed to request a scan of neighboring BSSes ret=%d (%s)!", ++ ret1, strerror(-ret1)); ++ } ++ ++ if (ret1 == 0) { ++ iface->scan_cb = ieee80211n_do_nothing; ++ wpa_printf(MSG_DEBUG, ++ "Sleeping..."); ++ for (int i=0; i<110; i++) { ++ usleep(100000); ++ } ++ } ++ + modes = hostapd_get_hw_feature_data(hapd, &num_modes, &flags, + &dfs_domain); + if (modes == NULL) { +@@ -308,7 +346,6 @@ + sec_chan); + } + +- + static void ieee80211n_check_scan(struct hostapd_iface *iface) + { + struct wpa_scan_results *scan_res; +@@ -517,8 +554,10 @@ + int ret; + + /* Check that HT40 is used and PRI / SEC switch is allowed */ +- if (!iface->conf->secondary_channel || iface->conf->no_pri_sec_switch) ++ if (!iface->conf->secondary_channel || iface->conf->no_pri_sec_switch || iface->conf->noscan) { ++ wpa_printf(MSG_DEBUG, "Not scanning due to noscan?"); + return 0; ++ } + + hostapd_set_state(iface, HAPD_IFACE_HT_SCAN); + wpa_printf(MSG_DEBUG, "Scan for neighboring BSSes prior to enabling " +@@ -915,7 +954,7 @@ + if (!hostapd_is_usable_edmg(iface)) + return 0; + +- if (!iface->conf->secondary_channel) ++ if (!iface->conf->secondary_channel || iface->conf->noscan) + return 1; + + if (hostapd_is_usable_chan(iface, iface->freq + +diff -ru a/src/ap/ieee802_11_ht.c b/src/ap/ieee802_11_ht.c +--- a/src/ap/ieee802_11_ht.c 2022-01-16 15:51:29.000000000 -0500 ++++ b/src/ap/ieee802_11_ht.c 2022-07-06 15:58:31.206322430 -0500 +@@ -230,6 +230,9 @@ + return; + } + ++ if (iface->conf->noscan) ++ return; ++ + if (len < IEEE80211_HDRLEN + 2 + sizeof(*bc_ie)) { + wpa_printf(MSG_DEBUG, + "Ignore too short 20/40 BSS Coexistence Management frame"); +@@ -390,6 +393,9 @@ + if (iface->current_mode->mode != HOSTAPD_MODE_IEEE80211G) + return; + ++ if (iface->conf->noscan) ++ return; ++ + wpa_printf(MSG_INFO, "HT: Forty MHz Intolerant is set by STA " MACSTR + " in Association Request", MAC2STR(sta->addr)); + diff --git a/hostapd.service b/hostapd.service new file mode 100644 index 000000000000..40bda06c78fc --- /dev/null +++ b/hostapd.service @@ -0,0 +1,10 @@ +[Unit] +Description=Hostapd IEEE 802.11 AP, IEEE 802.1X/WPA/WPA2/EAP/RADIUS Authenticator +After=network.target + +[Service] +ExecStart=/usr/bin/hostapd /etc/hostapd/hostapd.conf +ExecReload=/bin/kill -HUP $MAINPID + +[Install] +WantedBy=multi-user.target |