summaryrefslogtreecommitdiff
path: root/package/hostapd
diff options
context:
space:
mode:
authorWaldemar Brodkorb <mail@waldemar-brodkorb.de>2012-04-03 16:51:28 +0200
committerWaldemar Brodkorb <mail@waldemar-brodkorb.de>2012-04-03 16:51:28 +0200
commit41db567455a283a26e9fda82a5da3d44288122f3 (patch)
tree62c341e4a2e5a4b29895f57d9a4922267a3414c7 /package/hostapd
parentb069eb70c6d83110589c5331c568f35af66926c6 (diff)
update libnl to 3.2
Diffstat (limited to 'package/hostapd')
-rw-r--r--package/hostapd/Makefile23
-rw-r--r--package/hostapd/files/hostapd.config229
-rw-r--r--package/hostapd/files/hostapd.config.full176
-rw-r--r--package/hostapd/patches/001-fix-bssid-generation.patch141
4 files changed, 231 insertions, 338 deletions
diff --git a/package/hostapd/Makefile b/package/hostapd/Makefile
index dcbae2ad3..7b3fe5852 100644
--- a/package/hostapd/Makefile
+++ b/package/hostapd/Makefile
@@ -4,9 +4,10 @@
include ${TOPDIR}/rules.mk
PKG_NAME:= hostapd
-PKG_VERSION:= 0.7.3
+# git version from 03.04.2012
+PKG_VERSION:= 1.0
PKG_RELEASE:= 1
-PKG_MD5SUM:= 91a7c8d0f090b7104152d3455a84c112
+PKG_MD5SUM:= 2a93bb1ecfcdf23a9d7db1f272e5e764
PKG_DESCR:= an IEEE 802.11 AP, IEEE 802.1x/WPA/WPA2/EAP/RADIUS Authenticator
PKG_SECTION:= wifi
PKG_DEPENDS:= libnl
@@ -24,9 +25,6 @@ PKGCD_WITH_GNUTLS:= use GnuTLS for crypto
PKGCS_WITH_GNUTLS:= libgnutls
PKGCB_WITH_GNUTLS:= gnutls
-PKG_FLAVOURS_HOSTAPD:= WITH_DEBUG
-PKGFD_WITH_DEBUG:= enable support for hostapd debugging
-
WRKSRC= ${WRKDIST}/${PKG_NAME}
include ${TOPDIR}/mk/package.mk
@@ -37,16 +35,13 @@ $(eval $(call PKG_template,HOSTAPD_UTILS,hostapd-utils,${PKG_VERSION}-${PKG_RELE
CONFIG_STYLE:= manual
INSTALL_STYLE:= manual
+TARGET_CFLAGS+= -I$(STAGING_DIR)/usr/include/libnl3
+
do-configure:
- #${CP} ./files/hostapd.config ${WRKBUILD}/.config
- ${CP} ./files/hostapd.config.full ${WRKBUILD}/.config
-#ifneq (${ADK_PACKAGE_HOSTAPD_WITH_GNUTLS},)
-# ${SED} "s#openssl#gnutls#" ${WRKBUILD}/.config
-#endif
-#ifneq (${ADK_PACKAGE_HOSTAPD_WITH_DEBUG},)
-# ${SED} "s#CONFIG_NO_STDOUT_DEBUG=y#CONFIG_NO_STDOUT_DEBUG=n#" \
-# ${WRKBUILD}/.config
-#endif
+ ${CP} ./files/hostapd.config ${WRKBUILD}/.config
+ifneq (${ADK_PACKAGE_HOSTAPD_WITH_GNUTLS},)
+ ${SED} "s#openssl#gnutls#" ${WRKBUILD}/.config
+endif
do-install:
${INSTALL_DIR} ${IDIR_HOSTAPD_UTILS}/usr/sbin
diff --git a/package/hostapd/files/hostapd.config b/package/hostapd/files/hostapd.config
index 205482fc5..8ef0c6efd 100644
--- a/package/hostapd/files/hostapd.config
+++ b/package/hostapd/files/hostapd.config
@@ -9,28 +9,243 @@
# be modified from here. In most cass, these lines should use += in order not
# to override previous values of the variables.
-# use openssl by default
-CONFIG_TLS=openssl
+# Driver interface for Host AP driver
+CONFIG_DRIVER_HOSTAP=y
+
+# Driver interface for wired authenticator
+#CONFIG_DRIVER_WIRED=y
+
+# Driver interface for madwifi driver
+#CONFIG_DRIVER_MADWIFI=y
+#CFLAGS += -I../../madwifi # change to the madwifi source directory
# Driver interface for drivers using the nl80211 kernel interface
CONFIG_DRIVER_NL80211=y
+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
+
+# IEEE 802.11F/IAPP
+CONFIG_IAPP=y
+
+# WPA2/IEEE 802.11i RSN pre-authentication
+CONFIG_RSN_PREAUTH=y
+
+# PeerKey handshake for Station to Station Link (IEEE 802.11e DLS)
+CONFIG_PEERKEY=y
+
+# IEEE 802.11w (management frame protection)
+# This version is an experimental implementation based on IEEE 802.11w/D1.0
+# draft and is subject to change since the standard has not yet been finalized.
+# Driver support is also needed for IEEE 802.11w.
+#CONFIG_IEEE80211W=y
+
+# Integrated EAP server
+#CONFIG_EAP=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
+# Note: Default OpenSSL package does not include support for all the
+# functionality needed for EAP-FAST. If EAP-FAST is enabled with OpenSSL,
+# the OpenSSL library must be patched (openssl-0.9.9-session-ticket.patch)
+# to add the needed functions.
+#CONFIG_EAP_FAST=y
+
+# Wi-Fi Protected Setup (WPS)
+#CONFIG_WPS=y
+# Enable WSC 2.0 support
+#CONFIG_WPS2=y
+# Enable UPnP support for external WPS Registrars
+#CONFIG_WPS_UPNP=y
+
+# EAP-IKEv2
+#CONFIG_EAP_IKEV2=y
+
+# Trusted Network Connect (EAP-TNC)
+#CONFIG_EAP_TNC=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., madwifi or FreeBSD/net80211)
+#CONFIG_DRIVER_RADIUS_ACL=y
+
+# IEEE 802.11n (High Throughput) support
+#CONFIG_IEEE80211N=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
+
# Remove support for RADIUS accounting
-CONFIG_NO_ACCOUNTING=y
+#CONFIG_NO_ACCOUNTING=y
# Remove support for RADIUS
-CONFIG_NO_RADIUS=y
+#CONFIG_NO_RADIUS=y
# Remove support for VLANs
-CONFIG_NO_VLAN=y
+#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
# Remove support for dumping state into a file on SIGUSR1 signal
# This can be used to reduce binary size at the cost of disabling a debugging
# option.
-CONFIG_NO_DUMP_STATE=y
-CONFIG_LIBNL20=y
+#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
+
+# Select TLS implementation
+# openssl = OpenSSL (default)
+# gnutls = GnuTLS
+# internal = 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
+
+# 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
diff --git a/package/hostapd/files/hostapd.config.full b/package/hostapd/files/hostapd.config.full
deleted file mode 100644
index c558ac916..000000000
--- a/package/hostapd/files/hostapd.config.full
+++ /dev/null
@@ -1,176 +0,0 @@
-# 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 madwifi driver
-#CONFIG_DRIVER_MADWIFI=y
-#CFLAGS += -I../../madwifi # change to the madwifi source directory
-
-# Driver interface for drivers using the nl80211 kernel interface
-CONFIG_DRIVER_NL80211=y
-# driver_nl80211.c requires a rather new libnl (version 1.1) which may not be
-# shipped with your distribution yet. If that is the case, you need to build
-# newer libnl version and point the hostapd build to use it.
-#LIBNL=/usr/src/libnl
-#CFLAGS += -I$(LIBNL)/include
-#LIBS += -L$(LIBNL)/lib
-CONFIG_LIBNL20=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
-
-# IEEE 802.11F/IAPP
-CONFIG_IAPP=y
-
-# WPA2/IEEE 802.11i RSN pre-authentication
-CONFIG_RSN_PREAUTH=y
-
-# PeerKey handshake for Station to Station Link (IEEE 802.11e DLS)
-CONFIG_PEERKEY=y
-
-# IEEE 802.11w (management frame protection)
-# This version is an experimental implementation based on IEEE 802.11w/D1.0
-# draft and is subject to change since the standard has not yet been finalized.
-# Driver support is also needed for IEEE 802.11w.
-#CONFIG_IEEE80211W=y
-
-# Integrated EAP server
-#CONFIG_EAP=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-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
-# Note: Default OpenSSL package does not include support for all the
-# functionality needed for EAP-FAST. If EAP-FAST is enabled with OpenSSL,
-# the OpenSSL library must be patched (openssl-0.9.9-session-ticket.patch)
-# to add the needed functions.
-#CONFIG_EAP_FAST=y
-
-# Wi-Fi Protected Setup (WPS)
-#CONFIG_WPS=y
-# Enable UPnP support for external WPS Registrars
-#CONFIG_WPS_UPNP=y
-
-# EAP-IKEv2
-#CONFIG_EAP_IKEV2=y
-
-# Trusted Network Connect (EAP-TNC)
-#CONFIG_EAP_TNC=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., madwifi or FreeBSD/net80211)
-#CONFIG_DRIVER_RADIUS_ACL=y
-
-# IEEE 802.11n (High Throughput) support
-CONFIG_IEEE80211N=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
-
-# 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
-
-# Remove support for dumping state into a file on SIGUSR1 signal
-# 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
diff --git a/package/hostapd/patches/001-fix-bssid-generation.patch b/package/hostapd/patches/001-fix-bssid-generation.patch
deleted file mode 100644
index ca328e5aa..000000000
--- a/package/hostapd/patches/001-fix-bssid-generation.patch
+++ /dev/null
@@ -1,141 +0,0 @@
-Modified algorithm for generating BSSIDs. Always set locally
-administered bit. Calculate the mask after calculating the
-BSSIDs. This eliminates the "Invalid BSSID mask" caused when
-addr & mask != addr.
-
-Signed-off-by: Bill Jordan <bjordan <at> rajant.com>
----
-Taken from http://permalink.gmane.org/gmane.linux.drivers.hostap/22207
----
- src/ap/hostapd.c | 74 ++++++------------------------------------------------
- 1 files changed, 8 insertions(+), 66 deletions(-)
-
-diff --git a/src/ap/hostapd.c b/src/ap/hostapd.c
-index f4517f8..1dc6b66 100644
---- a/src/ap/hostapd.c
-+++ b/src/ap/hostapd.c
-@@ -360,70 +360,26 @@ static int hostapd_validate_bssid_configuration(struct hostapd_iface *iface)
- {
- u8 mask[ETH_ALEN] = { 0 };
- struct hostapd_data *hapd = iface->bss[0];
-- unsigned int i = iface->conf->num_bss, bits = 0, j;
-+ unsigned int i, j;
- int res;
-- int auto_addr = 0;
-
- if (hostapd_drv_none(hapd))
- return 0;
-
- /* Generate BSSID mask that is large enough to cover the BSSIDs. */
-
-- /* Determine the bits necessary to cover the number of BSSIDs. */
-- for (i--; i; i >>= 1)
-- bits++;
--
- /* Determine the bits necessary to any configured BSSIDs,
- if they are higher than the number of BSSIDs. */
- for (j = 0; j < iface->conf->num_bss; j++) {
-- if (hostapd_mac_comp_empty(iface->conf->bss[j].bssid) == 0) {
-- if (j)
-- auto_addr++;
-- continue;
-- }
--
- for (i = 0; i < ETH_ALEN; i++) {
- mask[i] |=
-- iface->conf->bss[j].bssid[i] ^
-+ iface->bss[j]->conf->bssid[i] ^
- hapd->own_addr[i];
- }
- }
-
-- if (!auto_addr)
-- goto skip_mask_ext;
--
-- for (i = 0; i < ETH_ALEN && mask[i] == 0; i++)
-- ;
-- j = 0;
-- if (i < ETH_ALEN) {
-- j = (5 - i) * 8;
--
-- while (mask[i] != 0) {
-- mask[i] >>= 1;
-- j++;
-- }
-- }
--
-- if (bits < j)
-- bits = j;
--
-- if (bits > 40) {
-- wpa_printf(MSG_ERROR, "Too many bits in the BSSID mask (%u)",
-- bits);
-- return -1;
-- }
--
-- os_memset(mask, 0xff, ETH_ALEN);
-- j = bits / 8;
-- for (i = 5; i > 5 - j; i--)
-- mask[i] = 0;
-- j = bits % 8;
-- while (j--)
-- mask[i] <<= 1;
--
--skip_mask_ext:
-- wpa_printf(MSG_DEBUG, "BSS count %lu, BSSID mask " MACSTR " (%d bits)",
-- (unsigned long) iface->conf->num_bss, MAC2STR(mask), bits);
-+ wpa_printf(MSG_DEBUG, "BSS count %lu, BSSID mask " MACSTR ,
-+ (unsigned long) iface->conf->num_bss, MAC2STR(mask));
-
- res = hostapd_valid_bss_mask(hapd, hapd->own_addr, mask);
- if (res == 0)
-@@ -436,21 +392,6 @@ skip_mask_ext:
- return -1;
- }
-
-- if (!auto_addr)
-- return 0;
--
-- for (i = 0; i < ETH_ALEN; i++) {
-- if ((hapd->own_addr[i] & mask[i]) != hapd->own_addr[i]) {
-- wpa_printf(MSG_ERROR, "Invalid BSSID mask " MACSTR
-- " for start address " MACSTR ".",
-- MAC2STR(mask), MAC2STR(hapd->own_addr));
-- wpa_printf(MSG_ERROR, "Start address must be the "
-- "first address in the block (i.e., addr "
-- "AND mask == addr).");
-- return -1;
-- }
-- }
--
- return 0;
- }
-
-@@ -492,6 +433,7 @@ static int hostapd_setup_bss(struct hostapd_data *hapd, int first)
- if (!first) {
- if (hostapd_mac_comp_empty(hapd->conf->bssid) == 0) {
- /* Allocate the next available BSSID. */
-+ hapd->own_addr[0] |= 2; /* locally administered address */
- do {
- inc_byte_array(hapd->own_addr, ETH_ALEN);
- } while (mac_in_conf(hapd->iconf, hapd->own_addr));
-@@ -672,9 +614,6 @@ static int setup_interface(struct hostapd_iface *iface)
- iface->bss[i]->drv_priv = hapd->drv_priv;
- }
-
-- if (hostapd_validate_bssid_configuration(iface))
-- return -1;
--
- if (hapd->iconf->country[0] && hapd->iconf->country[1]) {
- os_memcpy(country, hapd->iconf->country, 3);
- country[3] = '\0';
-@@ -774,6 +713,9 @@ int hostapd_setup_interface_complete(struct hostapd_iface *iface, int err)
- prev_addr = hapd->own_addr;
- }
-
-+ if (hostapd_validate_bssid_configuration(iface))
-+ return -1;
-+
- hostapd_tx_queue_params(iface);
-
- ap_list_init(iface);