From nobody Tue Aug 11 03:56:19 2026 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4hJyV24Pnsz6nLWP for ; Tue, 11 Aug 2026 03:56:26 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "YR1" (not verified)) by mx1.freebsd.org (Postfix) with ESMTPS id 4hJyV10lL4z3Y14 for ; Tue, 11 Aug 2026 03:56:25 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1786420585; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=7xV5FuB3bQQo8uSTs+Ka24pmE9IRVFMGyu8TUGheiKM=; b=lyvO+dvt4VtBZPgqMaAHtHFLyLVvun6l9P7Ls9W+PoDEY0unk1Be0fWm88SrpsLYvYr+QX ZBcpU5rf3kaKMbmTS2vh0p9EdMPrGen+2gN/99m4sXjNxBb5JAhahoHBsd1EQyhUDC7TDC Rf68CbFvSGsKP9Su4hDmHUAghvoE0RH6YHseTO+rkl9/juufv06Ai6QI8+jK6LL8Hi/wqT KnFPWn/wyqw5HNmPi56F2u1xiMtkz8XqUpJySN2XJNzkRHBH4bq19OBapCEkvGH++OKKBq Fo/3gLJ1yFIyWJhe6d9nvaPuVWIeEaso2YcO72EgUINU/YFP9x71zDbCIe2/ZA== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1786420585; a=rsa-sha256; cv=none; b=Wp0986Q/MySH4zXqwRp8wjO3vSkFBPa/GEhoZI13lEL5TVhWJK5b7d0WhIT+5L7IfxPnxm e7h1wO1RFIdnPJqtM2jYa+4WpusU2iFM716Tuj5LvdUt7pRlXDDplMTd3qgDhNayHvJqRa WG/8aZ18zDIVnkzqKkX27UDAD7DaF8D0MDFKBmdYE/VDz2zv5fQGUl9UBK3hffkJQk6Y1a gMCHvlPRiIyoM4OXBMiS75VmfjUkgVht9wK0GossNEKK5bPvs3kXJ3UCT89IPrC7JDUYMG PLs5rlosBO9bCLZyi3dpvtDcA2VpYOe8JeFN7Ii90mwXc9al6ifcH+Y7m3b57w== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1786420585; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=7xV5FuB3bQQo8uSTs+Ka24pmE9IRVFMGyu8TUGheiKM=; b=utJasftoc3JK/iWx6NAH2o/bhoZr196lIg7yVTQ/RH/X2N3kMMfntakGkjrxkG/+d9+8YJ 6+kwG4gTb6J+NtIqDs0tRFVNnzwrHA5SXe3ozJZmh9vOr82t6jw1p+VsRkXlKgwKFAFxff C55K9haqmCK2FOSEMFHjOsNq6za0/tZoqH4Of470fJCuKRXRFvyZ9fczj0i4m8FX7GGmYR bj3Seo/trW6jGkSQXKXYwcInEe/k6Zvox0WZ63op4TRL+H5mthokGNuKUf/j4MCpSZ0tDJ u4qQDBL3AvuAoJqW0Rv5FOEUogd+WVA6T80ZWbhuptgyUjj1/tVBuSdXwLrCJg== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4hJyV0667jzfK6 for ; Tue, 11 Aug 2026 03:56:24 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 3a9b3 by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Tue, 11 Aug 2026 03:56:19 +0000 To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Cy Schubert Subject: git: 71e72c9e91c4 - main - wpa: Update to 2.12 List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-all@freebsd.org Sender: owner-dev-commits-src-all@FreeBSD.org List-Id: List-Post: List-Help: List-Subscribe: List-Unsubscribe: List-Owner: Precedence: list MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: cy X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 71e72c9e91c4b8007a4292e09669e8b549c29e97 Auto-Submitted: auto-generated Date: Tue, 11 Aug 2026 03:56:19 +0000 Message-Id: <6a7a9d63.3a9b3.6ddaa5c@gitrepo.freebsd.org> The branch main has been updated by cy: URL: https://cgit.FreeBSD.org/src/commit/?id=71e72c9e91c4b8007a4292e09669e8b549c29e97 commit 71e72c9e91c4b8007a4292e09669e8b549c29e97 Merge: 135df7785431 513264698a89 Author: Cy Schubert AuthorDate: 2026-08-10 14:23:31 +0000 Commit: Cy Schubert CommitDate: 2026-08-11 03:54:02 +0000 wpa: Update to 2.12 Fixes and new features include: hostapd: * support RSN overriding (e.g., WPA3-Personal Compatibility Mode) * EHT/IEEE 802.11be/Wi-Fi 7 - more complete support - fix message validation issues that could enable DoS attacks - fix group key rekeying * enable SAE group 20 by default if SAE-EXT-KEY is enabled * reject unexpected SAE password identifier to avoid DoS attack against a specific STA * mandate use of SAE H2E when using password identifiers * assign VLAN when using SAE with PMKSA caching * support SPP A-MSDU negotiation * support IEEE 802.11bi functionality - changing SAE password identifiers - EPPKE - IEEE 802.1X/EAP in Authentication frames - Association frame encryption - PMKID privacy * remove the driver interface for now obsolete Host AP driver * remove the driver interface for now obsolete Atheros WEXT interface * move supported, basic, and Beacon TX rate configuration to be at BSS level instead of per-radio for all BSSs * fix various issues in Multiple-BSSID functionality * support OpenSSL 3.0 API changes * EAP-TEAP: protocol changes based on RFC 9930; this is not compatible with previous versions * support Automated Frequency Coordination (AFC) on the 6 GHz band * improve GAS/ANQP processing to support larger ANQP responses * a large number of other fixes, cleanup, and extensions wpa_supplicant: * support RSN overriding (e.g., WPA3-Personal Compatibility Mode) * improve BSS transition management support * EHT/IEEE 802.11be/Wi-Fi 7 - more complete support - fix message validation issues that could enable DoS attacks * support Wi-Fi Direct R2 * support Wi-Fi Aware (add synchronized NAN; extend USD support) * support Proximity Ranging * support SPP A-MSDU negotiation * support IEEE 802.11bi functionality - changing SAE password identifiers - EPPKE - IEEE 802.1X/EAP in Authentication frames - Association frame encryption - PMKID privacy * enable layer 2/Wi-Fi multicast filtering for all networks (not just some Passpoint networks which enabled this before) * wpa_gui: port to Qt6 * support OpenSSL 3.0 API changes * EAP-TEAP: protocol changes based on RFC 9930; this is not compatible with previous versions * maintain configuration file permissions when writing updated configuration * add option to validate PKCS#11/OpenSC engine and module paths * fix PMKSA caching to enforce network context to avoid misuse of unexpected PMKSA cache entries * fix a potential DoS attack in SAE processing of an unexpected element * fix incomplete bounds checking of mesh AMPE messages that could have resulted in DoS attacks and memory corruption * a large number of other fixes, cleanup, and extensions MFC after: 2 months Merge commit '513264698a892550ba20aeb9da7f360417fdc63b' contrib/wpa/Makefile | 10 + contrib/wpa/README | 2 +- contrib/wpa/hostapd/Android.mk | 40 +- contrib/wpa/hostapd/ChangeLog | 30 + contrib/wpa/hostapd/Makefile | 67 +- contrib/wpa/hostapd/README | 11 +- contrib/wpa/hostapd/README-MULTI-AP | 2 +- contrib/wpa/hostapd/android.config | 3 - contrib/wpa/hostapd/config_file.c | 734 ++- contrib/wpa/hostapd/ctrl_iface.c | 1057 +++- contrib/wpa/hostapd/ctrl_iface.h | 2 + contrib/wpa/hostapd/defconfig | 34 +- contrib/wpa/hostapd/eap_register.c | 7 - contrib/wpa/hostapd/hlr_auc_gw.c | 29 +- contrib/wpa/hostapd/hostapd.conf | 370 +- contrib/wpa/hostapd/hostapd_cli.c | 130 +- contrib/wpa/hostapd/main.c | 96 +- contrib/wpa/hs20/client/Android.mk | 5 +- contrib/wpa/hs20/client/Makefile | 5 +- contrib/wpa/hs20/client/devdetail.xml | 47 - contrib/wpa/hs20/client/devinfo.xml | 7 - contrib/wpa/hs20/client/est.c | 742 --- contrib/wpa/hs20/client/oma_dm_client.c | 1398 ----- contrib/wpa/hs20/client/osu_client.c | 2304 +------- contrib/wpa/hs20/client/osu_client.h | 97 - contrib/wpa/hs20/client/spp_client.c | 1003 ---- contrib/wpa/src/ap/Makefile | 6 + contrib/wpa/src/ap/acs.c | 178 +- contrib/wpa/src/ap/afc.c | 1123 ++++ contrib/wpa/src/ap/airtime_policy.c | 7 +- contrib/wpa/src/ap/ap_config.c | 176 +- contrib/wpa/src/ap/ap_config.h | 168 +- contrib/wpa/src/ap/ap_drv_ops.c | 238 +- contrib/wpa/src/ap/ap_drv_ops.h | 40 +- contrib/wpa/src/ap/ap_mlme.c | 8 +- contrib/wpa/src/ap/authsrv.c | 116 +- contrib/wpa/src/ap/beacon.c | 1039 +++- contrib/wpa/src/ap/ctrl_iface_ap.c | 495 +- contrib/wpa/src/ap/ctrl_iface_ap.h | 6 +- contrib/wpa/src/ap/dfs.c | 97 +- contrib/wpa/src/ap/dfs.h | 2 +- contrib/wpa/src/ap/dpp_hostapd.c | 56 +- contrib/wpa/src/ap/drv_callbacks.c | 540 +- contrib/wpa/src/ap/eap_user_db.c | 2 - contrib/wpa/src/ap/gas_query_ap.c | 12 +- contrib/wpa/src/ap/gas_serv.c | 917 +-- contrib/wpa/src/ap/hostapd.c | 1010 +++- contrib/wpa/src/ap/hostapd.h | 187 +- contrib/wpa/src/ap/hs20.c | 107 - contrib/wpa/src/ap/hw_features.c | 328 +- contrib/wpa/src/ap/hw_features.h | 22 +- contrib/wpa/src/ap/ieee802_11.c | 3784 +++++++++--- contrib/wpa/src/ap/ieee802_11.h | 78 +- contrib/wpa/src/ap/ieee802_11_eht.c | 1781 +++++- contrib/wpa/src/ap/ieee802_11_he.c | 75 +- contrib/wpa/src/ap/ieee802_11_ht.c | 61 +- contrib/wpa/src/ap/ieee802_11_shared.c | 105 +- contrib/wpa/src/ap/ieee802_11_vht.c | 49 +- contrib/wpa/src/ap/ieee802_1x.c | 196 +- contrib/wpa/src/ap/ieee802_1x.h | 2 + contrib/wpa/src/ap/interference.c | 592 ++ contrib/wpa/src/ap/interference.h | 18 + contrib/wpa/src/ap/nan_usd_ap.c | 64 +- contrib/wpa/src/ap/nan_usd_ap.h | 7 +- contrib/wpa/src/ap/neighbor_db.c | 66 +- contrib/wpa/src/ap/pmksa_cache_auth.c | 30 +- contrib/wpa/src/ap/pmksa_cache_auth.h | 14 +- contrib/wpa/src/ap/rrm.c | 7 +- contrib/wpa/src/ap/sta_info.c | 503 +- contrib/wpa/src/ap/sta_info.h | 95 +- contrib/wpa/src/ap/vlan_full.c | 22 +- contrib/wpa/src/ap/wnm_ap.c | 14 +- contrib/wpa/src/ap/wpa_auth.c | 1501 ++++- contrib/wpa/src/ap/wpa_auth.h | 147 +- contrib/wpa/src/ap/wpa_auth_ft.c | 116 +- contrib/wpa/src/ap/wpa_auth_glue.c | 349 +- contrib/wpa/src/ap/wpa_auth_i.h | 13 + contrib/wpa/src/ap/wpa_auth_ie.c | 698 ++- contrib/wpa/src/ap/wpa_auth_kay.c | 3 +- contrib/wpa/src/ap/wps_hostapd.c | 2 + contrib/wpa/src/build.rules | 3 + contrib/wpa/src/common/Makefile | 1 + contrib/wpa/src/common/common_module_tests.c | 15 +- contrib/wpa/src/common/defs.h | 65 +- contrib/wpa/src/common/dpp.c | 83 +- contrib/wpa/src/common/dpp.h | 10 +- contrib/wpa/src/common/dpp_auth.c | 2 +- contrib/wpa/src/common/dpp_backup.c | 3 +- contrib/wpa/src/common/dpp_crypto.c | 1 + contrib/wpa/src/common/dpp_i.h | 2 +- contrib/wpa/src/common/dpp_reconfig.c | 2 +- contrib/wpa/src/common/dpp_tcp.c | 4 +- contrib/wpa/src/common/gas.c | 6 + contrib/wpa/src/common/gas_server.c | 14 +- contrib/wpa/src/common/gas_server.h | 2 +- contrib/wpa/src/common/hw_features_common.c | 48 +- contrib/wpa/src/common/hw_features_common.h | 2 + contrib/wpa/src/common/ieee802_11_common.c | 975 +++- contrib/wpa/src/common/ieee802_11_common.h | 75 +- contrib/wpa/src/common/ieee802_11_defs.h | 433 +- contrib/wpa/src/common/nan.h | 98 - contrib/wpa/src/common/nan_de.c | 2012 ++++++- contrib/wpa/src/common/nan_de.h | 193 +- contrib/wpa/src/common/nan_defs.h | 663 +++ contrib/wpa/src/common/proc_coord.c | 817 +++ contrib/wpa/src/common/proc_coord.h | 139 + contrib/wpa/src/common/proximity_ranging.c | 2707 +++++++++ contrib/wpa/src/common/proximity_ranging.h | 683 +++ contrib/wpa/src/common/ptksa_cache.c | 27 +- contrib/wpa/src/common/ptksa_cache.h | 4 +- contrib/wpa/src/common/qca-vendor.h | 6163 +++++++++++++++++++- contrib/wpa/src/common/sae.c | 145 +- contrib/wpa/src/common/sae.h | 21 +- contrib/wpa/src/common/sae_pk.c | 6 + contrib/wpa/src/common/version.h | 2 +- contrib/wpa/src/common/wpa_common.c | 1097 +++- contrib/wpa/src/common/wpa_common.h | 96 +- contrib/wpa/src/common/wpa_ctrl.h | 76 +- contrib/wpa/src/crypto/crypto.h | 2 +- contrib/wpa/src/crypto/crypto_gnutls.c | 8 - contrib/wpa/src/crypto/crypto_libtomcrypt.c | 3 - contrib/wpa/src/crypto/crypto_linux.c | 5 +- contrib/wpa/src/crypto/crypto_openssl.c | 193 +- contrib/wpa/src/crypto/crypto_wolfssl.c | 285 +- contrib/wpa/src/crypto/sha256-prf.c | 2 +- contrib/wpa/src/crypto/sha256.h | 2 + contrib/wpa/src/crypto/sha384-prf.c | 2 +- contrib/wpa/src/crypto/sha384.h | 2 + contrib/wpa/src/crypto/sha512-prf.c | 2 +- contrib/wpa/src/crypto/tls_gnutls.c | 20 +- contrib/wpa/src/crypto/tls_openssl.c | 536 +- contrib/wpa/src/crypto/tls_wolfssl.c | 668 ++- contrib/wpa/src/drivers/driver.h | 1203 +++- contrib/wpa/src/drivers/driver_atheros.c | 2286 -------- contrib/wpa/src/drivers/driver_bsd.c | 8 +- contrib/wpa/src/drivers/driver_common.c | 26 + contrib/wpa/src/drivers/driver_hostap.c | 1208 ---- contrib/wpa/src/drivers/driver_hostap.h | 208 - contrib/wpa/src/drivers/driver_macsec_linux.c | 11 +- contrib/wpa/src/drivers/driver_ndis.c | 3 + contrib/wpa/src/drivers/driver_nl80211.c | 4850 +++++++++++---- contrib/wpa/src/drivers/driver_nl80211.h | 116 +- contrib/wpa/src/drivers/driver_nl80211_capa.c | 701 ++- contrib/wpa/src/drivers/driver_nl80211_event.c | 1400 ++++- contrib/wpa/src/drivers/driver_nl80211_monitor.c | 387 +- contrib/wpa/src/drivers/driver_nl80211_scan.c | 83 +- contrib/wpa/src/drivers/driver_openbsd.c | 3 + contrib/wpa/src/drivers/driver_privsep.c | 3 + contrib/wpa/src/drivers/driver_wext.c | 124 +- contrib/wpa/src/drivers/driver_wext.h | 2 + contrib/wpa/src/drivers/drivers.c | 6 - contrib/wpa/src/drivers/drivers.mak | 22 +- contrib/wpa/src/drivers/drivers.mk | 18 +- contrib/wpa/src/drivers/nl80211_copy.h | 1624 +++++- contrib/wpa/src/eap_common/eap_pwd_common.c | 2 +- contrib/wpa/src/eap_common/eap_teap_common.c | 73 +- contrib/wpa/src/eap_common/eap_teap_common.h | 7 +- contrib/wpa/src/eap_common/ikev2_common.c | 29 +- contrib/wpa/src/eap_peer/eap.c | 26 +- contrib/wpa/src/eap_peer/eap_config.h | 2 - contrib/wpa/src/eap_peer/eap_leap.c | 5 +- contrib/wpa/src/eap_peer/eap_teap.c | 691 +-- contrib/wpa/src/eap_peer/eap_teap_pac.c | 931 --- contrib/wpa/src/eap_peer/eap_teap_pac.h | 50 - contrib/wpa/src/eap_peer/eap_tls.c | 55 - contrib/wpa/src/eap_peer/eap_tls_common.c | 13 +- contrib/wpa/src/eap_peer/eap_tls_common.h | 1 - contrib/wpa/src/eap_server/eap.h | 2 - contrib/wpa/src/eap_server/eap_server_teap.c | 522 +- contrib/wpa/src/eap_server/eap_server_tls.c | 54 - contrib/wpa/src/eap_server/eap_server_tls_common.c | 8 - contrib/wpa/src/eap_server/eap_server_ttls.c | 5 + contrib/wpa/src/eap_server/eap_tls_common.h | 1 - contrib/wpa/src/eapol_auth/eapol_auth_sm.c | 17 +- contrib/wpa/src/eapol_auth/eapol_auth_sm.h | 2 +- contrib/wpa/src/eapol_auth/eapol_auth_sm_i.h | 2 - contrib/wpa/src/eapol_supp/eapol_supp_sm.c | 135 +- contrib/wpa/src/eapol_supp/eapol_supp_sm.h | 5 + contrib/wpa/src/fst/fst.c | 8 + contrib/wpa/src/fst/fst_session.c | 8 +- contrib/wpa/src/nan/Makefile | 9 + contrib/wpa/src/nan/nan.c | 3677 ++++++++++++ contrib/wpa/src/nan/nan.h | 946 +++ contrib/wpa/src/nan/nan_bootstrap.c | 741 +++ contrib/wpa/src/nan/nan_crypto.c | 773 +++ contrib/wpa/src/nan/nan_i.h | 867 +++ contrib/wpa/src/nan/nan_module_test_cases.c | 817 +++ contrib/wpa/src/nan/nan_module_tests.c | 1530 +++++ contrib/wpa/src/nan/nan_module_tests.h | 137 + contrib/wpa/src/nan/nan_ndl.c | 1724 ++++++ contrib/wpa/src/nan/nan_ndp.c | 1214 ++++ contrib/wpa/src/nan/nan_pairing.c | 1625 ++++++ contrib/wpa/src/nan/nan_sec.c | 1653 ++++++ contrib/wpa/src/nan/nan_util.c | 2043 +++++++ contrib/wpa/src/p2p/p2p.c | 1774 +++++- contrib/wpa/src/p2p/p2p.h | 416 +- contrib/wpa/src/p2p/p2p_build.c | 170 +- contrib/wpa/src/p2p/p2p_go_neg.c | 284 +- contrib/wpa/src/p2p/p2p_group.c | 52 +- contrib/wpa/src/p2p/p2p_i.h | 236 +- contrib/wpa/src/p2p/p2p_invitation.c | 284 +- contrib/wpa/src/p2p/p2p_parse.c | 68 + contrib/wpa/src/p2p/p2p_pd.c | 864 ++- contrib/wpa/src/p2p/p2p_utils.c | 71 +- contrib/wpa/src/pae/ieee802_1x_kay.c | 33 +- contrib/wpa/src/pae/ieee802_1x_kay.h | 4 +- contrib/wpa/src/pasn/pasn_common.c | 168 +- contrib/wpa/src/pasn/pasn_common.h | 164 +- contrib/wpa/src/pasn/pasn_initiator.c | 606 +- contrib/wpa/src/pasn/pasn_responder.c | 491 +- contrib/wpa/src/radius/radius.c | 112 +- contrib/wpa/src/radius/radius.h | 10 +- contrib/wpa/src/radius/radius_client.c | 60 +- contrib/wpa/src/radius/radius_server.c | 306 +- contrib/wpa/src/radius/radius_server.h | 29 +- contrib/wpa/src/rsn_supp/pmksa_cache.c | 94 +- contrib/wpa/src/rsn_supp/pmksa_cache.h | 6 +- contrib/wpa/src/rsn_supp/preauth.c | 2 +- contrib/wpa/src/rsn_supp/tdls.c | 28 +- contrib/wpa/src/rsn_supp/wpa.c | 1342 ++++- contrib/wpa/src/rsn_supp/wpa.h | 104 +- contrib/wpa/src/rsn_supp/wpa_ft.c | 8 +- contrib/wpa/src/rsn_supp/wpa_i.h | 35 +- contrib/wpa/src/rsn_supp/wpa_ie.c | 199 +- contrib/wpa/src/rsn_supp/wpa_ie.h | 8 + contrib/wpa/src/tls/tlsv1_client.c | 2 +- contrib/wpa/src/tls/tlsv1_common.c | 8 - contrib/wpa/src/tls/tlsv1_common.h | 4 - contrib/wpa/src/tls/x509v3.c | 2 +- contrib/wpa/src/utils/bitfield.c | 160 +- contrib/wpa/src/utils/bitfield.h | 12 +- contrib/wpa/src/utils/common.c | 32 +- contrib/wpa/src/utils/common.h | 29 +- contrib/wpa/src/utils/eloop.c | 9 + contrib/wpa/src/utils/ext_password_file.c | 21 +- contrib/wpa/src/utils/http-utils.h | 36 - contrib/wpa/src/utils/http_curl.c | 962 --- contrib/wpa/src/utils/json.c | 138 +- contrib/wpa/src/utils/json.h | 3 + contrib/wpa/src/utils/module_tests.h | 1 + contrib/wpa/src/utils/os.h | 11 +- contrib/wpa/src/utils/os_unix.c | 75 +- contrib/wpa/src/utils/trace.c | 47 +- contrib/wpa/src/utils/trace.h | 25 +- contrib/wpa/src/utils/utils_module_tests.c | 97 +- contrib/wpa/src/utils/wpa_debug.c | 38 +- contrib/wpa/src/utils/wpa_debug.h | 49 +- contrib/wpa/src/utils/wpabuf.c | 57 +- contrib/wpa/src/utils/wpabuf.h | 11 + contrib/wpa/src/utils/xml-utils.c | 31 - contrib/wpa/src/utils/xml-utils.h | 19 - contrib/wpa/src/utils/xml_libxml2.c | 212 +- contrib/wpa/src/wps/http_server.c | 9 +- contrib/wpa/src/wps/wps_er.c | 5 +- contrib/wpa/src/wps/wps_upnp_ap.c | 2 +- contrib/wpa/wpa_supplicant/Android.mk | 60 +- contrib/wpa/wpa_supplicant/ChangeLog | 32 + contrib/wpa/wpa_supplicant/Makefile | 81 +- contrib/wpa/wpa_supplicant/README | 4 +- contrib/wpa/wpa_supplicant/README-HS20 | 22 - contrib/wpa/wpa_supplicant/README-NAN-USD | 16 + contrib/wpa/wpa_supplicant/ap.c | 68 +- contrib/wpa/wpa_supplicant/bgscan_learn.c | 5 + contrib/wpa/wpa_supplicant/bgscan_simple.c | 4 + contrib/wpa/wpa_supplicant/bss.c | 968 ++- contrib/wpa/wpa_supplicant/bss.h | 36 +- contrib/wpa/wpa_supplicant/config.c | 663 ++- contrib/wpa/wpa_supplicant/config.h | 174 +- contrib/wpa/wpa_supplicant/config_file.c | 302 +- contrib/wpa/wpa_supplicant/config_none.c | 2 +- contrib/wpa/wpa_supplicant/config_ssid.h | 115 + contrib/wpa/wpa_supplicant/config_winreg.c | 2 +- contrib/wpa/wpa_supplicant/ctrl_iface.c | 1694 +++++- .../wpa/wpa_supplicant/dbus/dbus_dict_helpers.c | 35 + .../wpa/wpa_supplicant/dbus/dbus_dict_helpers.h | 3 + contrib/wpa/wpa_supplicant/dbus/dbus_new.c | 552 +- contrib/wpa/wpa_supplicant/dbus/dbus_new.h | 87 + .../wpa/wpa_supplicant/dbus/dbus_new_handlers.c | 645 +- .../wpa/wpa_supplicant/dbus/dbus_new_handlers.h | 20 + .../wpa_supplicant/dbus/dbus_new_handlers_p2p.c | 47 +- .../wpa_supplicant/dbus/dbus_new_handlers_p2p.h | 2 + .../wpa/wpa_supplicant/dbus/dbus_new_introspect.c | 2 +- contrib/wpa/wpa_supplicant/defconfig | 44 +- contrib/wpa/wpa_supplicant/dpp_supplicant.c | 84 +- contrib/wpa/wpa_supplicant/dpp_supplicant.h | 2 +- contrib/wpa/wpa_supplicant/driver_i.h | 223 +- contrib/wpa/wpa_supplicant/eap_register.c | 7 - contrib/wpa/wpa_supplicant/eapol_test.c | 5 +- contrib/wpa/wpa_supplicant/events.c | 1449 ++++- contrib/wpa/wpa_supplicant/gas_query.c | 95 +- contrib/wpa/wpa_supplicant/hs20_supplicant.c | 997 +--- contrib/wpa/wpa_supplicant/hs20_supplicant.h | 20 +- contrib/wpa/wpa_supplicant/ibss_rsn.c | 14 +- contrib/wpa/wpa_supplicant/interworking.c | 64 +- contrib/wpa/wpa_supplicant/main.c | 52 +- contrib/wpa/wpa_supplicant/mbo.c | 6 +- contrib/wpa/wpa_supplicant/mesh.c | 98 +- contrib/wpa/wpa_supplicant/mesh_mpm.c | 4 +- contrib/wpa/wpa_supplicant/mesh_rsn.c | 31 +- contrib/wpa/wpa_supplicant/nan_supplicant.c | 5003 ++++++++++++++++ contrib/wpa/wpa_supplicant/nan_supplicant.h | 252 + contrib/wpa/wpa_supplicant/nan_usd.c | 513 -- contrib/wpa/wpa_supplicant/nan_usd.h | 46 - contrib/wpa/wpa_supplicant/notify.c | 591 +- contrib/wpa/wpa_supplicant/notify.h | 98 + contrib/wpa/wpa_supplicant/offchannel.c | 4 +- contrib/wpa/wpa_supplicant/op_classes.c | 9 +- contrib/wpa/wpa_supplicant/p2p_supplicant.c | 1914 +++++- contrib/wpa/wpa_supplicant/p2p_supplicant.h | 52 +- contrib/wpa/wpa_supplicant/pasn_supplicant.c | 811 ++- contrib/wpa/wpa_supplicant/pr_supplicant.c | 1807 ++++++ contrib/wpa/wpa_supplicant/pr_supplicant.h | 148 + contrib/wpa/wpa_supplicant/preauth_test.c | 2 +- contrib/wpa/wpa_supplicant/robust_av.c | 278 +- contrib/wpa/wpa_supplicant/rrm.c | 125 +- contrib/wpa/wpa_supplicant/scan.c | 611 +- contrib/wpa/wpa_supplicant/scan.h | 3 + contrib/wpa/wpa_supplicant/sme.c | 2841 +++++++-- contrib/wpa/wpa_supplicant/sme.h | 22 +- contrib/wpa/wpa_supplicant/wnm_sta.c | 976 ++-- contrib/wpa/wpa_supplicant/wnm_sta.h | 5 +- contrib/wpa/wpa_supplicant/wpa_cli.c | 338 +- contrib/wpa/wpa_supplicant/wpa_passphrase.c | 10 +- contrib/wpa/wpa_supplicant/wpa_supplicant.c | 1520 ++++- contrib/wpa/wpa_supplicant/wpa_supplicant.conf | 96 + contrib/wpa/wpa_supplicant/wpa_supplicant_i.h | 314 +- contrib/wpa/wpa_supplicant/wpas_glue.c | 69 +- contrib/wpa/wpa_supplicant/wpas_kay.c | 1 + contrib/wpa/wpa_supplicant/wpas_module_tests.c | 5 + contrib/wpa/wpa_supplicant/wps_supplicant.c | 7 +- usr.sbin/wpa/Makefile.inc | 11 + usr.sbin/wpa/hostapd/Makefile | 9 +- usr.sbin/wpa/src/ap/Makefile | 7 + usr.sbin/wpa/src/common/Makefile | 1 + usr.sbin/wpa/src/crypto/Makefile | 5 +- usr.sbin/wpa/src/pasn/Makefile | 3 +- 336 files changed, 90636 insertions(+), 25473 deletions(-) diff --cc contrib/wpa/Makefile index 000000000000,000000000000..c4b1498cff9f new file mode 100644 --- /dev/null +++ b/contrib/wpa/Makefile @@@ -1,0 -1,0 +1,10 @@@ ++SUBDIRS=$(wildcard hostapd) $(wildcard wpa_supplicant) ++ ++all: ++ for dir in $(SUBDIRS); do $(MAKE) -C $$dir; done ++ ++clean distclean: ++ for dir in $(SUBDIRS); do $(MAKE) -C $$dir clean; done ++ ++install: ++ for dir in $(SUBDIRS); do $(MAKE) -C $$dir install; done diff --cc contrib/wpa/src/ap/afc.c index 000000000000,fed4d940ee3d..fed4d940ee3d mode 000000,100644..100644 --- a/contrib/wpa/src/ap/afc.c +++ b/contrib/wpa/src/ap/afc.c diff --cc contrib/wpa/src/ap/interference.c index 000000000000,c93cdc75f13f..c93cdc75f13f mode 000000,100644..100644 --- a/contrib/wpa/src/ap/interference.c +++ b/contrib/wpa/src/ap/interference.c diff --cc contrib/wpa/src/ap/interference.h index 000000000000,fb13abab1573..fb13abab1573 mode 000000,100644..100644 --- a/contrib/wpa/src/ap/interference.h +++ b/contrib/wpa/src/ap/interference.h diff --cc contrib/wpa/src/common/nan_defs.h index 000000000000,88b46eaf3ce0..88b46eaf3ce0 mode 000000,100644..100644 --- a/contrib/wpa/src/common/nan_defs.h +++ b/contrib/wpa/src/common/nan_defs.h diff --cc contrib/wpa/src/common/proc_coord.c index 000000000000,ac9157878820..ac9157878820 mode 000000,100644..100644 --- a/contrib/wpa/src/common/proc_coord.c +++ b/contrib/wpa/src/common/proc_coord.c diff --cc contrib/wpa/src/common/proc_coord.h index 000000000000,8eae443444f2..8eae443444f2 mode 000000,100644..100644 --- a/contrib/wpa/src/common/proc_coord.h +++ b/contrib/wpa/src/common/proc_coord.h diff --cc contrib/wpa/src/common/proximity_ranging.c index 000000000000,a230043f56e8..a230043f56e8 mode 000000,100644..100644 --- a/contrib/wpa/src/common/proximity_ranging.c +++ b/contrib/wpa/src/common/proximity_ranging.c diff --cc contrib/wpa/src/common/proximity_ranging.h index 000000000000,6ce9f69224bd..6ce9f69224bd mode 000000,100644..100644 --- a/contrib/wpa/src/common/proximity_ranging.h +++ b/contrib/wpa/src/common/proximity_ranging.h diff --cc contrib/wpa/src/nan/Makefile index 000000000000,5fd3e72e2de8..5fd3e72e2de8 mode 000000,100644..100644 --- a/contrib/wpa/src/nan/Makefile +++ b/contrib/wpa/src/nan/Makefile diff --cc contrib/wpa/src/nan/nan.c index 000000000000,a62edd10257e..a62edd10257e mode 000000,100644..100644 --- a/contrib/wpa/src/nan/nan.c +++ b/contrib/wpa/src/nan/nan.c diff --cc contrib/wpa/src/nan/nan.h index 000000000000,c8a0594ef072..c8a0594ef072 mode 000000,100644..100644 --- a/contrib/wpa/src/nan/nan.h +++ b/contrib/wpa/src/nan/nan.h diff --cc contrib/wpa/src/nan/nan_bootstrap.c index 000000000000,399ea66a9638..399ea66a9638 mode 000000,100644..100644 --- a/contrib/wpa/src/nan/nan_bootstrap.c +++ b/contrib/wpa/src/nan/nan_bootstrap.c diff --cc contrib/wpa/src/nan/nan_crypto.c index 000000000000,9eee2a3d8198..9eee2a3d8198 mode 000000,100644..100644 --- a/contrib/wpa/src/nan/nan_crypto.c +++ b/contrib/wpa/src/nan/nan_crypto.c diff --cc contrib/wpa/src/nan/nan_i.h index 000000000000,5a9f2b5e9487..5a9f2b5e9487 mode 000000,100644..100644 --- a/contrib/wpa/src/nan/nan_i.h +++ b/contrib/wpa/src/nan/nan_i.h diff --cc contrib/wpa/src/nan/nan_module_test_cases.c index 000000000000,943fb829d089..943fb829d089 mode 000000,100644..100644 --- a/contrib/wpa/src/nan/nan_module_test_cases.c +++ b/contrib/wpa/src/nan/nan_module_test_cases.c diff --cc contrib/wpa/src/nan/nan_module_tests.c index 000000000000,61d126d46ee2..61d126d46ee2 mode 000000,100644..100644 --- a/contrib/wpa/src/nan/nan_module_tests.c +++ b/contrib/wpa/src/nan/nan_module_tests.c diff --cc contrib/wpa/src/nan/nan_module_tests.h index 000000000000,dd6fa4b22f1e..dd6fa4b22f1e mode 000000,100644..100644 --- a/contrib/wpa/src/nan/nan_module_tests.h +++ b/contrib/wpa/src/nan/nan_module_tests.h diff --cc contrib/wpa/src/nan/nan_ndl.c index 000000000000,ce0e212cbefb..ce0e212cbefb mode 000000,100644..100644 --- a/contrib/wpa/src/nan/nan_ndl.c +++ b/contrib/wpa/src/nan/nan_ndl.c diff --cc contrib/wpa/src/nan/nan_ndp.c index 000000000000,74bd263070d8..74bd263070d8 mode 000000,100644..100644 --- a/contrib/wpa/src/nan/nan_ndp.c +++ b/contrib/wpa/src/nan/nan_ndp.c diff --cc contrib/wpa/src/nan/nan_pairing.c index 000000000000,cb3b854fb64b..cb3b854fb64b mode 000000,100644..100644 --- a/contrib/wpa/src/nan/nan_pairing.c +++ b/contrib/wpa/src/nan/nan_pairing.c diff --cc contrib/wpa/src/nan/nan_sec.c index 000000000000,8561c7cd3495..8561c7cd3495 mode 000000,100644..100644 --- a/contrib/wpa/src/nan/nan_sec.c +++ b/contrib/wpa/src/nan/nan_sec.c diff --cc contrib/wpa/src/nan/nan_util.c index 000000000000,7464a00b18d1..7464a00b18d1 mode 000000,100644..100644 --- a/contrib/wpa/src/nan/nan_util.c +++ b/contrib/wpa/src/nan/nan_util.c diff --cc contrib/wpa/wpa_supplicant/main.c index e13abc407a93,000000000000..3f55446e754e mode 100644,000000..100644 --- a/contrib/wpa/wpa_supplicant/main.c +++ b/contrib/wpa/wpa_supplicant/main.c @@@ -1,410 -1,0 +1,444 @@@ +/* + * WPA Supplicant / main() function for UNIX like OSes and MinGW + * Copyright (c) 2003-2013, Jouni Malinen + * + * This software may be distributed under the terms of the BSD license. + * See README for more details. + */ + +#include "includes.h" +#ifdef __linux__ +#include +#endif /* __linux__ */ + +#include "common.h" +#include "crypto/crypto.h" +#include "fst/fst.h" +#include "wpa_supplicant_i.h" +#include "driver_i.h" +#include "p2p_supplicant.h" + + +static void usage(void) +{ + int i; + printf("%s\n\n%s\n" + "usage:\n" + " wpa_supplicant [-BddhKLqq" +#ifdef CONFIG_DEBUG_SYSLOG + "s" +#endif /* CONFIG_DEBUG_SYSLOG */ + "t" +#ifdef CONFIG_CTRL_IFACE_DBUS_NEW + "u" +#endif /* CONFIG_CTRL_IFACE_DBUS_NEW */ - "vW] [-P] " ++ "vWy] [-P] " + "[-g] \\\n" + " [-G] \\\n" - " -i -c [-C] [-D] " ++ " [-i] -c [-C] [-D] " + "[-p] \\\n" + " [-b] [-e]" +#ifdef CONFIG_DEBUG_FILE + " [-f]" +#endif /* CONFIG_DEBUG_FILE */ + " \\\n" ++#ifdef CONFIG_PROCESS_COORDINATION ++ " [-z] \\\n" ++#endif /* CONFIG_PROCESS_COORDINATION */ + " [-o] [-O] \\\n" + " [-N -i -c [-C] " + "[-D] \\\n" +#ifdef CONFIG_P2P + " [-m] \\\n" +#endif /* CONFIG_P2P */ + " [-p] [-b] [-I] " + "...]\n" + "\n" + "drivers:\n", + wpa_supplicant_version, wpa_supplicant_license); + + for (i = 0; wpa_drivers[i]; i++) { + printf(" %s = %s\n", + wpa_drivers[i]->name, + wpa_drivers[i]->desc); + } + +#ifndef CONFIG_NO_STDOUT_DEBUG + printf("options:\n" + " -b = optional bridge interface name\n" + " -B = run daemon in the background\n" + " -c = Configuration file\n" + " -C = ctrl_interface parameter (only used if -c is not)\n" + " -d = increase debugging verbosity (-dd even more)\n" + " -D = driver name (can be multiple drivers: bsd,wired)\n" + " -e = entropy file\n" +#ifdef CONFIG_DEBUG_FILE + " -f = log output to debug file instead of stdout\n" +#endif /* CONFIG_DEBUG_FILE */ + " -g = global ctrl_interface\n" + " -G = global ctrl_interface group\n" + " -h = show this help text\n" + " -i = interface name\n" + " -I = additional configuration file\n" + " -K = include keys (passwords, etc.) in debug output\n" + " -L = show license (BSD)\n" +#ifdef CONFIG_P2P + " -m = Configuration file for the P2P Device interface\n" +#endif /* CONFIG_P2P */ +#ifdef CONFIG_MATCH_IFACE + " -M = start describing new matching interface\n" +#endif /* CONFIG_MATCH_IFACE */ + " -N = start describing new interface\n" + " -o = override driver parameter for new interfaces\n" + " -O = override ctrl_interface parameter for new interfaces\n" + " -p = driver parameters\n" + " -P = PID file\n" + " -q = decrease debugging verbosity (-qq even less)\n" +#ifdef CONFIG_DEBUG_SYSLOG + " -s = log output to syslog instead of stdout\n" +#endif /* CONFIG_DEBUG_SYSLOG */ + " -t = include timestamp in debug messages\n" +#ifdef CONFIG_DEBUG_LINUX_TRACING + " -T = record to Linux tracing in addition to logging\n" + " (records all messages regardless of debug verbosity)\n" +#endif /* CONFIG_DEBUG_LINUX_TRACING */ +#ifdef CONFIG_CTRL_IFACE_DBUS_NEW + " -u = enable DBus control interface\n" +#endif /* CONFIG_CTRL_IFACE_DBUS_NEW */ + " -v = show version\n" - " -W = wait for a control interface monitor before starting\n"); ++ " -W = wait for a control interface monitor before starting\n" ++ " -y = show configuration parsing details in debug log\n" ++#ifdef CONFIG_PROCESS_COORDINATION ++ " -z = process coordination directory\n" ++#endif /* CONFIG_PROCESS_COORDINATION */ ++ ); + + printf("example:\n" - " wpa_supplicant -Dbsd -iwlan0 -c/etc/wpa_supplicant.conf\n"); ++ " wpa_supplicant -Dbsd -iwlan0 -c/etc/wpa_supplicant.conf\n", ++ wpa_drivers[0] ? wpa_drivers[0]->name : "nl80211"); ++ printf("\nIf run without specifying a network interface or control interface, a\n" ++ "configuration file is parsed without starting any operation.\n" ++ "This can be used to check whether a configuration file has valid contents.\n"); +#endif /* CONFIG_NO_STDOUT_DEBUG */ +} + + +static void license(void) +{ +#ifndef CONFIG_NO_STDOUT_DEBUG + printf("%s\n\n%s%s%s%s%s\n", + wpa_supplicant_version, + wpa_supplicant_full_license1, + wpa_supplicant_full_license2, + wpa_supplicant_full_license3, + wpa_supplicant_full_license4, + wpa_supplicant_full_license5); +#endif /* CONFIG_NO_STDOUT_DEBUG */ +} + + +static void wpa_supplicant_fd_workaround(int start) +{ +#ifdef __linux__ + static int fd[3] = { -1, -1, -1 }; + int i; + /* When started from pcmcia-cs scripts, wpa_supplicant might start with + * fd 0, 1, and 2 closed. This will cause some issues because many + * places in wpa_supplicant are still printing out to stdout. As a + * workaround, make sure that fd's 0, 1, and 2 are not used for other + * sockets. */ + if (start) { + for (i = 0; i < 3; i++) { + fd[i] = open("/dev/null", O_RDWR); + if (fd[i] > 2) { + close(fd[i]); + fd[i] = -1; + break; + } + } + } else { + for (i = 0; i < 3; i++) { + if (fd[i] >= 0) { + close(fd[i]); + fd[i] = -1; + } + } + } +#endif /* __linux__ */ +} + + +#ifdef CONFIG_MATCH_IFACE +static int wpa_supplicant_init_match(struct wpa_global *global) +{ + /* + * The assumption is that the first driver is the primary driver and + * will handle the arrival / departure of interfaces. + */ + if (wpa_drivers[0]->global_init && !global->drv_priv[0]) { + global->drv_priv[0] = wpa_drivers[0]->global_init(global); + if (!global->drv_priv[0]) { + wpa_printf(MSG_ERROR, + "Failed to initialize driver '%s'", + wpa_drivers[0]->name); + return -1; + } + } + + return 0; +} +#endif /* CONFIG_MATCH_IFACE */ + + +int main(int argc, char *argv[]) +{ + int c, i; + struct wpa_interface *ifaces, *iface; + int iface_count, exitcode = -1; + struct wpa_params params; + struct wpa_global *global; + + if (os_program_init()) + return -1; + + os_memset(¶ms, 0, sizeof(params)); + params.wpa_debug_level = MSG_INFO; + + iface = ifaces = os_zalloc(sizeof(struct wpa_interface)); + if (ifaces == NULL) + return -1; + iface_count = 1; + + wpa_supplicant_fd_workaround(1); + + for (;;) { + c = getopt(argc, argv, - "b:Bc:C:D:de:f:g:G:hi:I:KLMm:No:O:p:P:qsTtuvW"); ++ "b:Bc:C:D:de:f:g:G:hi:I:KLMm:No:O:p:P:qsTtuvWyz:"); + if (c < 0) + break; + switch (c) { + case 'b': + iface->bridge_ifname = optarg; + break; + case 'B': + params.daemonize++; + break; + case 'c': + iface->confname = optarg; + break; + case 'C': + iface->ctrl_interface = optarg; + break; + case 'D': + iface->driver = optarg; + break; + case 'd': +#ifdef CONFIG_NO_STDOUT_DEBUG + printf("Debugging disabled with " + "CONFIG_NO_STDOUT_DEBUG=y build time " + "option.\n"); + goto out; +#else /* CONFIG_NO_STDOUT_DEBUG */ + params.wpa_debug_level--; + break; +#endif /* CONFIG_NO_STDOUT_DEBUG */ + case 'e': + params.entropy_file = optarg; + break; +#ifdef CONFIG_DEBUG_FILE + case 'f': + params.wpa_debug_file_path = optarg; + break; +#endif /* CONFIG_DEBUG_FILE */ + case 'g': + params.ctrl_interface = optarg; + break; + case 'G': + params.ctrl_interface_group = optarg; + break; + case 'h': + usage(); + exitcode = 0; + goto out; + case 'i': + iface->ifname = optarg; + break; + case 'I': + iface->confanother = optarg; + break; + case 'K': + params.wpa_debug_show_keys++; + break; + case 'L': + license(); + exitcode = 0; + goto out; +#ifdef CONFIG_P2P + case 'm': - params.conf_p2p_dev = optarg; ++ os_free(params.conf_p2p_dev); ++ params.conf_p2p_dev = os_rel2abs_path(optarg); + break; +#endif /* CONFIG_P2P */ + case 'o': + params.override_driver = optarg; + break; + case 'O': + params.override_ctrl_interface = optarg; + break; + case 'p': + iface->driver_param = optarg; + break; + case 'P': + os_free(params.pid_file); + params.pid_file = os_rel2abs_path(optarg); + break; + case 'q': + params.wpa_debug_level++; + break; +#ifdef CONFIG_DEBUG_SYSLOG + case 's': + params.wpa_debug_syslog++; + break; +#endif /* CONFIG_DEBUG_SYSLOG */ +#ifdef CONFIG_DEBUG_LINUX_TRACING + case 'T': + params.wpa_debug_tracing++; + break; +#endif /* CONFIG_DEBUG_LINUX_TRACING */ + case 't': + params.wpa_debug_timestamp++; + break; +#ifdef CONFIG_CTRL_IFACE_DBUS_NEW + case 'u': + params.dbus_ctrl_interface = 1; + break; +#endif /* CONFIG_CTRL_IFACE_DBUS_NEW */ + case 'v': + printf("%s\n", wpa_supplicant_version); + exitcode = 0; + goto out; + case 'W': + params.wait_for_monitor++; + break; +#ifdef CONFIG_MATCH_IFACE + case 'M': + params.match_iface_count++; + iface = os_realloc_array(params.match_ifaces, + params.match_iface_count, + sizeof(struct wpa_interface)); + if (!iface) + goto out; + params.match_ifaces = iface; + iface = ¶ms.match_ifaces[params.match_iface_count - + 1]; + os_memset(iface, 0, sizeof(*iface)); + break; +#endif /* CONFIG_MATCH_IFACE */ + case 'N': + iface_count++; + iface = os_realloc_array(ifaces, iface_count, + sizeof(struct wpa_interface)); + if (iface == NULL) + goto out; + ifaces = iface; + iface = &ifaces[iface_count - 1]; + os_memset(iface, 0, sizeof(*iface)); + break; ++ case 'y': ++ params.show_details = true; ++ break; ++#ifdef CONFIG_PROCESS_COORDINATION ++ case 'z': ++ params.proc_coord_dir = optarg; ++ break; ++#endif /* CONFIG_PROCESS_COORDINATION */ + default: + usage(); + exitcode = 0; + goto out; + } + } + + exitcode = 0; + global = wpa_supplicant_init(¶ms); + if (global == NULL) { + wpa_printf(MSG_ERROR, "Failed to initialize wpa_supplicant"); + exitcode = -1; + goto out; - } else { - wpa_printf(MSG_INFO, "Successfully initialized " - "wpa_supplicant"); + } + ++ if (iface_count == 1 && ifaces[0].confname && !ifaces[0].ifname && ++#ifdef CONFIG_MATCH_IFACE ++ !params.match_iface_count && ++#endif /* CONFIG_MATCH_IFACE */ ++ !ifaces[0].ctrl_interface && !params.dbus_ctrl_interface) { ++ exitcode = wpa_supplicant_parse_config(ifaces[0].confname); ++ wpa_supplicant_deinit(global); ++ goto out; ++ } ++ ++ wpa_printf(MSG_INFO, "Successfully initialized wpa_supplicant"); ++ + if (fst_global_init()) { + wpa_printf(MSG_ERROR, "Failed to initialize FST"); ++ wpa_supplicant_deinit(global); + exitcode = -1; + goto out; + } + +#if defined(CONFIG_FST) && defined(CONFIG_CTRL_IFACE) + if (!fst_global_add_ctrl(fst_ctrl_cli)) + wpa_printf(MSG_WARNING, "Failed to add CLI FST ctrl"); +#endif + + for (i = 0; exitcode == 0 && i < iface_count; i++) { + struct wpa_supplicant *wpa_s; + + if ((ifaces[i].confname == NULL && + ifaces[i].ctrl_interface == NULL) || + ifaces[i].ifname == NULL) { + if (iface_count == 1 && (params.ctrl_interface || +#ifdef CONFIG_MATCH_IFACE + params.match_iface_count || +#endif /* CONFIG_MATCH_IFACE */ + params.dbus_ctrl_interface)) + break; + usage(); + exitcode = -1; + break; + } + wpa_s = wpa_supplicant_add_iface(global, &ifaces[i], NULL); + if (wpa_s == NULL) { + exitcode = -1; + break; + } + } + +#ifdef CONFIG_MATCH_IFACE + if (exitcode == 0) + exitcode = wpa_supplicant_init_match(global); +#endif /* CONFIG_MATCH_IFACE */ + + if (exitcode == 0) + exitcode = wpa_supplicant_run(global); + + wpa_supplicant_deinit(global); + + fst_global_deinit(); *** 545 LINES SKIPPED ***