18d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt/* 28d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt * wpa_supplicant - Internal definitions 3fb79edc9df1f20461e90e478363d207348213d35Dmitry Shmidt * Copyright (c) 2003-2014, Jouni Malinen <j@w1.fi> 48d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt * 5c5ec7f57ead87efa365800228aa0b09a12d9e6c4Dmitry Shmidt * This software may be distributed under the terms of the BSD license. 6c5ec7f57ead87efa365800228aa0b09a12d9e6c4Dmitry Shmidt * See README for more details. 78d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt */ 88d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 98d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt#ifndef WPA_SUPPLICANT_I_H 108d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt#define WPA_SUPPLICANT_I_H 118d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 128d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt#include "utils/list.h" 138d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt#include "common/defs.h" 14a54fa5fb807eaeff45464139b5a7759f060cec68Dmitry Shmidt#include "common/sae.h" 152e67f06149ff649fb6f8782bad041d3d9124685eDmitry Shmidt#include "common/wpa_ctrl.h" 16cf32e60fa7e0d33fe1551a6dba8dcbbec47ea50eDmitry Shmidt#include "wps/wps_defs.h" 1775ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen#include "config_ssid.h" 186c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt#include "wmm_ac.h" 198d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 201d755d025b206e22b06aeb322e25a79f98ca7777Dmitry Shmidtextern const char *const wpa_supplicant_version; 211d755d025b206e22b06aeb322e25a79f98ca7777Dmitry Shmidtextern const char *const wpa_supplicant_license; 228d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt#ifndef CONFIG_NO_STDOUT_DEBUG 231d755d025b206e22b06aeb322e25a79f98ca7777Dmitry Shmidtextern const char *const wpa_supplicant_full_license1; 241d755d025b206e22b06aeb322e25a79f98ca7777Dmitry Shmidtextern const char *const wpa_supplicant_full_license2; 251d755d025b206e22b06aeb322e25a79f98ca7777Dmitry Shmidtextern const char *const wpa_supplicant_full_license3; 261d755d025b206e22b06aeb322e25a79f98ca7777Dmitry Shmidtextern const char *const wpa_supplicant_full_license4; 271d755d025b206e22b06aeb322e25a79f98ca7777Dmitry Shmidtextern const char *const wpa_supplicant_full_license5; 288d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt#endif /* CONFIG_NO_STDOUT_DEBUG */ 298d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 308d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtstruct wpa_sm; 318d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtstruct wpa_supplicant; 328d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtstruct ibss_rsn; 338d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtstruct scan_info; 348d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtstruct wpa_bss; 358d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtstruct wpa_scan_results; 368d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtstruct hostapd_hw_modes; 37c5ec7f57ead87efa365800228aa0b09a12d9e6c4Dmitry Shmidtstruct wpa_driver_associate_params; 388d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 398d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt/* 408d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt * Forward declarations of private structures used within the ctrl_iface 418d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt * backends. Other parts of wpa_supplicant do not have access to data stored in 428d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt * these structures. 438d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt */ 448d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtstruct ctrl_iface_priv; 458d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtstruct ctrl_iface_global_priv; 468d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtstruct wpas_dbus_priv; 478d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 488d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt/** 498d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt * struct wpa_interface - Parameters for wpa_supplicant_add_iface() 508d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt */ 518d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtstruct wpa_interface { 528d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt /** 538d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt * confname - Configuration name (file or profile) name 548d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt * 558d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt * This can also be %NULL when a configuration file is not used. In 568d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt * that case, ctrl_interface must be set to allow the interface to be 578d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt * configured. 588d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt */ 598d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt const char *confname; 608d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 618d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt /** 625d1c8ad11de48ba5e449e83e1e5dcd844e9c35d1Jouni Malinen * confanother - Additional configuration name (file or profile) name 6364f47c5c24428834677459e048420f86e3514c20Dmitry Shmidt * 645d1c8ad11de48ba5e449e83e1e5dcd844e9c35d1Jouni Malinen * This can also be %NULL when the additional configuration file is not 655d1c8ad11de48ba5e449e83e1e5dcd844e9c35d1Jouni Malinen * used. 6664f47c5c24428834677459e048420f86e3514c20Dmitry Shmidt */ 6764f47c5c24428834677459e048420f86e3514c20Dmitry Shmidt const char *confanother; 6864f47c5c24428834677459e048420f86e3514c20Dmitry Shmidt 6964f47c5c24428834677459e048420f86e3514c20Dmitry Shmidt /** 708d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt * ctrl_interface - Control interface parameter 718d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt * 728d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt * If a configuration file is not used, this variable can be used to 738d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt * set the ctrl_interface parameter that would have otherwise been read 748d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt * from the configuration file. If both confname and ctrl_interface are 758d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt * set, ctrl_interface is used to override the value from configuration 768d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt * file. 778d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt */ 788d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt const char *ctrl_interface; 798d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 808d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt /** 818d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt * driver - Driver interface name, or %NULL to use the default driver 828d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt */ 838d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt const char *driver; 848d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 858d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt /** 868d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt * driver_param - Driver interface parameters 878d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt * 888d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt * If a configuration file is not used, this variable can be used to 898d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt * set the driver_param parameters that would have otherwise been read 908d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt * from the configuration file. If both confname and driver_param are 918d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt * set, driver_param is used to override the value from configuration 928d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt * file. 938d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt */ 948d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt const char *driver_param; 958d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 968d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt /** 978d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt * ifname - Interface name 988d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt */ 998d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt const char *ifname; 1008d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 1018d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt /** 1028d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt * bridge_ifname - Optional bridge interface name 1038d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt * 1048d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt * If the driver interface (ifname) is included in a Linux bridge 1058d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt * device, the bridge interface may need to be used for receiving EAPOL 1068d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt * frames. This can be enabled by setting this variable to enable 1078d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt * receiving of EAPOL frames from an additional interface. 1088d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt */ 1098d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt const char *bridge_ifname; 11034af306c42b7ccf956508e7cd23f0ba90606e360Dmitry Shmidt 11134af306c42b7ccf956508e7cd23f0ba90606e360Dmitry Shmidt /** 11234af306c42b7ccf956508e7cd23f0ba90606e360Dmitry Shmidt * p2p_mgmt - Interface used for P2P management (P2P Device operations) 11334af306c42b7ccf956508e7cd23f0ba90606e360Dmitry Shmidt * 11434af306c42b7ccf956508e7cd23f0ba90606e360Dmitry Shmidt * Indicates whether wpas_p2p_init() must be called for this interface. 11534af306c42b7ccf956508e7cd23f0ba90606e360Dmitry Shmidt * This is used only when the driver supports a dedicated P2P Device 11634af306c42b7ccf956508e7cd23f0ba90606e360Dmitry Shmidt * interface that is not a network interface. 11734af306c42b7ccf956508e7cd23f0ba90606e360Dmitry Shmidt */ 11834af306c42b7ccf956508e7cd23f0ba90606e360Dmitry Shmidt int p2p_mgmt; 1198d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt}; 1208d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 1218d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt/** 1228d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt * struct wpa_params - Parameters for wpa_supplicant_init() 1238d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt */ 1248d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtstruct wpa_params { 1258d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt /** 1268d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt * daemonize - Run %wpa_supplicant in the background 1278d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt */ 1288d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt int daemonize; 1298d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 1308d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt /** 1318d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt * wait_for_monitor - Wait for a monitor program before starting 1328d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt */ 1338d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt int wait_for_monitor; 1348d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 1358d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt /** 1368d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt * pid_file - Path to a PID (process ID) file 1378d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt * 1388d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt * If this and daemonize are set, process ID of the background process 1398d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt * will be written to the specified file. 1408d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt */ 1418d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt char *pid_file; 1428d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 1438d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt /** 1448d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt * wpa_debug_level - Debugging verbosity level (e.g., MSG_INFO) 1458d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt */ 1468d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt int wpa_debug_level; 1478d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 1488d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt /** 1498d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt * wpa_debug_show_keys - Whether keying material is included in debug 1508d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt * 1518d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt * This parameter can be used to allow keying material to be included 1528d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt * in debug messages. This is a security risk and this option should 1538d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt * not be enabled in normal configuration. If needed during 1548d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt * development or while troubleshooting, this option can provide more 1558d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt * details for figuring out what is happening. 1568d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt */ 1578d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt int wpa_debug_show_keys; 1588d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 1598d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt /** 1608d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt * wpa_debug_timestamp - Whether to include timestamp in debug messages 1618d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt */ 1628d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt int wpa_debug_timestamp; 1638d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 1648d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt /** 1658d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt * ctrl_interface - Global ctrl_iface path/parameter 1668d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt */ 1678d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt char *ctrl_interface; 1688d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 1698d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt /** 170b6e9aaf735990dc64cdb6efccc03d076768eabf3Dmitry Shmidt * ctrl_interface_group - Global ctrl_iface group 171b6e9aaf735990dc64cdb6efccc03d076768eabf3Dmitry Shmidt */ 172b6e9aaf735990dc64cdb6efccc03d076768eabf3Dmitry Shmidt char *ctrl_interface_group; 173b6e9aaf735990dc64cdb6efccc03d076768eabf3Dmitry Shmidt 174b6e9aaf735990dc64cdb6efccc03d076768eabf3Dmitry Shmidt /** 1758d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt * dbus_ctrl_interface - Enable the DBus control interface 1768d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt */ 1778d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt int dbus_ctrl_interface; 1788d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 1798d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt /** 1808d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt * wpa_debug_file_path - Path of debug file or %NULL to use stdout 1818d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt */ 1828d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt const char *wpa_debug_file_path; 1838d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 1848d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt /** 1858d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt * wpa_debug_syslog - Enable log output through syslog 1868d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt */ 1878d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt int wpa_debug_syslog; 1888d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 1898d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt /** 19004949598a23f501be6eec21697465fd46a28840aDmitry Shmidt * wpa_debug_tracing - Enable log output through Linux tracing 19104949598a23f501be6eec21697465fd46a28840aDmitry Shmidt */ 19204949598a23f501be6eec21697465fd46a28840aDmitry Shmidt int wpa_debug_tracing; 19304949598a23f501be6eec21697465fd46a28840aDmitry Shmidt 19404949598a23f501be6eec21697465fd46a28840aDmitry Shmidt /** 1958d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt * override_driver - Optional driver parameter override 1968d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt * 1978d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt * This parameter can be used to override the driver parameter in 1988d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt * dynamic interface addition to force a specific driver wrapper to be 1998d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt * used instead. 2008d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt */ 2018d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt char *override_driver; 2028d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 2038d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt /** 2048d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt * override_ctrl_interface - Optional ctrl_interface override 2058d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt * 2068d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt * This parameter can be used to override the ctrl_interface parameter 2078d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt * in dynamic interface addition to force a control interface to be 2088d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt * created. 2098d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt */ 2108d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt char *override_ctrl_interface; 21175ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen 21275ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen /** 21375ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen * entropy_file - Optional entropy file 21475ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen * 21575ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen * This parameter can be used to configure wpa_supplicant to maintain 21675ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen * its internal entropy store over restarts. 21775ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen */ 21875ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen char *entropy_file; 219a3dc30964aa24aea2b518246f6812663a1103490Dmitry Shmidt 220a3dc30964aa24aea2b518246f6812663a1103490Dmitry Shmidt#ifdef CONFIG_P2P 221a3dc30964aa24aea2b518246f6812663a1103490Dmitry Shmidt /** 222a3dc30964aa24aea2b518246f6812663a1103490Dmitry Shmidt * conf_p2p_dev - Configuration file used to hold the 223a3dc30964aa24aea2b518246f6812663a1103490Dmitry Shmidt * P2P Device configuration parameters. 224a3dc30964aa24aea2b518246f6812663a1103490Dmitry Shmidt * 225a3dc30964aa24aea2b518246f6812663a1103490Dmitry Shmidt * This can also be %NULL. In such a case, if a P2P Device dedicated 226a3dc30964aa24aea2b518246f6812663a1103490Dmitry Shmidt * interfaces is created, the main configuration file will be used. 227a3dc30964aa24aea2b518246f6812663a1103490Dmitry Shmidt */ 228a3dc30964aa24aea2b518246f6812663a1103490Dmitry Shmidt const char *conf_p2p_dev; 229a3dc30964aa24aea2b518246f6812663a1103490Dmitry Shmidt#endif /* CONFIG_P2P */ 230a3dc30964aa24aea2b518246f6812663a1103490Dmitry Shmidt 2318d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt}; 2328d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 2338d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtstruct p2p_srv_bonjour { 2348d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt struct dl_list list; 2358d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt struct wpabuf *query; 2368d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt struct wpabuf *resp; 2378d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt}; 2388d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 2398d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtstruct p2p_srv_upnp { 2408d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt struct dl_list list; 2418d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt u8 version; 2428d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt char *service; 2438d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt}; 2448d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 2458d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt/** 2468d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt * struct wpa_global - Internal, global data for all %wpa_supplicant interfaces 2478d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt * 2488d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt * This structure is initialized by calling wpa_supplicant_init() when starting 2498d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt * %wpa_supplicant. 2508d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt */ 2518d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtstruct wpa_global { 2528d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt struct wpa_supplicant *ifaces; 2538d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt struct wpa_params params; 2548d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt struct ctrl_iface_global_priv *ctrl_iface; 2558d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt struct wpas_dbus_priv *dbus; 2568d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt void **drv_priv; 2578d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt size_t drv_count; 2588d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt struct os_time suspend_time; 2598d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt struct p2p_data *p2p; 26004949598a23f501be6eec21697465fd46a28840aDmitry Shmidt struct wpa_supplicant *p2p_init_wpa_s; 2618d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt struct wpa_supplicant *p2p_group_formation; 262700a137ab366edc72e371da68ba187b4717ee660Dmitry Shmidt struct wpa_supplicant *p2p_invite_group; 2638d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt u8 p2p_dev_addr[ETH_ALEN]; 264fb79edc9df1f20461e90e478363d207348213d35Dmitry Shmidt struct os_reltime p2p_go_wait_client; 2658d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt struct dl_list p2p_srv_bonjour; /* struct p2p_srv_bonjour */ 2668d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt struct dl_list p2p_srv_upnp; /* struct p2p_srv_upnp */ 2678d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt int p2p_disabled; 26804949598a23f501be6eec21697465fd46a28840aDmitry Shmidt int cross_connection; 2694ce9c87407c036fc83eb5a6044ddf976c86f53fcDmitry Shmidt struct wpa_freq_range_list p2p_disallow_freq; 270cf32e60fa7e0d33fe1551a6dba8dcbbec47ea50eDmitry Shmidt struct wpa_freq_range_list p2p_go_avoid_freq; 2712fb777c379ad560c309c54b96c2c13291da23f54Dmitry Shmidt enum wpa_conc_pref { 2722fb777c379ad560c309c54b96c2c13291da23f54Dmitry Shmidt WPA_CONC_PREF_NOT_SET, 2732fb777c379ad560c309c54b96c2c13291da23f54Dmitry Shmidt WPA_CONC_PREF_STA, 2742fb777c379ad560c309c54b96c2c13291da23f54Dmitry Shmidt WPA_CONC_PREF_P2P 2752fb777c379ad560c309c54b96c2c13291da23f54Dmitry Shmidt } conc_pref; 276391c59f0632df8db1c325da1d31d479b2eedce45Dmitry Shmidt unsigned int p2p_per_sta_psk:1; 277fb79edc9df1f20461e90e478363d207348213d35Dmitry Shmidt unsigned int p2p_fail_on_wps_complete:1; 2786c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt unsigned int p2p_24ghz_social_channels:1; 279216983bceec7c450951e2fbcd076b5c75d432e57Dmitry Shmidt unsigned int pending_p2ps_group:1; 280216983bceec7c450951e2fbcd076b5c75d432e57Dmitry Shmidt unsigned int pending_group_iface_for_p2ps:1; 28161d9df3e62aaa0e87ad05452fcb95142159a17b6Dmitry Shmidt 28261d9df3e62aaa0e87ad05452fcb95142159a17b6Dmitry Shmidt#ifdef CONFIG_WIFI_DISPLAY 28361d9df3e62aaa0e87ad05452fcb95142159a17b6Dmitry Shmidt int wifi_display; 28461d9df3e62aaa0e87ad05452fcb95142159a17b6Dmitry Shmidt#define MAX_WFD_SUBELEMS 10 28561d9df3e62aaa0e87ad05452fcb95142159a17b6Dmitry Shmidt struct wpabuf *wfd_subelem[MAX_WFD_SUBELEMS]; 28661d9df3e62aaa0e87ad05452fcb95142159a17b6Dmitry Shmidt#endif /* CONFIG_WIFI_DISPLAY */ 287391c59f0632df8db1c325da1d31d479b2eedce45Dmitry Shmidt 288391c59f0632df8db1c325da1d31d479b2eedce45Dmitry Shmidt struct psk_list_entry *add_psk; /* From group formation */ 2898d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt}; 2908d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 2918d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 292a54fa5fb807eaeff45464139b5a7759f060cec68Dmitry Shmidt/** 29301904cfafd75a70b9f29c0220b90bdef45595491Dmitry Shmidt * struct wpa_radio - Internal data for per-radio information 29401904cfafd75a70b9f29c0220b90bdef45595491Dmitry Shmidt * 29501904cfafd75a70b9f29c0220b90bdef45595491Dmitry Shmidt * This structure is used to share data about configured interfaces 29601904cfafd75a70b9f29c0220b90bdef45595491Dmitry Shmidt * (struct wpa_supplicant) that share the same physical radio, e.g., to allow 29701904cfafd75a70b9f29c0220b90bdef45595491Dmitry Shmidt * better coordination of offchannel operations. 29801904cfafd75a70b9f29c0220b90bdef45595491Dmitry Shmidt */ 29901904cfafd75a70b9f29c0220b90bdef45595491Dmitry Shmidtstruct wpa_radio { 30001904cfafd75a70b9f29c0220b90bdef45595491Dmitry Shmidt char name[16]; /* from driver_ops get_radio_name() or empty if not 30101904cfafd75a70b9f29c0220b90bdef45595491Dmitry Shmidt * available */ 3022f74e36e84064ffa32f82f3decf36b653c7e4fadDmitry Shmidt unsigned int external_scan_running:1; 30301904cfafd75a70b9f29c0220b90bdef45595491Dmitry Shmidt struct dl_list ifaces; /* struct wpa_supplicant::radio_list entries */ 304fb79edc9df1f20461e90e478363d207348213d35Dmitry Shmidt struct dl_list work; /* struct wpa_radio_work::list entries */ 305fb79edc9df1f20461e90e478363d207348213d35Dmitry Shmidt}; 306fb79edc9df1f20461e90e478363d207348213d35Dmitry Shmidt 307fb79edc9df1f20461e90e478363d207348213d35Dmitry Shmidt/** 308fb79edc9df1f20461e90e478363d207348213d35Dmitry Shmidt * struct wpa_radio_work - Radio work item 309fb79edc9df1f20461e90e478363d207348213d35Dmitry Shmidt */ 310fb79edc9df1f20461e90e478363d207348213d35Dmitry Shmidtstruct wpa_radio_work { 311fb79edc9df1f20461e90e478363d207348213d35Dmitry Shmidt struct dl_list list; 312fb79edc9df1f20461e90e478363d207348213d35Dmitry Shmidt unsigned int freq; /* known frequency (MHz) or 0 for multiple/unknown */ 313fb79edc9df1f20461e90e478363d207348213d35Dmitry Shmidt const char *type; 314fb79edc9df1f20461e90e478363d207348213d35Dmitry Shmidt struct wpa_supplicant *wpa_s; 315fb79edc9df1f20461e90e478363d207348213d35Dmitry Shmidt void (*cb)(struct wpa_radio_work *work, int deinit); 316fb79edc9df1f20461e90e478363d207348213d35Dmitry Shmidt void *ctx; 317fb79edc9df1f20461e90e478363d207348213d35Dmitry Shmidt unsigned int started:1; 318fb79edc9df1f20461e90e478363d207348213d35Dmitry Shmidt struct os_reltime time; 319fb79edc9df1f20461e90e478363d207348213d35Dmitry Shmidt}; 320fb79edc9df1f20461e90e478363d207348213d35Dmitry Shmidt 321fb79edc9df1f20461e90e478363d207348213d35Dmitry Shmidtint radio_add_work(struct wpa_supplicant *wpa_s, unsigned int freq, 322fb79edc9df1f20461e90e478363d207348213d35Dmitry Shmidt const char *type, int next, 323fb79edc9df1f20461e90e478363d207348213d35Dmitry Shmidt void (*cb)(struct wpa_radio_work *work, int deinit), 324fb79edc9df1f20461e90e478363d207348213d35Dmitry Shmidt void *ctx); 325fb79edc9df1f20461e90e478363d207348213d35Dmitry Shmidtvoid radio_work_done(struct wpa_radio_work *work); 326bd14a57187b024f49f5b9ace55ef457d8d04650aDmitry Shmidtvoid radio_remove_works(struct wpa_supplicant *wpa_s, 327bd14a57187b024f49f5b9ace55ef457d8d04650aDmitry Shmidt const char *type, int remove_all); 328fb79edc9df1f20461e90e478363d207348213d35Dmitry Shmidtvoid radio_work_check_next(struct wpa_supplicant *wpa_s); 3292e425d69801667e42b4874548f2a49dc16e95617Dmitry Shmidtstruct wpa_radio_work * 3302e425d69801667e42b4874548f2a49dc16e95617Dmitry Shmidtradio_work_pending(struct wpa_supplicant *wpa_s, const char *type); 331fb79edc9df1f20461e90e478363d207348213d35Dmitry Shmidt 332fb79edc9df1f20461e90e478363d207348213d35Dmitry Shmidtstruct wpa_connect_work { 333fb79edc9df1f20461e90e478363d207348213d35Dmitry Shmidt unsigned int sme:1; 3342e425d69801667e42b4874548f2a49dc16e95617Dmitry Shmidt unsigned int bss_removed:1; 335fb79edc9df1f20461e90e478363d207348213d35Dmitry Shmidt struct wpa_bss *bss; 336fb79edc9df1f20461e90e478363d207348213d35Dmitry Shmidt struct wpa_ssid *ssid; 337fb79edc9df1f20461e90e478363d207348213d35Dmitry Shmidt}; 338fb79edc9df1f20461e90e478363d207348213d35Dmitry Shmidt 339fb79edc9df1f20461e90e478363d207348213d35Dmitry Shmidtint wpas_valid_bss_ssid(struct wpa_supplicant *wpa_s, struct wpa_bss *test_bss, 340fb79edc9df1f20461e90e478363d207348213d35Dmitry Shmidt struct wpa_ssid *test_ssid); 341fb79edc9df1f20461e90e478363d207348213d35Dmitry Shmidtvoid wpas_connect_work_free(struct wpa_connect_work *cwork); 342fb79edc9df1f20461e90e478363d207348213d35Dmitry Shmidtvoid wpas_connect_work_done(struct wpa_supplicant *wpa_s); 343fb79edc9df1f20461e90e478363d207348213d35Dmitry Shmidt 344fb79edc9df1f20461e90e478363d207348213d35Dmitry Shmidtstruct wpa_external_work { 345fb79edc9df1f20461e90e478363d207348213d35Dmitry Shmidt unsigned int id; 346fb79edc9df1f20461e90e478363d207348213d35Dmitry Shmidt char type[100]; 347fb79edc9df1f20461e90e478363d207348213d35Dmitry Shmidt unsigned int timeout; 34801904cfafd75a70b9f29c0220b90bdef45595491Dmitry Shmidt}; 34901904cfafd75a70b9f29c0220b90bdef45595491Dmitry Shmidt 35001904cfafd75a70b9f29c0220b90bdef45595491Dmitry Shmidt/** 351a54fa5fb807eaeff45464139b5a7759f060cec68Dmitry Shmidt * offchannel_send_action_result - Result of offchannel send Action frame 352a54fa5fb807eaeff45464139b5a7759f060cec68Dmitry Shmidt */ 3531f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidtenum offchannel_send_action_result { 354a54fa5fb807eaeff45464139b5a7759f060cec68Dmitry Shmidt OFFCHANNEL_SEND_ACTION_SUCCESS /**< Frame was send and acknowledged */, 355a54fa5fb807eaeff45464139b5a7759f060cec68Dmitry Shmidt OFFCHANNEL_SEND_ACTION_NO_ACK /**< Frame was sent, but not acknowledged 3561f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidt */, 357a54fa5fb807eaeff45464139b5a7759f060cec68Dmitry Shmidt OFFCHANNEL_SEND_ACTION_FAILED /**< Frame was not sent due to a failure 358a54fa5fb807eaeff45464139b5a7759f060cec68Dmitry Shmidt */ 3598d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt}; 3608d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 36161d9df3e62aaa0e87ad05452fcb95142159a17b6Dmitry Shmidtstruct wps_ap_info { 36261d9df3e62aaa0e87ad05452fcb95142159a17b6Dmitry Shmidt u8 bssid[ETH_ALEN]; 36361d9df3e62aaa0e87ad05452fcb95142159a17b6Dmitry Shmidt enum wps_ap_info_type { 36461d9df3e62aaa0e87ad05452fcb95142159a17b6Dmitry Shmidt WPS_AP_NOT_SEL_REG, 36561d9df3e62aaa0e87ad05452fcb95142159a17b6Dmitry Shmidt WPS_AP_SEL_REG, 36661d9df3e62aaa0e87ad05452fcb95142159a17b6Dmitry Shmidt WPS_AP_SEL_REG_OUR 36761d9df3e62aaa0e87ad05452fcb95142159a17b6Dmitry Shmidt } type; 36861d9df3e62aaa0e87ad05452fcb95142159a17b6Dmitry Shmidt unsigned int tries; 369fb79edc9df1f20461e90e478363d207348213d35Dmitry Shmidt struct os_reltime last_attempt; 370a3dc30964aa24aea2b518246f6812663a1103490Dmitry Shmidt unsigned int pbc_active; 371a3dc30964aa24aea2b518246f6812663a1103490Dmitry Shmidt u8 uuid[WPS_UUID_LEN]; 37261d9df3e62aaa0e87ad05452fcb95142159a17b6Dmitry Shmidt}; 37361d9df3e62aaa0e87ad05452fcb95142159a17b6Dmitry Shmidt 374d5e4923d04122f81300fa68fb07d64ede28fd44dDmitry Shmidtstruct wpa_ssid_value { 3759d9e60286e05ae45025b672636490bd12586138dDmitry Shmidt u8 ssid[SSID_MAX_LEN]; 376d5e4923d04122f81300fa68fb07d64ede28fd44dDmitry Shmidt size_t ssid_len; 377d5e4923d04122f81300fa68fb07d64ede28fd44dDmitry Shmidt}; 378d5e4923d04122f81300fa68fb07d64ede28fd44dDmitry Shmidt 37943cb578dfe2c492257636f6234a24178ed27789eDmitry Shmidt#define WPA_FREQ_USED_BY_INFRA_STATION BIT(0) 38043cb578dfe2c492257636f6234a24178ed27789eDmitry Shmidt#define WPA_FREQ_USED_BY_P2P_CLIENT BIT(1) 38143cb578dfe2c492257636f6234a24178ed27789eDmitry Shmidt 38243cb578dfe2c492257636f6234a24178ed27789eDmitry Shmidtstruct wpa_used_freq_data { 38343cb578dfe2c492257636f6234a24178ed27789eDmitry Shmidt int freq; 38443cb578dfe2c492257636f6234a24178ed27789eDmitry Shmidt unsigned int flags; 38543cb578dfe2c492257636f6234a24178ed27789eDmitry Shmidt}; 38643cb578dfe2c492257636f6234a24178ed27789eDmitry Shmidt 3876c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt#define RRM_NEIGHBOR_REPORT_TIMEOUT 1 /* 1 second for AP to send a report */ 3886c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt 3896c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt/* 3906c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt * struct rrm_data - Data used for managing RRM features 3916c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt */ 3926c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidtstruct rrm_data { 3936c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt /* rrm_used - indication regarding the current connection */ 3946c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt unsigned int rrm_used:1; 3956c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt 3966c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt /* 3976c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt * notify_neighbor_rep - Callback for notifying report requester 3986c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt */ 3996c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt void (*notify_neighbor_rep)(void *ctx, struct wpabuf *neighbor_rep); 4006c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt 4016c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt /* 4026c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt * neighbor_rep_cb_ctx - Callback context 4036c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt * Received in the callback registration, and sent to the callback 4046c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt * function as a parameter. 4056c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt */ 4066c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt void *neighbor_rep_cb_ctx; 4076c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt 4086c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt /* next_neighbor_rep_token - Next request's dialog token */ 4096c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt u8 next_neighbor_rep_token; 4106c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt}; 4116c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt 4122f74e36e84064ffa32f82f3decf36b653c7e4fadDmitry Shmidtenum wpa_supplicant_test_failure { 4132f74e36e84064ffa32f82f3decf36b653c7e4fadDmitry Shmidt WPAS_TEST_FAILURE_NONE, 4142f74e36e84064ffa32f82f3decf36b653c7e4fadDmitry Shmidt WPAS_TEST_FAILURE_SCAN_TRIGGER, 4152f74e36e84064ffa32f82f3decf36b653c7e4fadDmitry Shmidt}; 4162f74e36e84064ffa32f82f3decf36b653c7e4fadDmitry Shmidt 4178d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt/** 4188d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt * struct wpa_supplicant - Internal data for wpa_supplicant interface 4198d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt * 4208d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt * This structure contains the internal data for core wpa_supplicant code. This 4218d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt * should be only used directly from the core code. However, a pointer to this 4228d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt * data is used from other files as an arbitrary context pointer in calls to 4238d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt * core functions. 4248d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt */ 4258d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtstruct wpa_supplicant { 4268d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt struct wpa_global *global; 42701904cfafd75a70b9f29c0220b90bdef45595491Dmitry Shmidt struct wpa_radio *radio; /* shared radio context */ 42801904cfafd75a70b9f29c0220b90bdef45595491Dmitry Shmidt struct dl_list radio_list; /* list head: struct wpa_radio::ifaces */ 4298d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt struct wpa_supplicant *parent; 4308d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt struct wpa_supplicant *next; 4318d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt struct l2_packet_data *l2; 4328d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt struct l2_packet_data *l2_br; 4338d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt unsigned char own_addr[ETH_ALEN]; 434661b4f78e48c697429dc46154a4125892c001718Dmitry Shmidt unsigned char perm_addr[ETH_ALEN]; 4358d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt char ifname[100]; 4368d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt#ifdef CONFIG_CTRL_IFACE_DBUS 4378d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt char *dbus_path; 4388d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt#endif /* CONFIG_CTRL_IFACE_DBUS */ 4398d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt#ifdef CONFIG_CTRL_IFACE_DBUS_NEW 4408d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt char *dbus_new_path; 44175ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen char *dbus_groupobj_path; 44204949598a23f501be6eec21697465fd46a28840aDmitry Shmidt#ifdef CONFIG_AP 44304949598a23f501be6eec21697465fd46a28840aDmitry Shmidt char *preq_notify_peer; 44404949598a23f501be6eec21697465fd46a28840aDmitry Shmidt#endif /* CONFIG_AP */ 4458d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt#endif /* CONFIG_CTRL_IFACE_DBUS_NEW */ 4468d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt char bridge_ifname[16]; 4478d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 4488d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt char *confname; 44964f47c5c24428834677459e048420f86e3514c20Dmitry Shmidt char *confanother; 4502ac5f6049e74103a8fe8e9c78b330020081d7df4Dmitry Shmidt 4518d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt struct wpa_config *conf; 4528d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt int countermeasures; 453fb79edc9df1f20461e90e478363d207348213d35Dmitry Shmidt struct os_reltime last_michael_mic_error; 4548d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt u8 bssid[ETH_ALEN]; 4558d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt u8 pending_bssid[ETH_ALEN]; /* If wpa_state == WPA_ASSOCIATING, this 4561f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidt * field contains the target BSSID. */ 4578d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt int reassociate; /* reassociation requested */ 4586c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt int reassoc_same_bss; /* reassociating to the same bss */ 4598d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt int disconnected; /* all connections disabled; i.e., do no reassociate 4608d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt * before this has been cleared */ 4618d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt struct wpa_ssid *current_ssid; 462661b4f78e48c697429dc46154a4125892c001718Dmitry Shmidt struct wpa_ssid *last_ssid; 4638d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt struct wpa_bss *current_bss; 4648d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt int ap_ies_from_associnfo; 4658d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt unsigned int assoc_freq; 4668d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 4678d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt /* Selected configuration (based on Beacon/ProbeResp WPA IE) */ 4688d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt int pairwise_cipher; 4698d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt int group_cipher; 4708d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt int key_mgmt; 4711f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidt int wpa_proto; 4728d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt int mgmt_group_cipher; 4738d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 4748d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt void *drv_priv; /* private data used by driver_ops */ 4758d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt void *global_drv_priv; 4768d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 47704949598a23f501be6eec21697465fd46a28840aDmitry Shmidt u8 *bssid_filter; 47804949598a23f501be6eec21697465fd46a28840aDmitry Shmidt size_t bssid_filter_count; 47904949598a23f501be6eec21697465fd46a28840aDmitry Shmidt 480d5e4923d04122f81300fa68fb07d64ede28fd44dDmitry Shmidt u8 *disallow_aps_bssid; 481d5e4923d04122f81300fa68fb07d64ede28fd44dDmitry Shmidt size_t disallow_aps_bssid_count; 482d5e4923d04122f81300fa68fb07d64ede28fd44dDmitry Shmidt struct wpa_ssid_value *disallow_aps_ssid; 483d5e4923d04122f81300fa68fb07d64ede28fd44dDmitry Shmidt size_t disallow_aps_ssid_count; 484d5e4923d04122f81300fa68fb07d64ede28fd44dDmitry Shmidt 485b6e9aaf735990dc64cdb6efccc03d076768eabf3Dmitry Shmidt enum { WPA_SETBAND_AUTO, WPA_SETBAND_5G, WPA_SETBAND_2G } setband; 486b6e9aaf735990dc64cdb6efccc03d076768eabf3Dmitry Shmidt 487f21452aea786ac056eb01f1cbba4f553bd502747Dmitry Shmidt /* Preferred network for the next connection attempt */ 488f21452aea786ac056eb01f1cbba4f553bd502747Dmitry Shmidt struct wpa_ssid *next_ssid; 489f21452aea786ac056eb01f1cbba4f553bd502747Dmitry Shmidt 490c5ec7f57ead87efa365800228aa0b09a12d9e6c4Dmitry Shmidt /* previous scan was wildcard when interleaving between 491c5ec7f57ead87efa365800228aa0b09a12d9e6c4Dmitry Shmidt * wildcard scans and specific SSID scan when max_ssids=1 */ 492c5ec7f57ead87efa365800228aa0b09a12d9e6c4Dmitry Shmidt int prev_scan_wildcard; 4938d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt struct wpa_ssid *prev_scan_ssid; /* previously scanned SSID; 4948d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt * NULL = not yet initialized (start 4958d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt * with wildcard SSID) 4968d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt * WILDCARD_SSID_SCAN = wildcard 4978d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt * SSID was used in the previous scan 4988d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt */ 4998d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt#define WILDCARD_SSID_SCAN ((struct wpa_ssid *) 1) 5008d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 5011f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidt struct wpa_ssid *prev_sched_ssid; /* last SSID used in sched scan */ 5021f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidt int sched_scan_timeout; 5031f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidt int sched_scan_interval; 5041f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidt int first_sched_scan; 5051f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidt int sched_scan_timed_out; 5061f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidt 5078d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt void (*scan_res_handler)(struct wpa_supplicant *wpa_s, 5088d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt struct wpa_scan_results *scan_res); 5098d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt struct dl_list bss; /* struct wpa_bss::list */ 5108d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt struct dl_list bss_id; /* struct wpa_bss::list_id */ 5118d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt size_t num_bss; 5128d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt unsigned int bss_update_idx; 5138d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt unsigned int bss_next_id; 5148d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 5159bce59c7fef20e34a05f04d1e33a4076083dca0cDmitry Shmidt /* 5169bce59c7fef20e34a05f04d1e33a4076083dca0cDmitry Shmidt * Pointers to BSS entries in the order they were in the last scan 5179bce59c7fef20e34a05f04d1e33a4076083dca0cDmitry Shmidt * results. 5189bce59c7fef20e34a05f04d1e33a4076083dca0cDmitry Shmidt */ 5199bce59c7fef20e34a05f04d1e33a4076083dca0cDmitry Shmidt struct wpa_bss **last_scan_res; 5209bce59c7fef20e34a05f04d1e33a4076083dca0cDmitry Shmidt unsigned int last_scan_res_used; 5219bce59c7fef20e34a05f04d1e33a4076083dca0cDmitry Shmidt unsigned int last_scan_res_size; 522fb79edc9df1f20461e90e478363d207348213d35Dmitry Shmidt struct os_reltime last_scan; 5239bce59c7fef20e34a05f04d1e33a4076083dca0cDmitry Shmidt 5241d755d025b206e22b06aeb322e25a79f98ca7777Dmitry Shmidt const struct wpa_driver_ops *driver; 5258d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt int interface_removed; /* whether the network interface has been 5268d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt * removed */ 5278d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt struct wpa_sm *wpa; 5288d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt struct eapol_sm *eapol; 5298d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 5308d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt struct ctrl_iface_priv *ctrl_iface; 5318d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 5328d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt enum wpa_states wpa_state; 533fb79edc9df1f20461e90e478363d207348213d35Dmitry Shmidt struct wpa_radio_work *scan_work; 5348d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt int scanning; 5351f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidt int sched_scanning; 5368d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt int new_connection; 5378d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 5388d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt int eapol_received; /* number of EAPOL packets received after the 5398d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt * previous association event */ 5408d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 5418d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt struct scard_data *scard; 54204949598a23f501be6eec21697465fd46a28840aDmitry Shmidt char imsi[20]; 54304949598a23f501be6eec21697465fd46a28840aDmitry Shmidt int mnc_len; 5448d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 5458d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt unsigned char last_eapol_src[ETH_ALEN]; 5468d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 547fb79edc9df1f20461e90e478363d207348213d35Dmitry Shmidt unsigned int keys_cleared; /* bitfield of key indexes that the driver is 548fb79edc9df1f20461e90e478363d207348213d35Dmitry Shmidt * known not to be configured with a key */ 5498d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 5508d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt struct wpa_blacklist *blacklist; 5518d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 552d5e4923d04122f81300fa68fb07d64ede28fd44dDmitry Shmidt /** 553d5e4923d04122f81300fa68fb07d64ede28fd44dDmitry Shmidt * extra_blacklist_count - Sum of blacklist counts after last connection 554d5e4923d04122f81300fa68fb07d64ede28fd44dDmitry Shmidt * 555d5e4923d04122f81300fa68fb07d64ede28fd44dDmitry Shmidt * This variable is used to maintain a count of temporary blacklisting 556d5e4923d04122f81300fa68fb07d64ede28fd44dDmitry Shmidt * failures (maximum number for any BSS) over blacklist clear 557d5e4923d04122f81300fa68fb07d64ede28fd44dDmitry Shmidt * operations. This is needed for figuring out whether there has been 558d5e4923d04122f81300fa68fb07d64ede28fd44dDmitry Shmidt * failures prior to the last blacklist clear operation which happens 559d5e4923d04122f81300fa68fb07d64ede28fd44dDmitry Shmidt * whenever no other not-blacklisted BSS candidates are available. This 560d5e4923d04122f81300fa68fb07d64ede28fd44dDmitry Shmidt * gets cleared whenever a connection has been established successfully. 561d5e4923d04122f81300fa68fb07d64ede28fd44dDmitry Shmidt */ 562d5e4923d04122f81300fa68fb07d64ede28fd44dDmitry Shmidt int extra_blacklist_count; 563d5e4923d04122f81300fa68fb07d64ede28fd44dDmitry Shmidt 564d5e4923d04122f81300fa68fb07d64ede28fd44dDmitry Shmidt /** 565d5e4923d04122f81300fa68fb07d64ede28fd44dDmitry Shmidt * scan_req - Type of the scan request 566d5e4923d04122f81300fa68fb07d64ede28fd44dDmitry Shmidt */ 567d5e4923d04122f81300fa68fb07d64ede28fd44dDmitry Shmidt enum scan_req_type { 568d5e4923d04122f81300fa68fb07d64ede28fd44dDmitry Shmidt /** 569d5e4923d04122f81300fa68fb07d64ede28fd44dDmitry Shmidt * NORMAL_SCAN_REQ - Normal scan request 570d5e4923d04122f81300fa68fb07d64ede28fd44dDmitry Shmidt * 571d5e4923d04122f81300fa68fb07d64ede28fd44dDmitry Shmidt * This is used for scans initiated by wpa_supplicant to find an 572d5e4923d04122f81300fa68fb07d64ede28fd44dDmitry Shmidt * AP for a connection. 573d5e4923d04122f81300fa68fb07d64ede28fd44dDmitry Shmidt */ 574d5e4923d04122f81300fa68fb07d64ede28fd44dDmitry Shmidt NORMAL_SCAN_REQ, 575d5e4923d04122f81300fa68fb07d64ede28fd44dDmitry Shmidt 576d5e4923d04122f81300fa68fb07d64ede28fd44dDmitry Shmidt /** 577d5e4923d04122f81300fa68fb07d64ede28fd44dDmitry Shmidt * INITIAL_SCAN_REQ - Initial scan request 578d5e4923d04122f81300fa68fb07d64ede28fd44dDmitry Shmidt * 579d5e4923d04122f81300fa68fb07d64ede28fd44dDmitry Shmidt * This is used for the first scan on an interface to force at 580d5e4923d04122f81300fa68fb07d64ede28fd44dDmitry Shmidt * least one scan to be run even if the configuration does not 581d5e4923d04122f81300fa68fb07d64ede28fd44dDmitry Shmidt * include any enabled networks. 582d5e4923d04122f81300fa68fb07d64ede28fd44dDmitry Shmidt */ 583d5e4923d04122f81300fa68fb07d64ede28fd44dDmitry Shmidt INITIAL_SCAN_REQ, 584d5e4923d04122f81300fa68fb07d64ede28fd44dDmitry Shmidt 585d5e4923d04122f81300fa68fb07d64ede28fd44dDmitry Shmidt /** 586d5e4923d04122f81300fa68fb07d64ede28fd44dDmitry Shmidt * MANUAL_SCAN_REQ - Manual scan request 587d5e4923d04122f81300fa68fb07d64ede28fd44dDmitry Shmidt * 588d5e4923d04122f81300fa68fb07d64ede28fd44dDmitry Shmidt * This is used for scans where the user request a scan or 589d5e4923d04122f81300fa68fb07d64ede28fd44dDmitry Shmidt * a specific wpa_supplicant operation (e.g., WPS) requires scan 590d5e4923d04122f81300fa68fb07d64ede28fd44dDmitry Shmidt * to be run. 591d5e4923d04122f81300fa68fb07d64ede28fd44dDmitry Shmidt */ 592d5e4923d04122f81300fa68fb07d64ede28fd44dDmitry Shmidt MANUAL_SCAN_REQ 59301904cfafd75a70b9f29c0220b90bdef45595491Dmitry Shmidt } scan_req, last_scan_req; 5942f74e36e84064ffa32f82f3decf36b653c7e4fadDmitry Shmidt enum wpa_states scan_prev_wpa_state; 595fb79edc9df1f20461e90e478363d207348213d35Dmitry Shmidt struct os_reltime scan_trigger_time, scan_start_time; 5968d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt int scan_runs; /* number of scan runs since WPS was started */ 5978d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt int *next_scan_freqs; 598fb79edc9df1f20461e90e478363d207348213d35Dmitry Shmidt int *manual_scan_freqs; 599d11f019d62a42a8fc4c4d1f2ec17cf35b0763153Dmitry Shmidt int *manual_sched_scan_freqs; 600fb79edc9df1f20461e90e478363d207348213d35Dmitry Shmidt unsigned int manual_scan_passive:1; 601fb79edc9df1f20461e90e478363d207348213d35Dmitry Shmidt unsigned int manual_scan_use_id:1; 602fb79edc9df1f20461e90e478363d207348213d35Dmitry Shmidt unsigned int manual_scan_only_new:1; 603fb79edc9df1f20461e90e478363d207348213d35Dmitry Shmidt unsigned int own_scan_requested:1; 604fb79edc9df1f20461e90e478363d207348213d35Dmitry Shmidt unsigned int own_scan_running:1; 605fb79edc9df1f20461e90e478363d207348213d35Dmitry Shmidt unsigned int clear_driver_scan_cache:1; 606fb79edc9df1f20461e90e478363d207348213d35Dmitry Shmidt unsigned int manual_scan_id; 6078d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt int scan_interval; /* time in sec between scans to find suitable AP */ 6081f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidt int normal_scans; /* normal scans run before sched_scan */ 609d5e4923d04122f81300fa68fb07d64ede28fd44dDmitry Shmidt int scan_for_connection; /* whether the scan request was triggered for 610d5e4923d04122f81300fa68fb07d64ede28fd44dDmitry Shmidt * finding a connection */ 611c28170251eb54dbf64a9074a07fee377587425b2Dmitry Shmidt#define MAX_SCAN_ID 16 612c28170251eb54dbf64a9074a07fee377587425b2Dmitry Shmidt int scan_id[MAX_SCAN_ID]; 613c28170251eb54dbf64a9074a07fee377587425b2Dmitry Shmidt unsigned int scan_id_count; 6148d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 6157a53dbb56693ee9f55c0cab1a8297436511e8613Dmitry Shmidt struct wpa_ssid_value *ssids_from_scan_req; 6167a53dbb56693ee9f55c0cab1a8297436511e8613Dmitry Shmidt unsigned int num_ssids_from_scan_req; 6177a53dbb56693ee9f55c0cab1a8297436511e8613Dmitry Shmidt 6186c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt u64 drv_flags; 61904949598a23f501be6eec21697465fd46a28840aDmitry Shmidt unsigned int drv_enc; 6206c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt unsigned int drv_smps_modes; 6216c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt unsigned int drv_rrm_flags; 6221f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidt 6231f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidt /* 6241f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidt * A bitmap of supported protocols for probe response offload. See 6251f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidt * struct wpa_driver_capa in driver.h 6261f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidt */ 6271f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidt unsigned int probe_resp_offloads; 6281f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidt 629444d567b27731d8572ef37697dd12fd1c37c2f24Dmitry Shmidt /* extended capabilities supported by the driver */ 630444d567b27731d8572ef37697dd12fd1c37c2f24Dmitry Shmidt const u8 *extended_capa, *extended_capa_mask; 631444d567b27731d8572ef37697dd12fd1c37c2f24Dmitry Shmidt unsigned int extended_capa_len; 632444d567b27731d8572ef37697dd12fd1c37c2f24Dmitry Shmidt 6338d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt int max_scan_ssids; 6341f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidt int max_sched_scan_ssids; 6351f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidt int sched_scan_supported; 6361f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidt unsigned int max_match_sets; 6378d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt unsigned int max_remain_on_chan; 6388d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt unsigned int max_stations; 6398d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 6408d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt int pending_mic_error_report; 6418d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt int pending_mic_error_pairwise; 6428d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt int mic_errors_seen; /* Michael MIC errors with the current PTK */ 6438d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 6448d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt struct wps_context *wps; 6458d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt int wps_success; /* WPS success event received */ 6468d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt struct wps_er *wps_er; 647661b4f78e48c697429dc46154a4125892c001718Dmitry Shmidt unsigned int wps_run; 6481d755d025b206e22b06aeb322e25a79f98ca7777Dmitry Shmidt struct os_reltime wps_pin_start_time; 6498d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt int blacklist_cleared; 6508d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 6518d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt struct wpabuf *pending_eapol_rx; 652fb79edc9df1f20461e90e478363d207348213d35Dmitry Shmidt struct os_reltime pending_eapol_rx_time; 6538d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt u8 pending_eapol_rx_src[ETH_ALEN]; 654a05074ca1abe62b3fd8a8c30a5558e044b1356d5Jouni Malinen unsigned int last_eapol_matches_bssid:1; 655344abd362cfe2d03ed956666527352826b67bde5Dmitry Shmidt unsigned int eap_expected_failure:1; 6569866086a955d00e237cc8df3722e7dff75c02532Dmitry Shmidt unsigned int reattach:1; /* reassociation to the same BSS requested */ 657661b4f78e48c697429dc46154a4125892c001718Dmitry Shmidt unsigned int mac_addr_changed:1; 658912c6ecf72fb2c84fbf17dbd0666492778dbd9fcDmitry Shmidt unsigned int added_vif:1; 659661b4f78e48c697429dc46154a4125892c001718Dmitry Shmidt 660661b4f78e48c697429dc46154a4125892c001718Dmitry Shmidt struct os_reltime last_mac_addr_change; 661661b4f78e48c697429dc46154a4125892c001718Dmitry Shmidt int last_mac_addr_style; 6628d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 6638d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt struct ibss_rsn *ibss_rsn; 6648d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 6658d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt int set_sta_uapsd; 6668d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt int sta_uapsd; 6678d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt int set_ap_uapsd; 6688d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt int ap_uapsd; 6698d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 6708d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt#ifdef CONFIG_SME 6718d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt struct { 6729d9e60286e05ae45025b672636490bd12586138dDmitry Shmidt u8 ssid[SSID_MAX_LEN]; 6738d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt size_t ssid_len; 6748d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt int freq; 6758d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt u8 assoc_req_ie[200]; 6768d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt size_t assoc_req_ie_len; 6778d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt int mfp; 6788d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt int ft_used; 6798d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt u8 mobility_domain[2]; 6808d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt u8 *ft_ies; 6818d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt size_t ft_ies_len; 6828d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt u8 prev_bssid[ETH_ALEN]; 6838d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt int prev_bssid_set; 6848d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt int auth_alg; 6851f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidt int proto; 6868d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 6878d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt int sa_query_count; /* number of pending SA Query requests; 6888d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt * 0 = no SA Query in progress */ 6898d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt int sa_query_timed_out; 6908d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt u8 *sa_query_trans_id; /* buffer of WLAN_SA_QUERY_TR_ID_LEN * 6918d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt * sa_query_count octets of pending 6928d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt * SA Query transaction identifiers */ 693fb79edc9df1f20461e90e478363d207348213d35Dmitry Shmidt struct os_reltime sa_query_start; 6940c08fdcf5231617f2340cb18e45769a8ed3a1dc4Dmitry Shmidt struct os_reltime last_unprot_disconnect; 6956c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt enum { HT_SEC_CHAN_UNKNOWN, 6966c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt HT_SEC_CHAN_ABOVE, 6976c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt HT_SEC_CHAN_BELOW } ht_sec_chan; 69804949598a23f501be6eec21697465fd46a28840aDmitry Shmidt u8 sched_obss_scan; 69904949598a23f501be6eec21697465fd46a28840aDmitry Shmidt u16 obss_scan_int; 70004949598a23f501be6eec21697465fd46a28840aDmitry Shmidt u16 bss_max_idle_period; 701a54fa5fb807eaeff45464139b5a7759f060cec68Dmitry Shmidt#ifdef CONFIG_SAE 702a54fa5fb807eaeff45464139b5a7759f060cec68Dmitry Shmidt struct sae_data sae; 703a54fa5fb807eaeff45464139b5a7759f060cec68Dmitry Shmidt struct wpabuf *sae_token; 704a54fa5fb807eaeff45464139b5a7759f060cec68Dmitry Shmidt int sae_group_index; 7056c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt unsigned int sae_pmksa_caching:1; 706a54fa5fb807eaeff45464139b5a7759f060cec68Dmitry Shmidt#endif /* CONFIG_SAE */ 7078d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt } sme; 7088d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt#endif /* CONFIG_SME */ 7098d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 7108d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt#ifdef CONFIG_AP 7118d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt struct hostapd_iface *ap_iface; 7128d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt void (*ap_configured_cb)(void *ctx, void *data); 7138d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt void *ap_configured_cb_ctx; 7148d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt void *ap_configured_cb_data; 7158d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt#endif /* CONFIG_AP */ 7168d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 7176c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt struct hostapd_iface *ifmsh; 7186c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt#ifdef CONFIG_MESH 7196c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt struct mesh_rsn *mesh_rsn; 7206c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt int mesh_if_idx; 7216c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt unsigned int mesh_if_created:1; 722ff787d557db719adea0fdf2679667500c65cf74dDmitry Shmidt unsigned int mesh_ht_enabled:1; 7237f65602d49069f96a7bb44da8bd79ffe8d4c6a98Dmitry Shmidt int mesh_auth_block_duration; /* sec */ 7246c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt#endif /* CONFIG_MESH */ 7256c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt 7268d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt unsigned int off_channel_freq; 7278d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt struct wpabuf *pending_action_tx; 7288d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt u8 pending_action_src[ETH_ALEN]; 7298d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt u8 pending_action_dst[ETH_ALEN]; 7308d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt u8 pending_action_bssid[ETH_ALEN]; 7318d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt unsigned int pending_action_freq; 7321f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidt int pending_action_no_cck; 7338d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt int pending_action_without_roc; 734b5d893b5dec601a58c3ce0fc9e5d6da3816ce97aDmitry Shmidt unsigned int pending_action_tx_done:1; 7351f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidt void (*pending_action_tx_status_cb)(struct wpa_supplicant *wpa_s, 7361f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidt unsigned int freq, const u8 *dst, 7371f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidt const u8 *src, const u8 *bssid, 7381f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidt const u8 *data, size_t data_len, 7391f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidt enum offchannel_send_action_result 7401f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidt result); 7411f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidt unsigned int roc_waiting_drv_freq; 7421f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidt int action_tx_wait_time; 7431f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidt 74434af306c42b7ccf956508e7cd23f0ba90606e360Dmitry Shmidt int p2p_mgmt; 74534af306c42b7ccf956508e7cd23f0ba90606e360Dmitry Shmidt 7461f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidt#ifdef CONFIG_P2P 7471f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidt struct p2p_go_neg_results *go_params; 7481f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidt int create_p2p_iface; 7491f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidt u8 pending_interface_addr[ETH_ALEN]; 7501f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidt char pending_interface_name[100]; 7511f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidt int pending_interface_type; 7521f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidt int p2p_group_idx; 7538d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt unsigned int pending_listen_freq; 7548d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt unsigned int pending_listen_duration; 7558d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt enum { 7568d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt NOT_P2P_GROUP_INTERFACE, 7578d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt P2P_GROUP_INTERFACE_PENDING, 7588d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt P2P_GROUP_INTERFACE_GO, 7598d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt P2P_GROUP_INTERFACE_CLIENT 7608d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt } p2p_group_interface; 7618d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt struct p2p_group *p2p_group; 7628d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt int p2p_long_listen; /* remaining time in long Listen state in ms */ 7638d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt char p2p_pin[10]; 7648d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt int p2p_wps_method; 7658d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt u8 p2p_auth_invite[ETH_ALEN]; 7668d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt int p2p_sd_over_ctrl_iface; 7678d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt int p2p_in_provisioning; 76815907098d1f67c24bb000e593e279af173cf57d7Dmitry Shmidt int p2p_in_invitation; 76915907098d1f67c24bb000e593e279af173cf57d7Dmitry Shmidt int p2p_invite_go_freq; 7708d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt int pending_invite_ssid_id; 7718d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt int show_group_started; 7728d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt u8 go_dev_addr[ETH_ALEN]; 7738d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt int pending_pd_before_join; 7748d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt u8 pending_join_iface_addr[ETH_ALEN]; 7758d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt u8 pending_join_dev_addr[ETH_ALEN]; 7768d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt int pending_join_wps_method; 7779d9e60286e05ae45025b672636490bd12586138dDmitry Shmidt u8 p2p_join_ssid[SSID_MAX_LEN]; 778344abd362cfe2d03ed956666527352826b67bde5Dmitry Shmidt size_t p2p_join_ssid_len; 7798d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt int p2p_join_scan_count; 78004949598a23f501be6eec21697465fd46a28840aDmitry Shmidt int auto_pd_scan_retry; 7818d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt int force_long_sd; 78204949598a23f501be6eec21697465fd46a28840aDmitry Shmidt u16 pending_pd_config_methods; 78304949598a23f501be6eec21697465fd46a28840aDmitry Shmidt enum { 784216983bceec7c450951e2fbcd076b5c75d432e57Dmitry Shmidt NORMAL_PD, AUTO_PD_GO_NEG, AUTO_PD_JOIN, AUTO_PD_ASP 78504949598a23f501be6eec21697465fd46a28840aDmitry Shmidt } pending_pd_use; 7868d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 7878d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt /* 7888d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt * Whether cross connection is disallowed by the AP to which this 7898d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt * interface is associated (only valid if there is an association). 7908d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt */ 7918d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt int cross_connect_disallowed; 7928d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 7938d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt /* 7948d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt * Whether this P2P group is configured to use cross connection (only 7958d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt * valid if this is P2P GO interface). The actual cross connect packet 7968d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt * forwarding may not be configured depending on the uplink status. 7978d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt */ 7988d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt int cross_connect_enabled; 7998d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 8008d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt /* Whether cross connection forwarding is in use at the moment. */ 8018d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt int cross_connect_in_use; 8028d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 8038d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt /* 8048d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt * Uplink interface name for cross connection 8058d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt */ 8068d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt char cross_connect_uplink[100]; 8078d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 80804949598a23f501be6eec21697465fd46a28840aDmitry Shmidt unsigned int p2p_auto_join:1; 80904949598a23f501be6eec21697465fd46a28840aDmitry Shmidt unsigned int p2p_auto_pd:1; 81004949598a23f501be6eec21697465fd46a28840aDmitry Shmidt unsigned int p2p_persistent_group:1; 81104949598a23f501be6eec21697465fd46a28840aDmitry Shmidt unsigned int p2p_fallback_to_go_neg:1; 81204949598a23f501be6eec21697465fd46a28840aDmitry Shmidt unsigned int p2p_pd_before_go_neg:1; 81361d9df3e62aaa0e87ad05452fcb95142159a17b6Dmitry Shmidt unsigned int p2p_go_ht40:1; 81468d0e3ed07847339aedfac8e02f50db68c702e52Dmitry Shmidt unsigned int p2p_go_vht:1; 815d5e4923d04122f81300fa68fb07d64ede28fd44dDmitry Shmidt unsigned int user_initiated_pd:1; 8165605286c30e1701491bd3af974ae423727750eddDmitry Shmidt unsigned int p2p_go_group_formation_completed:1; 8176c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt unsigned int group_formation_reported:1; 818fb79edc9df1f20461e90e478363d207348213d35Dmitry Shmidt unsigned int waiting_presence_resp; 8195605286c30e1701491bd3af974ae423727750eddDmitry Shmidt int p2p_first_connection_timeout; 820cf32e60fa7e0d33fe1551a6dba8dcbbec47ea50eDmitry Shmidt unsigned int p2p_nfc_tag_enabled:1; 821cf32e60fa7e0d33fe1551a6dba8dcbbec47ea50eDmitry Shmidt unsigned int p2p_peer_oob_pk_hash_known:1; 822cf32e60fa7e0d33fe1551a6dba8dcbbec47ea50eDmitry Shmidt unsigned int p2p_disable_ip_addr_req:1; 823216983bceec7c450951e2fbcd076b5c75d432e57Dmitry Shmidt unsigned int p2ps_join_addr_valid:1; 824a3dc30964aa24aea2b518246f6812663a1103490Dmitry Shmidt unsigned int p2p_cli_probe:1; 82531be0a4b946ecab910c0a9af3837dbccea5d204bJouni Malinen int p2p_persistent_go_freq; 82604949598a23f501be6eec21697465fd46a28840aDmitry Shmidt int p2p_persistent_id; 82704949598a23f501be6eec21697465fd46a28840aDmitry Shmidt int p2p_go_intent; 82804949598a23f501be6eec21697465fd46a28840aDmitry Shmidt int p2p_connect_freq; 829fb79edc9df1f20461e90e478363d207348213d35Dmitry Shmidt struct os_reltime p2p_auto_started; 830391c59f0632df8db1c325da1d31d479b2eedce45Dmitry Shmidt struct wpa_ssid *p2p_last_4way_hs_fail; 831fb79edc9df1f20461e90e478363d207348213d35Dmitry Shmidt struct wpa_radio_work *p2p_scan_work; 832fb79edc9df1f20461e90e478363d207348213d35Dmitry Shmidt struct wpa_radio_work *p2p_listen_work; 833fb79edc9df1f20461e90e478363d207348213d35Dmitry Shmidt struct wpa_radio_work *p2p_send_action_work; 834cf32e60fa7e0d33fe1551a6dba8dcbbec47ea50eDmitry Shmidt 835cf32e60fa7e0d33fe1551a6dba8dcbbec47ea50eDmitry Shmidt u16 p2p_oob_dev_pw_id; /* OOB Device Password Id for group formation */ 836cf32e60fa7e0d33fe1551a6dba8dcbbec47ea50eDmitry Shmidt struct wpabuf *p2p_oob_dev_pw; /* OOB Device Password for group 837cf32e60fa7e0d33fe1551a6dba8dcbbec47ea50eDmitry Shmidt * formation */ 838cf32e60fa7e0d33fe1551a6dba8dcbbec47ea50eDmitry Shmidt u8 p2p_peer_oob_pubkey_hash[WPS_OOB_PUBKEY_HASH_LEN]; 839cf32e60fa7e0d33fe1551a6dba8dcbbec47ea50eDmitry Shmidt u8 p2p_ip_addr_info[3 * 4]; 8406c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt 8416c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt /* group common frequencies */ 8426c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt int *p2p_group_common_freqs; 8436c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt unsigned int p2p_group_common_freqs_num; 844216983bceec7c450951e2fbcd076b5c75d432e57Dmitry Shmidt u8 p2ps_join_addr[ETH_ALEN]; 8458d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt#endif /* CONFIG_P2P */ 8468d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 8478d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt struct wpa_ssid *bgscan_ssid; 8488d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt const struct bgscan_ops *bgscan; 8498d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt void *bgscan_priv; 8508d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 85104949598a23f501be6eec21697465fd46a28840aDmitry Shmidt const struct autoscan_ops *autoscan; 85204949598a23f501be6eec21697465fd46a28840aDmitry Shmidt struct wpa_driver_scan_params *autoscan_params; 85304949598a23f501be6eec21697465fd46a28840aDmitry Shmidt void *autoscan_priv; 85404949598a23f501be6eec21697465fd46a28840aDmitry Shmidt 85575ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen struct wpa_ssid *connect_without_scan; 8568d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 85761d9df3e62aaa0e87ad05452fcb95142159a17b6Dmitry Shmidt struct wps_ap_info *wps_ap; 85861d9df3e62aaa0e87ad05452fcb95142159a17b6Dmitry Shmidt size_t num_wps_ap; 85961d9df3e62aaa0e87ad05452fcb95142159a17b6Dmitry Shmidt int wps_ap_iter; 86061d9df3e62aaa0e87ad05452fcb95142159a17b6Dmitry Shmidt 8618d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt int after_wps; 862c5ec7f57ead87efa365800228aa0b09a12d9e6c4Dmitry Shmidt int known_wps_freq; 8638d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt unsigned int wps_freq; 8648d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt int wps_fragment_size; 8658d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt int auto_reconnect_disabled; 8668d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 8678d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt /* Channel preferences for AP/P2P GO use */ 8688d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt int best_24_freq; 8698d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt int best_5_freq; 8708d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt int best_overall_freq; 8711f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidt 8721f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidt struct gas_query *gas; 8731f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidt 8741f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidt#ifdef CONFIG_INTERWORKING 8751f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidt unsigned int fetch_anqp_in_progress:1; 8761f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidt unsigned int network_select:1; 8771f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidt unsigned int auto_select:1; 87861d9df3e62aaa0e87ad05452fcb95142159a17b6Dmitry Shmidt unsigned int auto_network_select:1; 8792f74e36e84064ffa32f82f3decf36b653c7e4fadDmitry Shmidt unsigned int interworking_fast_assoc_tried:1; 8804530cfd4d14a77c58e35393b91e40f8dd9d62697Dmitry Shmidt unsigned int fetch_all_anqp:1; 881f21452aea786ac056eb01f1cbba4f553bd502747Dmitry Shmidt unsigned int fetch_osu_info:1; 8826c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt unsigned int fetch_osu_waiting_scan:1; 883f21452aea786ac056eb01f1cbba4f553bd502747Dmitry Shmidt unsigned int fetch_osu_icon_in_progress:1; 884444d567b27731d8572ef37697dd12fd1c37c2f24Dmitry Shmidt struct wpa_bss *interworking_gas_bss; 885f21452aea786ac056eb01f1cbba4f553bd502747Dmitry Shmidt unsigned int osu_icon_id; 886f21452aea786ac056eb01f1cbba4f553bd502747Dmitry Shmidt struct osu_provider *osu_prov; 887f21452aea786ac056eb01f1cbba4f553bd502747Dmitry Shmidt size_t osu_prov_count; 888f21452aea786ac056eb01f1cbba4f553bd502747Dmitry Shmidt struct os_reltime osu_icon_fetch_start; 889f21452aea786ac056eb01f1cbba4f553bd502747Dmitry Shmidt unsigned int num_osu_scans; 890f21452aea786ac056eb01f1cbba4f553bd502747Dmitry Shmidt unsigned int num_prov_found; 8911f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidt#endif /* CONFIG_INTERWORKING */ 8921f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidt unsigned int drv_capa_known; 8931f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidt 8941f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidt struct { 8951f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidt struct hostapd_hw_modes *modes; 8961f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidt u16 num_modes; 8971f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidt u16 flags; 8981f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidt } hw; 8997f65602d49069f96a7bb44da8bd79ffe8d4c6a98Dmitry Shmidt enum local_hw_capab { 9007f65602d49069f96a7bb44da8bd79ffe8d4c6a98Dmitry Shmidt CAPAB_NO_HT_VHT, 9017f65602d49069f96a7bb44da8bd79ffe8d4c6a98Dmitry Shmidt CAPAB_HT, 9027f65602d49069f96a7bb44da8bd79ffe8d4c6a98Dmitry Shmidt CAPAB_HT40, 9037f65602d49069f96a7bb44da8bd79ffe8d4c6a98Dmitry Shmidt CAPAB_VHT, 9047f65602d49069f96a7bb44da8bd79ffe8d4c6a98Dmitry Shmidt } hw_capab; 9055a1480c7c46c4236d93bfd303dde32062bee04acDmitry Shmidt#ifdef CONFIG_MACSEC 9065a1480c7c46c4236d93bfd303dde32062bee04acDmitry Shmidt struct ieee802_1x_kay *kay; 9075a1480c7c46c4236d93bfd303dde32062bee04acDmitry Shmidt#endif /* CONFIG_MACSEC */ 9081f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidt 9091f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidt int pno; 9101846323989242844f0e857458a8939fa5836429cDmitry Shmidt int pno_sched_pending; 91104949598a23f501be6eec21697465fd46a28840aDmitry Shmidt 91204949598a23f501be6eec21697465fd46a28840aDmitry Shmidt /* WLAN_REASON_* reason codes. Negative if locally generated. */ 91304949598a23f501be6eec21697465fd46a28840aDmitry Shmidt int disconnect_reason; 91461d9df3e62aaa0e87ad05452fcb95142159a17b6Dmitry Shmidt 91561d9df3e62aaa0e87ad05452fcb95142159a17b6Dmitry Shmidt struct ext_password_data *ext_pw; 91661d9df3e62aaa0e87ad05452fcb95142159a17b6Dmitry Shmidt 917fb79edc9df1f20461e90e478363d207348213d35Dmitry Shmidt struct wpabuf *last_gas_resp, *prev_gas_resp; 918fb79edc9df1f20461e90e478363d207348213d35Dmitry Shmidt u8 last_gas_addr[ETH_ALEN], prev_gas_addr[ETH_ALEN]; 919fb79edc9df1f20461e90e478363d207348213d35Dmitry Shmidt u8 last_gas_dialog_token, prev_gas_dialog_token; 920a54fa5fb807eaeff45464139b5a7759f060cec68Dmitry Shmidt 921a54fa5fb807eaeff45464139b5a7759f060cec68Dmitry Shmidt unsigned int no_keep_alive:1; 922818ea489ef32dcdc7c098d8a336d6e1dd8996112Dmitry Shmidt unsigned int ext_mgmt_frame_handling:1; 9236c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt unsigned int ext_eapol_frame_io:1; 9246c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt unsigned int wmm_ac_supported:1; 9256c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt unsigned int ext_work_in_progress:1; 926203eadb9eda41a1dde4a583edb4684319e3f399eDmitry Shmidt unsigned int own_disconnect_req:1; 9276c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt 9286c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt#define MAC_ADDR_RAND_SCAN BIT(0) 9296c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt#define MAC_ADDR_RAND_SCHED_SCAN BIT(1) 9306c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt#define MAC_ADDR_RAND_PNO BIT(2) 9316c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt#define MAC_ADDR_RAND_ALL (MAC_ADDR_RAND_SCAN | \ 9326c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt MAC_ADDR_RAND_SCHED_SCAN | \ 9336c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt MAC_ADDR_RAND_PNO) 9346c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt unsigned int mac_addr_rand_supported; 9356c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt unsigned int mac_addr_rand_enable; 9366c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt 9376c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt /* MAC Address followed by mask (2 * ETH_ALEN) */ 9386c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt u8 *mac_addr_scan; 9396c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt u8 *mac_addr_sched_scan; 9406c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt u8 *mac_addr_pno; 94144c957860ca714a86357591f39aff0bfa904c743Dmitry Shmidt 94244c957860ca714a86357591f39aff0bfa904c743Dmitry Shmidt#ifdef CONFIG_WNM 94344c957860ca714a86357591f39aff0bfa904c743Dmitry Shmidt u8 wnm_dialog_token; 94444c957860ca714a86357591f39aff0bfa904c743Dmitry Shmidt u8 wnm_reply; 94544c957860ca714a86357591f39aff0bfa904c743Dmitry Shmidt u8 wnm_num_neighbor_report; 94644c957860ca714a86357591f39aff0bfa904c743Dmitry Shmidt u8 wnm_mode; 94744c957860ca714a86357591f39aff0bfa904c743Dmitry Shmidt u16 wnm_dissoc_timer; 94844c957860ca714a86357591f39aff0bfa904c743Dmitry Shmidt u8 wnm_bss_termination_duration[12]; 94944c957860ca714a86357591f39aff0bfa904c743Dmitry Shmidt struct neighbor_report *wnm_neighbor_report_elements; 9506c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt struct os_reltime wnm_cand_valid_until; 9516c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt u8 wnm_cand_from_bss[ETH_ALEN]; 95244c957860ca714a86357591f39aff0bfa904c743Dmitry Shmidt#endif /* CONFIG_WNM */ 953b6e9aaf735990dc64cdb6efccc03d076768eabf3Dmitry Shmidt 954b6e9aaf735990dc64cdb6efccc03d076768eabf3Dmitry Shmidt#ifdef CONFIG_TESTING_GET_GTK 955b6e9aaf735990dc64cdb6efccc03d076768eabf3Dmitry Shmidt u8 last_gtk[32]; 956b6e9aaf735990dc64cdb6efccc03d076768eabf3Dmitry Shmidt size_t last_gtk_len; 957b6e9aaf735990dc64cdb6efccc03d076768eabf3Dmitry Shmidt#endif /* CONFIG_TESTING_GET_GTK */ 958c2ebb4b85d69b65f552fee71ac68f44e8d87b39eDmitry Shmidt 959c2ebb4b85d69b65f552fee71ac68f44e8d87b39eDmitry Shmidt unsigned int num_multichan_concurrent; 960fb79edc9df1f20461e90e478363d207348213d35Dmitry Shmidt struct wpa_radio_work *connect_work; 961fb79edc9df1f20461e90e478363d207348213d35Dmitry Shmidt 962fb79edc9df1f20461e90e478363d207348213d35Dmitry Shmidt unsigned int ext_work_id; 9632e67f06149ff649fb6f8782bad041d3d9124685eDmitry Shmidt 9642e67f06149ff649fb6f8782bad041d3d9124685eDmitry Shmidt struct wpabuf *vendor_elem[NUM_VENDOR_ELEM_FRAMES]; 9656c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt 9666c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt#ifdef CONFIG_TESTING_OPTIONS 9676c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt struct l2_packet_data *l2_test; 9686c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt unsigned int extra_roc_dur; 9692f74e36e84064ffa32f82f3decf36b653c7e4fadDmitry Shmidt enum wpa_supplicant_test_failure test_failure; 9706c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt#endif /* CONFIG_TESTING_OPTIONS */ 9716c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt 9726c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt struct wmm_ac_assoc_data *wmm_ac_assoc_info; 9736c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt struct wmm_tspec_element *tspecs[WMM_AC_NUM][TS_DIR_IDX_COUNT]; 9746c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt struct wmm_ac_addts_request *addts_request; 9756c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt u8 wmm_ac_last_dialog_token; 9766c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt struct wmm_tspec_element *last_tspecs; 9776c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt u8 last_tspecs_count; 9786c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt 9796c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt struct rrm_data rrm; 9808d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt}; 9818d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 9828d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 9838d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt/* wpa_supplicant.c */ 984c5ec7f57ead87efa365800228aa0b09a12d9e6c4Dmitry Shmidtvoid wpa_supplicant_apply_ht_overrides( 985c5ec7f57ead87efa365800228aa0b09a12d9e6c4Dmitry Shmidt struct wpa_supplicant *wpa_s, struct wpa_ssid *ssid, 986c5ec7f57ead87efa365800228aa0b09a12d9e6c4Dmitry Shmidt struct wpa_driver_associate_params *params); 9872f023193a0fd630eb82ce6381b80911ad5a3462fDmitry Shmidtvoid wpa_supplicant_apply_vht_overrides( 9882f023193a0fd630eb82ce6381b80911ad5a3462fDmitry Shmidt struct wpa_supplicant *wpa_s, struct wpa_ssid *ssid, 9892f023193a0fd630eb82ce6381b80911ad5a3462fDmitry Shmidt struct wpa_driver_associate_params *params); 990c5ec7f57ead87efa365800228aa0b09a12d9e6c4Dmitry Shmidt 9918d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtint wpa_set_wep_keys(struct wpa_supplicant *wpa_s, struct wpa_ssid *ssid); 99251b6ea882f234c14cd1fe1332a3840cf61fafccaDmitry Shmidtint wpa_supplicant_set_wpa_none_key(struct wpa_supplicant *wpa_s, 99351b6ea882f234c14cd1fe1332a3840cf61fafccaDmitry Shmidt struct wpa_ssid *ssid); 9948d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 9958d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtint wpa_supplicant_reload_configuration(struct wpa_supplicant *wpa_s); 9968d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 9978d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtconst char * wpa_supplicant_state_txt(enum wpa_states state); 9981f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidtint wpa_supplicant_update_mac_addr(struct wpa_supplicant *wpa_s); 9998d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtint wpa_supplicant_driver_init(struct wpa_supplicant *wpa_s); 10008d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtint wpa_supplicant_set_suites(struct wpa_supplicant *wpa_s, 10018d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt struct wpa_bss *bss, struct wpa_ssid *ssid, 10028d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt u8 *wpa_ie, size_t *wpa_ie_len); 10038d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtvoid wpa_supplicant_associate(struct wpa_supplicant *wpa_s, 10048d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt struct wpa_bss *bss, 10058d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt struct wpa_ssid *ssid); 10068d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtvoid wpa_supplicant_set_non_wpa_policy(struct wpa_supplicant *wpa_s, 10078d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt struct wpa_ssid *ssid); 10088d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtvoid wpa_supplicant_initiate_eapol(struct wpa_supplicant *wpa_s); 10098d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtvoid wpa_clear_keys(struct wpa_supplicant *wpa_s, const u8 *addr); 10108d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtvoid wpa_supplicant_req_auth_timeout(struct wpa_supplicant *wpa_s, 10118d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt int sec, int usec); 101204949598a23f501be6eec21697465fd46a28840aDmitry Shmidtvoid wpa_supplicant_reinit_autoscan(struct wpa_supplicant *wpa_s); 10138d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtvoid wpa_supplicant_set_state(struct wpa_supplicant *wpa_s, 10148d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt enum wpa_states state); 10158d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtstruct wpa_ssid * wpa_supplicant_get_ssid(struct wpa_supplicant *wpa_s); 10168d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtconst char * wpa_supplicant_get_eap_mode(struct wpa_supplicant *wpa_s); 10178d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtvoid wpa_supplicant_cancel_auth_timeout(struct wpa_supplicant *wpa_s); 10188d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtvoid wpa_supplicant_deauthenticate(struct wpa_supplicant *wpa_s, 10198d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt int reason_code); 10208d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 10218d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtvoid wpa_supplicant_enable_network(struct wpa_supplicant *wpa_s, 10228d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt struct wpa_ssid *ssid); 10238d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtvoid wpa_supplicant_disable_network(struct wpa_supplicant *wpa_s, 10248d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt struct wpa_ssid *ssid); 10258d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtvoid wpa_supplicant_select_network(struct wpa_supplicant *wpa_s, 10268d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt struct wpa_ssid *ssid); 102701904cfafd75a70b9f29c0220b90bdef45595491Dmitry Shmidtint wpas_set_pkcs11_engine_and_module_path(struct wpa_supplicant *wpa_s, 102801904cfafd75a70b9f29c0220b90bdef45595491Dmitry Shmidt const char *pkcs11_engine_path, 102901904cfafd75a70b9f29c0220b90bdef45595491Dmitry Shmidt const char *pkcs11_module_path); 10308d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtint wpa_supplicant_set_ap_scan(struct wpa_supplicant *wpa_s, 10318d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt int ap_scan); 10328d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtint wpa_supplicant_set_bss_expiration_age(struct wpa_supplicant *wpa_s, 10338d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt unsigned int expire_age); 10348d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtint wpa_supplicant_set_bss_expiration_count(struct wpa_supplicant *wpa_s, 10358d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt unsigned int expire_count); 103604949598a23f501be6eec21697465fd46a28840aDmitry Shmidtint wpa_supplicant_set_scan_interval(struct wpa_supplicant *wpa_s, 103704949598a23f501be6eec21697465fd46a28840aDmitry Shmidt int scan_interval); 10388d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtint wpa_supplicant_set_debug_params(struct wpa_global *global, 10398d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt int debug_level, int debug_timestamp, 10408d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt int debug_show_keys); 104104949598a23f501be6eec21697465fd46a28840aDmitry Shmidtvoid free_hw_features(struct wpa_supplicant *wpa_s); 10428d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 10438d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtvoid wpa_show_license(void); 10448d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 10458d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtstruct wpa_supplicant * wpa_supplicant_add_iface(struct wpa_global *global, 1046203eadb9eda41a1dde4a583edb4684319e3f399eDmitry Shmidt struct wpa_interface *iface, 1047203eadb9eda41a1dde4a583edb4684319e3f399eDmitry Shmidt struct wpa_supplicant *parent); 10488d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtint wpa_supplicant_remove_iface(struct wpa_global *global, 1049e15c7b57cc7a214d5adaa0fc1d7204378eaf62a5Dmitry Shmidt struct wpa_supplicant *wpa_s, 1050e15c7b57cc7a214d5adaa0fc1d7204378eaf62a5Dmitry Shmidt int terminate); 10518d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtstruct wpa_supplicant * wpa_supplicant_get_iface(struct wpa_global *global, 10528d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt const char *ifname); 10538d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtstruct wpa_global * wpa_supplicant_init(struct wpa_params *params); 10548d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtint wpa_supplicant_run(struct wpa_global *global); 10558d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtvoid wpa_supplicant_deinit(struct wpa_global *global); 10568d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 10578d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtint wpa_supplicant_scard_init(struct wpa_supplicant *wpa_s, 10588d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt struct wpa_ssid *ssid); 10598d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtvoid wpa_supplicant_terminate_proc(struct wpa_global *global); 10608d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtvoid wpa_supplicant_rx_eapol(void *ctx, const u8 *src_addr, 10618d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt const u8 *buf, size_t len); 10628d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtvoid wpa_supplicant_update_config(struct wpa_supplicant *wpa_s); 10638d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtvoid wpa_supplicant_clear_status(struct wpa_supplicant *wpa_s); 10648d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtvoid wpas_connection_failed(struct wpa_supplicant *wpa_s, const u8 *bssid); 10651f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidtint wpas_driver_bss_selection(struct wpa_supplicant *wpa_s); 1066687922c7347bdc3b4f8c921efe1d1388cb3baac0Dmitry Shmidtint wpas_is_p2p_prioritized(struct wpa_supplicant *wpa_s); 10676dc03bd757d3befd2c03a543a402338db03914d6Dmitry Shmidtvoid wpas_auth_failed(struct wpa_supplicant *wpa_s, char *reason); 106861d9df3e62aaa0e87ad05452fcb95142159a17b6Dmitry Shmidtvoid wpas_clear_temp_disabled(struct wpa_supplicant *wpa_s, 106961d9df3e62aaa0e87ad05452fcb95142159a17b6Dmitry Shmidt struct wpa_ssid *ssid, int clear_failures); 1070d5e4923d04122f81300fa68fb07d64ede28fd44dDmitry Shmidtint disallowed_bssid(struct wpa_supplicant *wpa_s, const u8 *bssid); 1071d5e4923d04122f81300fa68fb07d64ede28fd44dDmitry Shmidtint disallowed_ssid(struct wpa_supplicant *wpa_s, const u8 *ssid, 1072d5e4923d04122f81300fa68fb07d64ede28fd44dDmitry Shmidt size_t ssid_len); 1073d5e4923d04122f81300fa68fb07d64ede28fd44dDmitry Shmidtvoid wpas_request_connection(struct wpa_supplicant *wpa_s); 107409f57babfc1e4473db20ced4f58a4c9f082c8ed8Dmitry Shmidtint wpas_build_ext_capab(struct wpa_supplicant *wpa_s, u8 *buf, size_t buflen); 1075661b4f78e48c697429dc46154a4125892c001718Dmitry Shmidtint wpas_update_random_addr(struct wpa_supplicant *wpa_s, int style); 1076661b4f78e48c697429dc46154a4125892c001718Dmitry Shmidtint wpas_update_random_addr_disassoc(struct wpa_supplicant *wpa_s); 10776c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidtvoid add_freq(int *freqs, int *num_freqs, int freq); 10786c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt 10796c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidtvoid wpas_rrm_reset(struct wpa_supplicant *wpa_s); 10806c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidtvoid wpas_rrm_process_neighbor_rep(struct wpa_supplicant *wpa_s, 10816c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt const u8 *report, size_t report_len); 10826c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidtint wpas_rrm_send_neighbor_rep_request(struct wpa_supplicant *wpa_s, 10836c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt const struct wpa_ssid *ssid, 10846c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt void (*cb)(void *ctx, 10856c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt struct wpabuf *neighbor_rep), 10866c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt void *cb_ctx); 10876c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidtvoid wpas_rrm_handle_link_measurement_request(struct wpa_supplicant *wpa_s, 10886c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt const u8 *src, 10896c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt const u8 *frame, size_t len, 10906c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt int rssi); 109104949598a23f501be6eec21697465fd46a28840aDmitry Shmidt 109204949598a23f501be6eec21697465fd46a28840aDmitry Shmidt/** 109304949598a23f501be6eec21697465fd46a28840aDmitry Shmidt * wpa_supplicant_ctrl_iface_ctrl_rsp_handle - Handle a control response 109404949598a23f501be6eec21697465fd46a28840aDmitry Shmidt * @wpa_s: Pointer to wpa_supplicant data 109504949598a23f501be6eec21697465fd46a28840aDmitry Shmidt * @ssid: Pointer to the network block the reply is for 109604949598a23f501be6eec21697465fd46a28840aDmitry Shmidt * @field: field the response is a reply for 109704949598a23f501be6eec21697465fd46a28840aDmitry Shmidt * @value: value (ie, password, etc) for @field 109804949598a23f501be6eec21697465fd46a28840aDmitry Shmidt * Returns: 0 on success, non-zero on error 109904949598a23f501be6eec21697465fd46a28840aDmitry Shmidt * 110004949598a23f501be6eec21697465fd46a28840aDmitry Shmidt * Helper function to handle replies to control interface requests. 110104949598a23f501be6eec21697465fd46a28840aDmitry Shmidt */ 110204949598a23f501be6eec21697465fd46a28840aDmitry Shmidtint wpa_supplicant_ctrl_iface_ctrl_rsp_handle(struct wpa_supplicant *wpa_s, 110304949598a23f501be6eec21697465fd46a28840aDmitry Shmidt struct wpa_ssid *ssid, 110404949598a23f501be6eec21697465fd46a28840aDmitry Shmidt const char *field, 110504949598a23f501be6eec21697465fd46a28840aDmitry Shmidt const char *value); 11068d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 1107ff787d557db719adea0fdf2679667500c65cf74dDmitry Shmidtvoid ibss_mesh_setup_freq(struct wpa_supplicant *wpa_s, 1108ff787d557db719adea0fdf2679667500c65cf74dDmitry Shmidt const struct wpa_ssid *ssid, 1109ff787d557db719adea0fdf2679667500c65cf74dDmitry Shmidt struct hostapd_freq_params *freq); 1110ff787d557db719adea0fdf2679667500c65cf74dDmitry Shmidt 11118d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt/* events.c */ 11128d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtvoid wpa_supplicant_mark_disassoc(struct wpa_supplicant *wpa_s); 111344da0253a740e0329b18f60c196e1f2dcacfcceaDmitry Shmidtint wpa_supplicant_connect(struct wpa_supplicant *wpa_s, 11141f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidt struct wpa_bss *selected, 11151f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidt struct wpa_ssid *ssid); 11161f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidtvoid wpa_supplicant_stop_countermeasures(void *eloop_ctx, void *sock_ctx); 11171f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidtvoid wpa_supplicant_delayed_mic_error_report(void *eloop_ctx, void *sock_ctx); 111804949598a23f501be6eec21697465fd46a28840aDmitry Shmidtvoid wnm_bss_keep_alive_deinit(struct wpa_supplicant *wpa_s); 11194b9d52f502481b258fec743c03a5e957e5605afcDmitry Shmidtint wpa_supplicant_fast_associate(struct wpa_supplicant *wpa_s); 1120444d567b27731d8572ef37697dd12fd1c37c2f24Dmitry Shmidtstruct wpa_bss * wpa_supplicant_pick_network(struct wpa_supplicant *wpa_s, 1121444d567b27731d8572ef37697dd12fd1c37c2f24Dmitry Shmidt struct wpa_ssid **selected_ssid); 11228d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 11238d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt/* eap_register.c */ 11248d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtint eap_register_methods(void); 11258d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 112675ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen/** 1127cc00d5dc8483e32158b2ba61ea44b0c38d790ed7Dmitry Shmidt * Utility method to tell if a given network is for persistent group storage 112875ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen * @ssid: Network object 112975ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen * Returns: 1 if network is a persistent group, 0 otherwise 113075ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen */ 113175ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinenstatic inline int network_is_persistent_group(struct wpa_ssid *ssid) 113275ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen{ 1133cc00d5dc8483e32158b2ba61ea44b0c38d790ed7Dmitry Shmidt return ssid->disabled == 2 && ssid->p2p_persistent_group; 113475ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen} 113575ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen 113604949598a23f501be6eec21697465fd46a28840aDmitry Shmidtint wpas_network_disabled(struct wpa_supplicant *wpa_s, struct wpa_ssid *ssid); 1137807291d85bf857320aff6a8ade38c5f622ab9df8Dmitry Shmidtint wpas_get_ssid_pmf(struct wpa_supplicant *wpa_s, struct wpa_ssid *ssid); 113804949598a23f501be6eec21697465fd46a28840aDmitry Shmidt 113961d9df3e62aaa0e87ad05452fcb95142159a17b6Dmitry Shmidtint wpas_init_ext_pw(struct wpa_supplicant *wpa_s); 114061d9df3e62aaa0e87ad05452fcb95142159a17b6Dmitry Shmidt 114143cb578dfe2c492257636f6234a24178ed27789eDmitry Shmidtvoid dump_freq_data(struct wpa_supplicant *wpa_s, const char *title, 114243cb578dfe2c492257636f6234a24178ed27789eDmitry Shmidt struct wpa_used_freq_data *freqs_data, 114343cb578dfe2c492257636f6234a24178ed27789eDmitry Shmidt unsigned int len); 114443cb578dfe2c492257636f6234a24178ed27789eDmitry Shmidt 114543cb578dfe2c492257636f6234a24178ed27789eDmitry Shmidtint get_shared_radio_freqs_data(struct wpa_supplicant *wpa_s, 114643cb578dfe2c492257636f6234a24178ed27789eDmitry Shmidt struct wpa_used_freq_data *freqs_data, 114743cb578dfe2c492257636f6234a24178ed27789eDmitry Shmidt unsigned int len); 1148c2ebb4b85d69b65f552fee71ac68f44e8d87b39eDmitry Shmidtint get_shared_radio_freqs(struct wpa_supplicant *wpa_s, 1149c2ebb4b85d69b65f552fee71ac68f44e8d87b39eDmitry Shmidt int *freq_array, unsigned int len); 1150c2ebb4b85d69b65f552fee71ac68f44e8d87b39eDmitry Shmidt 1151dda10c2afb8378747491ea5d329a1de635d6d58eDmitry Shmidtvoid wpas_network_reenabled(void *eloop_ctx, void *timeout_ctx); 11528d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt#endif /* WPA_SUPPLICANT_I_H */ 1153