18d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt/* 28d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt * wpa_supplicant - Event notifications 38d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt * Copyright (c) 2009-2010, 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#include "utils/includes.h" 108d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 118d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt#include "utils/common.h" 128d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt#include "common/wpa_ctrl.h" 138d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt#include "config.h" 148d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt#include "wpa_supplicant_i.h" 158d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt#include "wps_supplicant.h" 168d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt#include "dbus/dbus_common.h" 178d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt#include "dbus/dbus_old.h" 188d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt#include "dbus/dbus_new.h" 191f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidt#include "rsn_supp/wpa.h" 20d80a401aed31d06f261efd19223cf55d1a2a8228Dmitry Shmidt#include "fst/fst.h" 218d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt#include "driver_i.h" 228d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt#include "scan.h" 238d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt#include "p2p_supplicant.h" 248d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt#include "sme.h" 258d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt#include "notify.h" 26edd820c37e62b20e44271f485bd78a6e2091d36bRoshan Pius#include "hidl.h" 278d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 288d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtint wpas_notify_supplicant_initialized(struct wpa_global *global) 298d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt{ 308d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt#ifdef CONFIG_DBUS 318d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt if (global->params.dbus_ctrl_interface) { 328d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt global->dbus = wpas_dbus_init(global); 338d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt if (global->dbus == NULL) 348d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt return -1; 358d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt } 368d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt#endif /* CONFIG_DBUS */ 378d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 3857ffbcfc79cd9f7a8389bfcbabea0bced5ed4dbaRoshan Pius#ifdef CONFIG_HIDL 3957ffbcfc79cd9f7a8389bfcbabea0bced5ed4dbaRoshan Pius global->hidl = wpas_hidl_init(global); 4057ffbcfc79cd9f7a8389bfcbabea0bced5ed4dbaRoshan Pius if (!global->hidl) 41e4663044d3a689fb5458247e9bc0f8b58cf72fcaDmitry Shmidt return -1; 4257ffbcfc79cd9f7a8389bfcbabea0bced5ed4dbaRoshan Pius#endif /* CONFIG_HIDL */ 43e4663044d3a689fb5458247e9bc0f8b58cf72fcaDmitry Shmidt 448d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt return 0; 458d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt} 468d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 478d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 488d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtvoid wpas_notify_supplicant_deinitialized(struct wpa_global *global) 498d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt{ 508d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt#ifdef CONFIG_DBUS 518d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt if (global->dbus) 528d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt wpas_dbus_deinit(global->dbus); 538d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt#endif /* CONFIG_DBUS */ 54e4663044d3a689fb5458247e9bc0f8b58cf72fcaDmitry Shmidt 5557ffbcfc79cd9f7a8389bfcbabea0bced5ed4dbaRoshan Pius#ifdef CONFIG_HIDL 5657ffbcfc79cd9f7a8389bfcbabea0bced5ed4dbaRoshan Pius if (global->hidl) 5757ffbcfc79cd9f7a8389bfcbabea0bced5ed4dbaRoshan Pius wpas_hidl_deinit(global->hidl); 5857ffbcfc79cd9f7a8389bfcbabea0bced5ed4dbaRoshan Pius#endif /* CONFIG_HIDL */ 598d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt} 608d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 618d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 628d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtint wpas_notify_iface_added(struct wpa_supplicant *wpa_s) 638d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt{ 64d6d8b8ddebec155f165137ac6e9b5ef0c003f0c0Roshan Pius if (!wpa_s->p2p_mgmt) { 65d6d8b8ddebec155f165137ac6e9b5ef0c003f0c0Roshan Pius if (wpas_dbus_register_iface(wpa_s)) 66d6d8b8ddebec155f165137ac6e9b5ef0c003f0c0Roshan Pius return -1; 678d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 68d6d8b8ddebec155f165137ac6e9b5ef0c003f0c0Roshan Pius if (wpas_dbus_register_interface(wpa_s)) 69d6d8b8ddebec155f165137ac6e9b5ef0c003f0c0Roshan Pius return -1; 70d6d8b8ddebec155f165137ac6e9b5ef0c003f0c0Roshan Pius } 718d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 72d6d8b8ddebec155f165137ac6e9b5ef0c003f0c0Roshan Pius /* HIDL interface wants to keep track of the P2P mgmt iface. */ 7357ffbcfc79cd9f7a8389bfcbabea0bced5ed4dbaRoshan Pius if (wpas_hidl_register_interface(wpa_s)) 7454e763ada0bed9bf2c48415e82c5f04db23a3330Roshan Pius return -1; 7554e763ada0bed9bf2c48415e82c5f04db23a3330Roshan Pius 768d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt return 0; 778d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt} 788d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 798d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 808d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtvoid wpas_notify_iface_removed(struct wpa_supplicant *wpa_s) 818d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt{ 82d6d8b8ddebec155f165137ac6e9b5ef0c003f0c0Roshan Pius if (!wpa_s->p2p_mgmt) { 83d6d8b8ddebec155f165137ac6e9b5ef0c003f0c0Roshan Pius /* unregister interface in old DBus ctrl iface */ 84d6d8b8ddebec155f165137ac6e9b5ef0c003f0c0Roshan Pius wpas_dbus_unregister_iface(wpa_s); 856c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt 86d6d8b8ddebec155f165137ac6e9b5ef0c003f0c0Roshan Pius /* unregister interface in new DBus ctrl iface */ 87d6d8b8ddebec155f165137ac6e9b5ef0c003f0c0Roshan Pius wpas_dbus_unregister_interface(wpa_s); 88d6d8b8ddebec155f165137ac6e9b5ef0c003f0c0Roshan Pius } 8954e763ada0bed9bf2c48415e82c5f04db23a3330Roshan Pius 90d6d8b8ddebec155f165137ac6e9b5ef0c003f0c0Roshan Pius /* HIDL interface wants to keep track of the P2P mgmt iface. */ 9157ffbcfc79cd9f7a8389bfcbabea0bced5ed4dbaRoshan Pius wpas_hidl_unregister_interface(wpa_s); 928d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt} 938d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 948d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 958d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtvoid wpas_notify_state_changed(struct wpa_supplicant *wpa_s, 968d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt enum wpa_states new_state, 978d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt enum wpa_states old_state) 988d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt{ 996c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt if (wpa_s->p2p_mgmt) 1006c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt return; 1016c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt 1028d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt /* notify the old DBus API */ 1038d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt wpa_supplicant_dbus_notify_state_change(wpa_s, new_state, 1048d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt old_state); 1058d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 1068d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt /* notify the new DBus API */ 1078d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt wpas_dbus_signal_prop_changed(wpa_s, WPAS_DBUS_PROP_STATE); 1088d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 109d80a401aed31d06f261efd19223cf55d1a2a8228Dmitry Shmidt#ifdef CONFIG_FST 110d80a401aed31d06f261efd19223cf55d1a2a8228Dmitry Shmidt if (wpa_s->fst && !is_zero_ether_addr(wpa_s->bssid)) { 111d80a401aed31d06f261efd19223cf55d1a2a8228Dmitry Shmidt if (new_state == WPA_COMPLETED) 112d80a401aed31d06f261efd19223cf55d1a2a8228Dmitry Shmidt fst_notify_peer_connected(wpa_s->fst, wpa_s->bssid); 113d80a401aed31d06f261efd19223cf55d1a2a8228Dmitry Shmidt else if (old_state >= WPA_ASSOCIATED && 114d80a401aed31d06f261efd19223cf55d1a2a8228Dmitry Shmidt new_state < WPA_ASSOCIATED) 115d80a401aed31d06f261efd19223cf55d1a2a8228Dmitry Shmidt fst_notify_peer_disconnected(wpa_s->fst, wpa_s->bssid); 116d80a401aed31d06f261efd19223cf55d1a2a8228Dmitry Shmidt } 117d80a401aed31d06f261efd19223cf55d1a2a8228Dmitry Shmidt#endif /* CONFIG_FST */ 118d80a401aed31d06f261efd19223cf55d1a2a8228Dmitry Shmidt 1198d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt if (new_state == WPA_COMPLETED) 1208d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt wpas_p2p_notif_connected(wpa_s); 12104949598a23f501be6eec21697465fd46a28840aDmitry Shmidt else if (old_state >= WPA_ASSOCIATED && new_state < WPA_ASSOCIATED) 1228d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt wpas_p2p_notif_disconnected(wpa_s); 1238d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 1248d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt sme_state_changed(wpa_s); 1258d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 1268d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt#ifdef ANDROID 1278d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt wpa_msg_ctrl(wpa_s, MSG_INFO, WPA_EVENT_STATE_CHANGE 128f20a4432808cee548326c4b35c83071ca576a239Irfan Sheriff "id=%d state=%d BSSID=" MACSTR " SSID=%s", 1298d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt wpa_s->current_ssid ? wpa_s->current_ssid->id : -1, 130f20a4432808cee548326c4b35c83071ca576a239Irfan Sheriff new_state, 131e78e767aea5576ec0ba7edadfe25fd9dc7dce48fIrfan Sheriff MAC2STR(wpa_s->bssid), 1325b5fb02b225c5c05a4477bef58bdaceede5d68dcandy wpa_s->current_ssid && wpa_s->current_ssid->ssid ? 1335b5fb02b225c5c05a4477bef58bdaceede5d68dcandy wpa_ssid_txt(wpa_s->current_ssid->ssid, 134e0e48dc666fb14a7bb60264ca87463ba7bc1fe0bDmitry Shmidt wpa_s->current_ssid->ssid_len) : ""); 1358d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt#endif /* ANDROID */ 136e8d0d1655fa3b70b846e8669273f9248d1100137Roshan Pius 13757ffbcfc79cd9f7a8389bfcbabea0bced5ed4dbaRoshan Pius wpas_hidl_notify_state_changed(wpa_s); 1388d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt} 1398d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 1408d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 14104949598a23f501be6eec21697465fd46a28840aDmitry Shmidtvoid wpas_notify_disconnect_reason(struct wpa_supplicant *wpa_s) 14204949598a23f501be6eec21697465fd46a28840aDmitry Shmidt{ 1436c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt if (wpa_s->p2p_mgmt) 1446c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt return; 1456c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt 14604949598a23f501be6eec21697465fd46a28840aDmitry Shmidt wpas_dbus_signal_prop_changed(wpa_s, WPAS_DBUS_PROP_DISCONNECT_REASON); 1470974e961cd7bac71cf4d5919551e84541abf2b38Roshan Pius 148be158779063407ddfaaaef367c165e51f30dc2adRoshan Pius wpas_hidl_notify_disconnect_reason(wpa_s); 14904949598a23f501be6eec21697465fd46a28840aDmitry Shmidt} 15004949598a23f501be6eec21697465fd46a28840aDmitry Shmidt 15104949598a23f501be6eec21697465fd46a28840aDmitry Shmidt 15231a29cc7ed87b62465c7e01f03484f4643d12309Dmitry Shmidtvoid wpas_notify_assoc_status_code(struct wpa_supplicant *wpa_s) 15331a29cc7ed87b62465c7e01f03484f4643d12309Dmitry Shmidt{ 15431a29cc7ed87b62465c7e01f03484f4643d12309Dmitry Shmidt if (wpa_s->p2p_mgmt) 15531a29cc7ed87b62465c7e01f03484f4643d12309Dmitry Shmidt return; 15631a29cc7ed87b62465c7e01f03484f4643d12309Dmitry Shmidt 15731a29cc7ed87b62465c7e01f03484f4643d12309Dmitry Shmidt wpas_dbus_signal_prop_changed(wpa_s, WPAS_DBUS_PROP_ASSOC_STATUS_CODE); 1580974e961cd7bac71cf4d5919551e84541abf2b38Roshan Pius 1590974e961cd7bac71cf4d5919551e84541abf2b38Roshan Pius wpas_hidl_notify_assoc_reject(wpa_s); 16031a29cc7ed87b62465c7e01f03484f4643d12309Dmitry Shmidt} 16131a29cc7ed87b62465c7e01f03484f4643d12309Dmitry Shmidt 16238e96765e08839e3f5812ea4d6ef30121ab9e63eRoshan Piusvoid wpas_notify_auth_timeout(struct wpa_supplicant *wpa_s) { 16338e96765e08839e3f5812ea4d6ef30121ab9e63eRoshan Pius if (wpa_s->p2p_mgmt) 16438e96765e08839e3f5812ea4d6ef30121ab9e63eRoshan Pius return; 16538e96765e08839e3f5812ea4d6ef30121ab9e63eRoshan Pius 16638e96765e08839e3f5812ea4d6ef30121ab9e63eRoshan Pius wpas_hidl_notify_auth_timeout(wpa_s); 16738e96765e08839e3f5812ea4d6ef30121ab9e63eRoshan Pius} 16831a29cc7ed87b62465c7e01f03484f4643d12309Dmitry Shmidt 1698d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtvoid wpas_notify_network_changed(struct wpa_supplicant *wpa_s) 1708d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt{ 1716c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt if (wpa_s->p2p_mgmt) 1726c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt return; 1736c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt 1748d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt wpas_dbus_signal_prop_changed(wpa_s, WPAS_DBUS_PROP_CURRENT_NETWORK); 1758d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt} 1768d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 1778d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 1788d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtvoid wpas_notify_ap_scan_changed(struct wpa_supplicant *wpa_s) 1798d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt{ 1806c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt if (wpa_s->p2p_mgmt) 1816c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt return; 1826c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt 1838d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt wpas_dbus_signal_prop_changed(wpa_s, WPAS_DBUS_PROP_AP_SCAN); 1848d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt} 1858d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 1868d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 1878d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtvoid wpas_notify_bssid_changed(struct wpa_supplicant *wpa_s) 1888d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt{ 1896c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt if (wpa_s->p2p_mgmt) 1906c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt return; 1916c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt 1928d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt wpas_dbus_signal_prop_changed(wpa_s, WPAS_DBUS_PROP_CURRENT_BSS); 193e746d6b596b0a6fb06129350a0a674a901ae3964Roshan Pius 194e746d6b596b0a6fb06129350a0a674a901ae3964Roshan Pius wpas_hidl_notify_bssid_changed(wpa_s); 1958d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt} 1968d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 1978d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 1988d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtvoid wpas_notify_auth_changed(struct wpa_supplicant *wpa_s) 1998d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt{ 2006c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt if (wpa_s->p2p_mgmt) 2016c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt return; 2026c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt 2038d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt wpas_dbus_signal_prop_changed(wpa_s, WPAS_DBUS_PROP_CURRENT_AUTH_MODE); 2048d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt} 2058d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 2068d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 2078d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtvoid wpas_notify_network_enabled_changed(struct wpa_supplicant *wpa_s, 2088d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt struct wpa_ssid *ssid) 2098d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt{ 2106c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt if (wpa_s->p2p_mgmt) 2116c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt return; 2126c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt 2138d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt wpas_dbus_signal_network_enabled_changed(wpa_s, ssid); 2148d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt} 2158d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 2168d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 2178d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtvoid wpas_notify_network_selected(struct wpa_supplicant *wpa_s, 2188d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt struct wpa_ssid *ssid) 2198d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt{ 2206c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt if (wpa_s->p2p_mgmt) 2216c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt return; 2226c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt 2238d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt wpas_dbus_signal_network_selected(wpa_s, ssid->id); 2248d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt} 2258d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 2268d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 2271f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidtvoid wpas_notify_network_request(struct wpa_supplicant *wpa_s, 2281f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidt struct wpa_ssid *ssid, 2291f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidt enum wpa_ctrl_req_type rtype, 2301f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidt const char *default_txt) 2311f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidt{ 2326c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt if (wpa_s->p2p_mgmt) 2336c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt return; 2346c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt 2351f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidt wpas_dbus_signal_network_request(wpa_s, ssid, rtype, default_txt); 23665628ce79afddd4ba8fd796246b546b36815a0ddRoshan Pius 23757ffbcfc79cd9f7a8389bfcbabea0bced5ed4dbaRoshan Pius wpas_hidl_notify_network_request(wpa_s, ssid, rtype, default_txt); 2381f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidt} 2391f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidt 2401f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidt 2418d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtvoid wpas_notify_scanning(struct wpa_supplicant *wpa_s) 2428d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt{ 2436c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt if (wpa_s->p2p_mgmt) 2446c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt return; 2456c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt 2468d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt /* notify the old DBus API */ 2478d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt wpa_supplicant_dbus_notify_scanning(wpa_s); 2488d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 2498d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt /* notify the new DBus API */ 2508d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt wpas_dbus_signal_prop_changed(wpa_s, WPAS_DBUS_PROP_SCANNING); 2518d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt} 2528d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 2538d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 2548d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtvoid wpas_notify_scan_done(struct wpa_supplicant *wpa_s, int success) 2558d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt{ 2566c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt if (wpa_s->p2p_mgmt) 2576c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt return; 2586c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt 2598d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt wpas_dbus_signal_scan_done(wpa_s, success); 2608d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt} 2618d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 2628d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 2638d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtvoid wpas_notify_scan_results(struct wpa_supplicant *wpa_s) 2648d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt{ 2656c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt if (wpa_s->p2p_mgmt) 2666c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt return; 2676c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt 2688d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt /* notify the old DBus API */ 2698d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt wpa_supplicant_dbus_notify_scan_results(wpa_s); 2708d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 2718d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt wpas_wps_notify_scan_results(wpa_s); 2728d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt} 2738d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 2748d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 2758d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtvoid wpas_notify_wps_credential(struct wpa_supplicant *wpa_s, 2768d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt const struct wps_credential *cred) 2778d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt{ 2786c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt if (wpa_s->p2p_mgmt) 2796c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt return; 2806c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt 2818d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt#ifdef CONFIG_WPS 2828d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt /* notify the old DBus API */ 2838d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt wpa_supplicant_dbus_notify_wps_cred(wpa_s, cred); 2848d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt /* notify the new DBus API */ 2858d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt wpas_dbus_signal_wps_cred(wpa_s, cred); 2868d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt#endif /* CONFIG_WPS */ 2878d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt} 2888d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 2898d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 2908d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtvoid wpas_notify_wps_event_m2d(struct wpa_supplicant *wpa_s, 2918d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt struct wps_event_m2d *m2d) 2928d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt{ 2936c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt if (wpa_s->p2p_mgmt) 2946c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt return; 2956c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt 2968d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt#ifdef CONFIG_WPS 2978d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt wpas_dbus_signal_wps_event_m2d(wpa_s, m2d); 2988d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt#endif /* CONFIG_WPS */ 2998d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt} 3008d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 3018d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 3028d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtvoid wpas_notify_wps_event_fail(struct wpa_supplicant *wpa_s, 3038d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt struct wps_event_fail *fail) 3048d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt{ 3056c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt if (wpa_s->p2p_mgmt) 3066c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt return; 3076c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt 3088d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt#ifdef CONFIG_WPS 3098d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt wpas_dbus_signal_wps_event_fail(wpa_s, fail); 310149327590e009d96301e69772e717e227215d5acRoshan Pius 311149327590e009d96301e69772e717e227215d5acRoshan Pius wpas_hidl_notify_wps_event_fail(wpa_s, fail->peer_macaddr, 312149327590e009d96301e69772e717e227215d5acRoshan Pius fail->config_error, 313149327590e009d96301e69772e717e227215d5acRoshan Pius fail->error_indication); 3148d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt#endif /* CONFIG_WPS */ 3158d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt} 3168d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 3178d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 3188d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtvoid wpas_notify_wps_event_success(struct wpa_supplicant *wpa_s) 3198d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt{ 3206c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt if (wpa_s->p2p_mgmt) 3216c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt return; 3226c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt 3238d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt#ifdef CONFIG_WPS 3248d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt wpas_dbus_signal_wps_event_success(wpa_s); 325149327590e009d96301e69772e717e227215d5acRoshan Pius 326149327590e009d96301e69772e717e227215d5acRoshan Pius wpas_hidl_notify_wps_event_success(wpa_s); 3278d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt#endif /* CONFIG_WPS */ 3288d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt} 3298d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 3307a53dbb56693ee9f55c0cab1a8297436511e8613Dmitry Shmidtvoid wpas_notify_wps_event_pbc_overlap(struct wpa_supplicant *wpa_s) 3317a53dbb56693ee9f55c0cab1a8297436511e8613Dmitry Shmidt{ 3327a53dbb56693ee9f55c0cab1a8297436511e8613Dmitry Shmidt if (wpa_s->p2p_mgmt) 3337a53dbb56693ee9f55c0cab1a8297436511e8613Dmitry Shmidt return; 3347a53dbb56693ee9f55c0cab1a8297436511e8613Dmitry Shmidt 3357a53dbb56693ee9f55c0cab1a8297436511e8613Dmitry Shmidt#ifdef CONFIG_WPS 3367a53dbb56693ee9f55c0cab1a8297436511e8613Dmitry Shmidt wpas_dbus_signal_wps_event_pbc_overlap(wpa_s); 337149327590e009d96301e69772e717e227215d5acRoshan Pius 338149327590e009d96301e69772e717e227215d5acRoshan Pius wpas_hidl_notify_wps_event_pbc_overlap(wpa_s); 3397a53dbb56693ee9f55c0cab1a8297436511e8613Dmitry Shmidt#endif /* CONFIG_WPS */ 3407a53dbb56693ee9f55c0cab1a8297436511e8613Dmitry Shmidt} 3417a53dbb56693ee9f55c0cab1a8297436511e8613Dmitry Shmidt 3428d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 3438d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtvoid wpas_notify_network_added(struct wpa_supplicant *wpa_s, 3448d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt struct wpa_ssid *ssid) 3458d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt{ 3466c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt if (wpa_s->p2p_mgmt) 3476c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt return; 3486c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt 34975ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen /* 35075ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen * Networks objects created during any P2P activities should not be 35175ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen * exposed out. They might/will confuse certain non-P2P aware 35275ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen * applications since these network objects won't behave like 35375ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen * regular ones. 35475ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen */ 355d385445171074ae070c5ddce94344ec0f06d15b4Roshan Pius if (!ssid->p2p_group && wpa_s->global->p2p_group_formation != wpa_s) { 35675ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen wpas_dbus_register_network(wpa_s, ssid); 35757ffbcfc79cd9f7a8389bfcbabea0bced5ed4dbaRoshan Pius wpas_hidl_register_network(wpa_s, ssid); 358d385445171074ae070c5ddce94344ec0f06d15b4Roshan Pius } 35975ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen} 36075ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen 36175ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen 36275ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinenvoid wpas_notify_persistent_group_added(struct wpa_supplicant *wpa_s, 36375ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen struct wpa_ssid *ssid) 36475ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen{ 365c55524ad84d13014e8019491c2b17e5dcf13545aDmitry Shmidt#ifdef CONFIG_P2P 36675ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen wpas_dbus_register_persistent_group(wpa_s, ssid); 36730990d649c75c4f6fc9ae1c30ab17cf8c729d2acGlen Kuhne wpas_hidl_register_network(wpa_s, ssid); 368c55524ad84d13014e8019491c2b17e5dcf13545aDmitry Shmidt#endif /* CONFIG_P2P */ 36975ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen} 37075ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen 37175ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen 37275ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinenvoid wpas_notify_persistent_group_removed(struct wpa_supplicant *wpa_s, 37375ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen struct wpa_ssid *ssid) 37475ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen{ 375c55524ad84d13014e8019491c2b17e5dcf13545aDmitry Shmidt#ifdef CONFIG_P2P 37675ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen wpas_dbus_unregister_persistent_group(wpa_s, ssid->id); 37730990d649c75c4f6fc9ae1c30ab17cf8c729d2acGlen Kuhne wpas_hidl_unregister_network(wpa_s, ssid); 378c55524ad84d13014e8019491c2b17e5dcf13545aDmitry Shmidt#endif /* CONFIG_P2P */ 3798d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt} 3808d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 3818d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 3828d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtvoid wpas_notify_network_removed(struct wpa_supplicant *wpa_s, 3838d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt struct wpa_ssid *ssid) 3848d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt{ 385f21452aea786ac056eb01f1cbba4f553bd502747Dmitry Shmidt if (wpa_s->next_ssid == ssid) 386f21452aea786ac056eb01f1cbba4f553bd502747Dmitry Shmidt wpa_s->next_ssid = NULL; 3871f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidt if (wpa_s->wpa) 3881f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidt wpa_sm_pmksa_cache_flush(wpa_s->wpa, ssid); 389cc00d5dc8483e32158b2ba61ea44b0c38d790ed7Dmitry Shmidt if (!ssid->p2p_group && wpa_s->global->p2p_group_formation != wpa_s && 390d385445171074ae070c5ddce94344ec0f06d15b4Roshan Pius !wpa_s->p2p_mgmt) { 39175ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen wpas_dbus_unregister_network(wpa_s, ssid->id); 39257ffbcfc79cd9f7a8389bfcbabea0bced5ed4dbaRoshan Pius wpas_hidl_unregister_network(wpa_s, ssid); 393d385445171074ae070c5ddce94344ec0f06d15b4Roshan Pius } 3946c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt if (network_is_persistent_group(ssid)) 3956c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt wpas_notify_persistent_group_removed(wpa_s, ssid); 3966c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt 3971f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidt wpas_p2p_network_removed(wpa_s, ssid); 3988d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt} 3998d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 4008d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 4018d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtvoid wpas_notify_bss_added(struct wpa_supplicant *wpa_s, 4028d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt u8 bssid[], unsigned int id) 4038d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt{ 4046c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt if (wpa_s->p2p_mgmt) 4056c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt return; 4066c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt 4078d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt wpas_dbus_register_bss(wpa_s, bssid, id); 4088d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt wpa_msg_ctrl(wpa_s, MSG_INFO, WPA_EVENT_BSS_ADDED "%u " MACSTR, 4098d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt id, MAC2STR(bssid)); 4108d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt} 4118d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 4128d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 4138d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtvoid wpas_notify_bss_removed(struct wpa_supplicant *wpa_s, 4148d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt u8 bssid[], unsigned int id) 4158d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt{ 4166c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt if (wpa_s->p2p_mgmt) 4176c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt return; 4186c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt 4198d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt wpas_dbus_unregister_bss(wpa_s, bssid, id); 4208d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt wpa_msg_ctrl(wpa_s, MSG_INFO, WPA_EVENT_BSS_REMOVED "%u " MACSTR, 4218d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt id, MAC2STR(bssid)); 4228d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt} 4238d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 4248d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 4258d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtvoid wpas_notify_bss_freq_changed(struct wpa_supplicant *wpa_s, 4268d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt unsigned int id) 4278d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt{ 4286c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt if (wpa_s->p2p_mgmt) 4296c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt return; 4306c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt 4318d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt wpas_dbus_bss_signal_prop_changed(wpa_s, WPAS_DBUS_BSS_PROP_FREQ, id); 4328d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt} 4338d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 4348d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 4358d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtvoid wpas_notify_bss_signal_changed(struct wpa_supplicant *wpa_s, 4368d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt unsigned int id) 4378d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt{ 4386c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt if (wpa_s->p2p_mgmt) 4396c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt return; 4406c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt 4418d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt wpas_dbus_bss_signal_prop_changed(wpa_s, WPAS_DBUS_BSS_PROP_SIGNAL, 4428d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt id); 4438d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt} 4448d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 4458d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 4468d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtvoid wpas_notify_bss_privacy_changed(struct wpa_supplicant *wpa_s, 4478d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt unsigned int id) 4488d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt{ 4496c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt if (wpa_s->p2p_mgmt) 4506c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt return; 4516c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt 4528d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt wpas_dbus_bss_signal_prop_changed(wpa_s, WPAS_DBUS_BSS_PROP_PRIVACY, 4538d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt id); 4548d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt} 4558d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 4568d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 4578d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtvoid wpas_notify_bss_mode_changed(struct wpa_supplicant *wpa_s, 4588d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt unsigned int id) 4598d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt{ 4606c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt if (wpa_s->p2p_mgmt) 4616c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt return; 4626c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt 4638d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt wpas_dbus_bss_signal_prop_changed(wpa_s, WPAS_DBUS_BSS_PROP_MODE, id); 4648d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt} 4658d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 4668d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 4678d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtvoid wpas_notify_bss_wpaie_changed(struct wpa_supplicant *wpa_s, 4688d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt unsigned int id) 4698d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt{ 4706c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt if (wpa_s->p2p_mgmt) 4716c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt return; 4726c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt 4738d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt wpas_dbus_bss_signal_prop_changed(wpa_s, WPAS_DBUS_BSS_PROP_WPA, id); 4748d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt} 4758d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 4768d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 4778d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtvoid wpas_notify_bss_rsnie_changed(struct wpa_supplicant *wpa_s, 4788d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt unsigned int id) 4798d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt{ 4806c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt if (wpa_s->p2p_mgmt) 4816c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt return; 4826c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt 4838d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt wpas_dbus_bss_signal_prop_changed(wpa_s, WPAS_DBUS_BSS_PROP_RSN, id); 4848d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt} 4858d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 4868d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 4878d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtvoid wpas_notify_bss_wps_changed(struct wpa_supplicant *wpa_s, 4888d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt unsigned int id) 4898d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt{ 4906c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt if (wpa_s->p2p_mgmt) 4916c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt return; 4926c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt 493d5e4923d04122f81300fa68fb07d64ede28fd44dDmitry Shmidt#ifdef CONFIG_WPS 494d5e4923d04122f81300fa68fb07d64ede28fd44dDmitry Shmidt wpas_dbus_bss_signal_prop_changed(wpa_s, WPAS_DBUS_BSS_PROP_WPS, id); 495d5e4923d04122f81300fa68fb07d64ede28fd44dDmitry Shmidt#endif /* CONFIG_WPS */ 4968d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt} 4978d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 4988d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 4998d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtvoid wpas_notify_bss_ies_changed(struct wpa_supplicant *wpa_s, 5008d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt unsigned int id) 5018d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt{ 5026c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt if (wpa_s->p2p_mgmt) 5036c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt return; 5046c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt 5058d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt wpas_dbus_bss_signal_prop_changed(wpa_s, WPAS_DBUS_BSS_PROP_IES, id); 5068d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt} 5078d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 5088d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 5098d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtvoid wpas_notify_bss_rates_changed(struct wpa_supplicant *wpa_s, 5108d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt unsigned int id) 5118d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt{ 5126c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt if (wpa_s->p2p_mgmt) 5136c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt return; 5146c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt 5158d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt wpas_dbus_bss_signal_prop_changed(wpa_s, WPAS_DBUS_BSS_PROP_RATES, id); 5168d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt} 5178d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 5188d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 519661b4f78e48c697429dc46154a4125892c001718Dmitry Shmidtvoid wpas_notify_bss_seen(struct wpa_supplicant *wpa_s, unsigned int id) 520661b4f78e48c697429dc46154a4125892c001718Dmitry Shmidt{ 5216c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt if (wpa_s->p2p_mgmt) 5226c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt return; 5236c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt 524661b4f78e48c697429dc46154a4125892c001718Dmitry Shmidt wpas_dbus_bss_signal_prop_changed(wpa_s, WPAS_DBUS_BSS_PROP_AGE, id); 525661b4f78e48c697429dc46154a4125892c001718Dmitry Shmidt} 526661b4f78e48c697429dc46154a4125892c001718Dmitry Shmidt 527661b4f78e48c697429dc46154a4125892c001718Dmitry Shmidt 5288d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtvoid wpas_notify_blob_added(struct wpa_supplicant *wpa_s, const char *name) 5298d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt{ 5306c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt if (wpa_s->p2p_mgmt) 5316c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt return; 5326c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt 5338d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt wpas_dbus_signal_blob_added(wpa_s, name); 5348d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt} 5358d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 5368d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 5378d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtvoid wpas_notify_blob_removed(struct wpa_supplicant *wpa_s, const char *name) 5388d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt{ 5396c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt if (wpa_s->p2p_mgmt) 5406c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt return; 5416c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt 5428d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt wpas_dbus_signal_blob_removed(wpa_s, name); 5438d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt} 5448d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 5458d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 5468d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtvoid wpas_notify_debug_level_changed(struct wpa_global *global) 5478d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt{ 5488d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt wpas_dbus_signal_debug_level_changed(global); 5498d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt} 5508d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 5518d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 5528d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtvoid wpas_notify_debug_timestamp_changed(struct wpa_global *global) 5538d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt{ 5548d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt wpas_dbus_signal_debug_timestamp_changed(global); 5558d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt} 5568d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 5578d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 5588d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtvoid wpas_notify_debug_show_keys_changed(struct wpa_global *global) 5598d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt{ 5608d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt wpas_dbus_signal_debug_show_keys_changed(global); 5618d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt} 5628d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 5638d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 5648d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtvoid wpas_notify_suspend(struct wpa_global *global) 5658d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt{ 5668d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt struct wpa_supplicant *wpa_s; 5678d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 5688d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt os_get_time(&global->suspend_time); 5698d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt wpa_printf(MSG_DEBUG, "System suspend notification"); 5708d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt for (wpa_s = global->ifaces; wpa_s; wpa_s = wpa_s->next) 5718d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt wpa_drv_suspend(wpa_s); 5728d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt} 5738d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 5748d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 5758d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtvoid wpas_notify_resume(struct wpa_global *global) 5768d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt{ 5778d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt struct os_time now; 5788d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt int slept; 5798d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt struct wpa_supplicant *wpa_s; 5808d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 5818d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt if (global->suspend_time.sec == 0) 5828d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt slept = -1; 5838d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt else { 5848d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt os_get_time(&now); 5858d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt slept = now.sec - global->suspend_time.sec; 5868d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt } 5878d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt wpa_printf(MSG_DEBUG, "System resume notification (slept %d seconds)", 5888d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt slept); 5898d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 5908d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt for (wpa_s = global->ifaces; wpa_s; wpa_s = wpa_s->next) { 5918d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt wpa_drv_resume(wpa_s); 5928d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt if (wpa_s->wpa_state == WPA_DISCONNECTED) 5938d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt wpa_supplicant_req_scan(wpa_s, 0, 100000); 5948d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt } 5958d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt} 5968d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 5978d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 5988d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt#ifdef CONFIG_P2P 5998d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 6008bd70b7d6ba220544ee2f0e201e5df23e277fa1dDmitry Shmidtvoid wpas_notify_p2p_find_stopped(struct wpa_supplicant *wpa_s) 6018bd70b7d6ba220544ee2f0e201e5df23e277fa1dDmitry Shmidt{ 6028bd70b7d6ba220544ee2f0e201e5df23e277fa1dDmitry Shmidt /* Notify P2P find has stopped */ 6038bd70b7d6ba220544ee2f0e201e5df23e277fa1dDmitry Shmidt wpas_dbus_signal_p2p_find_stopped(wpa_s); 604fd2fd66037872fa3b6adcd2a72adc66dda5912caRoshan Pius 605fd2fd66037872fa3b6adcd2a72adc66dda5912caRoshan Pius wpas_hidl_notify_p2p_find_stopped(wpa_s); 6068bd70b7d6ba220544ee2f0e201e5df23e277fa1dDmitry Shmidt} 6078bd70b7d6ba220544ee2f0e201e5df23e277fa1dDmitry Shmidt 6088bd70b7d6ba220544ee2f0e201e5df23e277fa1dDmitry Shmidt 6098d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtvoid wpas_notify_p2p_device_found(struct wpa_supplicant *wpa_s, 610fd2fd66037872fa3b6adcd2a72adc66dda5912caRoshan Pius const u8 *addr, const struct p2p_peer_info *info, 611fd2fd66037872fa3b6adcd2a72adc66dda5912caRoshan Pius const u8* peer_wfd_device_info, u8 peer_wfd_device_info_len, 612fd2fd66037872fa3b6adcd2a72adc66dda5912caRoshan Pius int new_device) 6138d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt{ 61475ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen if (new_device) { 61575ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen /* Create the new peer object */ 616fd2fd66037872fa3b6adcd2a72adc66dda5912caRoshan Pius wpas_dbus_register_peer(wpa_s, info->p2p_device_addr); 61775ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen } 61875ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen 61975ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen /* Notify a new peer has been detected*/ 620fd2fd66037872fa3b6adcd2a72adc66dda5912caRoshan Pius wpas_dbus_signal_peer_device_found(wpa_s, info->p2p_device_addr); 621fd2fd66037872fa3b6adcd2a72adc66dda5912caRoshan Pius 622fd2fd66037872fa3b6adcd2a72adc66dda5912caRoshan Pius wpas_hidl_notify_p2p_device_found(wpa_s, addr, info, 623fd2fd66037872fa3b6adcd2a72adc66dda5912caRoshan Pius peer_wfd_device_info, 624fd2fd66037872fa3b6adcd2a72adc66dda5912caRoshan Pius peer_wfd_device_info_len); 6258d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt} 6268d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 6278d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 6288d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtvoid wpas_notify_p2p_device_lost(struct wpa_supplicant *wpa_s, 6298d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt const u8 *dev_addr) 6308d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt{ 63175ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen wpas_dbus_unregister_peer(wpa_s, dev_addr); 63275ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen 63375ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen /* Create signal on interface object*/ 63475ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen wpas_dbus_signal_peer_device_lost(wpa_s, dev_addr); 635fd2fd66037872fa3b6adcd2a72adc66dda5912caRoshan Pius 636fd2fd66037872fa3b6adcd2a72adc66dda5912caRoshan Pius wpas_hidl_notify_p2p_device_lost(wpa_s, dev_addr); 6378d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt} 6388d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 6398d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 6408d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtvoid wpas_notify_p2p_group_removed(struct wpa_supplicant *wpa_s, 6418d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt const struct wpa_ssid *ssid, 6428d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt const char *role) 6438d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt{ 64475ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen wpas_dbus_signal_p2p_group_removed(wpa_s, role); 64503658834c33748b9ad86f3d4cdf0c7be9c6887d1Dmitry Shmidt 64603658834c33748b9ad86f3d4cdf0c7be9c6887d1Dmitry Shmidt wpas_dbus_unregister_p2p_group(wpa_s, ssid); 647fd2fd66037872fa3b6adcd2a72adc66dda5912caRoshan Pius 648fd2fd66037872fa3b6adcd2a72adc66dda5912caRoshan Pius wpas_hidl_notify_p2p_group_removed(wpa_s, ssid, role); 6498d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt} 6508d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 6518d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 6528d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtvoid wpas_notify_p2p_go_neg_req(struct wpa_supplicant *wpa_s, 6537a53dbb56693ee9f55c0cab1a8297436511e8613Dmitry Shmidt const u8 *src, u16 dev_passwd_id, u8 go_intent) 6548d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt{ 6557a53dbb56693ee9f55c0cab1a8297436511e8613Dmitry Shmidt wpas_dbus_signal_p2p_go_neg_req(wpa_s, src, dev_passwd_id, go_intent); 656fd2fd66037872fa3b6adcd2a72adc66dda5912caRoshan Pius 657fd2fd66037872fa3b6adcd2a72adc66dda5912caRoshan Pius wpas_hidl_notify_p2p_go_neg_req(wpa_s, src, dev_passwd_id, go_intent); 6588d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt} 6598d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 6608d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 6611f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidtvoid wpas_notify_p2p_go_neg_completed(struct wpa_supplicant *wpa_s, 6621f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidt struct p2p_go_neg_results *res) 6638d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt{ 6641f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidt wpas_dbus_signal_p2p_go_neg_resp(wpa_s, res); 665fd2fd66037872fa3b6adcd2a72adc66dda5912caRoshan Pius 666fd2fd66037872fa3b6adcd2a72adc66dda5912caRoshan Pius wpas_hidl_notify_p2p_go_neg_completed(wpa_s, res); 6678d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt} 6688d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 6698d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 6708d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtvoid wpas_notify_p2p_invitation_result(struct wpa_supplicant *wpa_s, 6718d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt int status, const u8 *bssid) 6728d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt{ 67375ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen wpas_dbus_signal_p2p_invitation_result(wpa_s, status, bssid); 674fd2fd66037872fa3b6adcd2a72adc66dda5912caRoshan Pius 675fd2fd66037872fa3b6adcd2a72adc66dda5912caRoshan Pius wpas_hidl_notify_p2p_invitation_result(wpa_s, status, bssid); 6768d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt} 6778d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 6788d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 6798d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtvoid wpas_notify_p2p_sd_request(struct wpa_supplicant *wpa_s, 6808d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt int freq, const u8 *sa, u8 dialog_token, 6818d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt u16 update_indic, const u8 *tlvs, 6828d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt size_t tlvs_len) 6838d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt{ 68475ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen wpas_dbus_signal_p2p_sd_request(wpa_s, freq, sa, dialog_token, 68575ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen update_indic, tlvs, tlvs_len); 6868d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt} 6878d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 6888d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 6898d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtvoid wpas_notify_p2p_sd_response(struct wpa_supplicant *wpa_s, 6908d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt const u8 *sa, u16 update_indic, 6918d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt const u8 *tlvs, size_t tlvs_len) 6928d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt{ 69375ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen wpas_dbus_signal_p2p_sd_response(wpa_s, sa, update_indic, 69475ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen tlvs, tlvs_len); 695fd2fd66037872fa3b6adcd2a72adc66dda5912caRoshan Pius 696fd2fd66037872fa3b6adcd2a72adc66dda5912caRoshan Pius wpas_hidl_notify_p2p_sd_response(wpa_s, sa, update_indic, 697fd2fd66037872fa3b6adcd2a72adc66dda5912caRoshan Pius tlvs, tlvs_len); 69875ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen} 69975ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen 70075ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen 70175ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen/** 70275ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen * wpas_notify_p2p_provision_discovery - Notification of provision discovery 70375ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen * @dev_addr: Who sent the request or responded to our request. 70475ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen * @request: Will be 1 if request, 0 for response. 70575ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen * @status: Valid only in case of response (0 in case of success) 70675ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen * @config_methods: WPS config methods 70775ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen * @generated_pin: PIN to be displayed in case of WPS_CONFIG_DISPLAY method 70875ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen * 70975ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen * This can be used to notify: 71075ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen * - Requests or responses 71175ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen * - Various config methods 71275ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen * - Failure condition in case of response 71375ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen */ 71475ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinenvoid wpas_notify_p2p_provision_discovery(struct wpa_supplicant *wpa_s, 71575ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen const u8 *dev_addr, int request, 71675ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen enum p2p_prov_disc_status status, 71775ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen u16 config_methods, 71875ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen unsigned int generated_pin) 71975ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen{ 72075ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen wpas_dbus_signal_p2p_provision_discovery(wpa_s, dev_addr, request, 72175ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen status, config_methods, 72275ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen generated_pin); 723fd2fd66037872fa3b6adcd2a72adc66dda5912caRoshan Pius 724fd2fd66037872fa3b6adcd2a72adc66dda5912caRoshan Pius wpas_hidl_notify_p2p_provision_discovery(wpa_s, dev_addr, request, 725fd2fd66037872fa3b6adcd2a72adc66dda5912caRoshan Pius status, config_methods, 726fd2fd66037872fa3b6adcd2a72adc66dda5912caRoshan Pius generated_pin); 727fd2fd66037872fa3b6adcd2a72adc66dda5912caRoshan Pius 72875ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen} 72975ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen 73075ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen 73175ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinenvoid wpas_notify_p2p_group_started(struct wpa_supplicant *wpa_s, 732d5ab1b53af720d05586ccc0addabe93459f1f388Dmitry Shmidt struct wpa_ssid *ssid, int persistent, 733abb90a3fc1917e628167827cb14e742000605332Dmitry Shmidt int client, const u8 *ip) 73475ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen{ 73575ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen /* Notify a group has been started */ 73675ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen wpas_dbus_register_p2p_group(wpa_s, ssid); 73775ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen 738abb90a3fc1917e628167827cb14e742000605332Dmitry Shmidt wpas_dbus_signal_p2p_group_started(wpa_s, client, persistent, ip); 739fd2fd66037872fa3b6adcd2a72adc66dda5912caRoshan Pius 7407a1c8485ae3a467debc89ca8477cf6f4b4217f21Roshan Pius wpas_hidl_notify_p2p_group_started(wpa_s, ssid, persistent, client); 74175ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen} 74275ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen 74375ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen 744d80a401aed31d06f261efd19223cf55d1a2a8228Dmitry Shmidtvoid wpas_notify_p2p_group_formation_failure(struct wpa_supplicant *wpa_s, 745d80a401aed31d06f261efd19223cf55d1a2a8228Dmitry Shmidt const char *reason) 746d80a401aed31d06f261efd19223cf55d1a2a8228Dmitry Shmidt{ 747d80a401aed31d06f261efd19223cf55d1a2a8228Dmitry Shmidt /* Notify a group formation failed */ 748d80a401aed31d06f261efd19223cf55d1a2a8228Dmitry Shmidt wpas_dbus_signal_p2p_group_formation_failure(wpa_s, reason); 749fd2fd66037872fa3b6adcd2a72adc66dda5912caRoshan Pius 750fd2fd66037872fa3b6adcd2a72adc66dda5912caRoshan Pius wpas_hidl_notify_p2p_group_formation_failure(wpa_s, reason); 751d80a401aed31d06f261efd19223cf55d1a2a8228Dmitry Shmidt} 752d80a401aed31d06f261efd19223cf55d1a2a8228Dmitry Shmidt 753d80a401aed31d06f261efd19223cf55d1a2a8228Dmitry Shmidt 75475ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinenvoid wpas_notify_p2p_wps_failed(struct wpa_supplicant *wpa_s, 75575ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen struct wps_event_fail *fail) 75675ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen{ 75775ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen wpas_dbus_signal_p2p_wps_failed(wpa_s, fail); 7588d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt} 7598d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 760d80a401aed31d06f261efd19223cf55d1a2a8228Dmitry Shmidt 761d80a401aed31d06f261efd19223cf55d1a2a8228Dmitry Shmidtvoid wpas_notify_p2p_invitation_received(struct wpa_supplicant *wpa_s, 762d80a401aed31d06f261efd19223cf55d1a2a8228Dmitry Shmidt const u8 *sa, const u8 *go_dev_addr, 763d80a401aed31d06f261efd19223cf55d1a2a8228Dmitry Shmidt const u8 *bssid, int id, int op_freq) 764d80a401aed31d06f261efd19223cf55d1a2a8228Dmitry Shmidt{ 765d80a401aed31d06f261efd19223cf55d1a2a8228Dmitry Shmidt /* Notify a P2P Invitation Request */ 766d80a401aed31d06f261efd19223cf55d1a2a8228Dmitry Shmidt wpas_dbus_signal_p2p_invitation_received(wpa_s, sa, go_dev_addr, bssid, 767d80a401aed31d06f261efd19223cf55d1a2a8228Dmitry Shmidt id, op_freq); 768fd2fd66037872fa3b6adcd2a72adc66dda5912caRoshan Pius 769fd2fd66037872fa3b6adcd2a72adc66dda5912caRoshan Pius wpas_hidl_notify_p2p_invitation_received(wpa_s, sa, go_dev_addr, bssid, 770fd2fd66037872fa3b6adcd2a72adc66dda5912caRoshan Pius id, op_freq); 771d80a401aed31d06f261efd19223cf55d1a2a8228Dmitry Shmidt} 772d80a401aed31d06f261efd19223cf55d1a2a8228Dmitry Shmidt 7738d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt#endif /* CONFIG_P2P */ 7748d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 7758d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 7768d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtstatic void wpas_notify_ap_sta_authorized(struct wpa_supplicant *wpa_s, 7771f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidt const u8 *sta, 7781f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidt const u8 *p2p_dev_addr) 7798d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt{ 78075ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen#ifdef CONFIG_P2P 7811f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidt wpas_p2p_notify_ap_sta_authorized(wpa_s, p2p_dev_addr); 7821f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidt 78375ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen /* 78475ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen * Create 'peer-joined' signal on group object -- will also 78575ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen * check P2P itself. 78675ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen */ 7876c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt if (p2p_dev_addr) 7886c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt wpas_dbus_signal_p2p_peer_joined(wpa_s, p2p_dev_addr); 78975ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen#endif /* CONFIG_P2P */ 79034af306c42b7ccf956508e7cd23f0ba90606e360Dmitry Shmidt 79134af306c42b7ccf956508e7cd23f0ba90606e360Dmitry Shmidt /* Notify listeners a new station has been authorized */ 79234af306c42b7ccf956508e7cd23f0ba90606e360Dmitry Shmidt wpas_dbus_signal_sta_authorized(wpa_s, sta); 793fd2fd66037872fa3b6adcd2a72adc66dda5912caRoshan Pius 794fd2fd66037872fa3b6adcd2a72adc66dda5912caRoshan Pius wpas_hidl_notify_ap_sta_authorized(wpa_s, sta, p2p_dev_addr); 7958d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt} 7968d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 7978d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 7988d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtstatic void wpas_notify_ap_sta_deauthorized(struct wpa_supplicant *wpa_s, 799d30ac604c9f6da71a0dd7f46d25be05a2a62cfbbDmitry Shmidt const u8 *sta, 800d30ac604c9f6da71a0dd7f46d25be05a2a62cfbbDmitry Shmidt const u8 *p2p_dev_addr) 8018d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt{ 80275ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen#ifdef CONFIG_P2P 80375ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen /* 80475ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen * Create 'peer-disconnected' signal on group object if this 80575ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen * is a P2P group. 80675ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen */ 8076c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt if (p2p_dev_addr) 8086c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt wpas_dbus_signal_p2p_peer_disconnected(wpa_s, p2p_dev_addr); 80975ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen#endif /* CONFIG_P2P */ 81034af306c42b7ccf956508e7cd23f0ba90606e360Dmitry Shmidt 81134af306c42b7ccf956508e7cd23f0ba90606e360Dmitry Shmidt /* Notify listeners a station has been deauthorized */ 81234af306c42b7ccf956508e7cd23f0ba90606e360Dmitry Shmidt wpas_dbus_signal_sta_deauthorized(wpa_s, sta); 813fd2fd66037872fa3b6adcd2a72adc66dda5912caRoshan Pius 814fd2fd66037872fa3b6adcd2a72adc66dda5912caRoshan Pius wpas_hidl_notify_ap_sta_deauthorized(wpa_s, sta, p2p_dev_addr); 8158d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt} 8168d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 8178d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 8188d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtvoid wpas_notify_sta_authorized(struct wpa_supplicant *wpa_s, 8191f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidt const u8 *mac_addr, int authorized, 8201f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidt const u8 *p2p_dev_addr) 8218d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt{ 8228d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt if (authorized) 8231f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidt wpas_notify_ap_sta_authorized(wpa_s, mac_addr, p2p_dev_addr); 8248d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt else 825d30ac604c9f6da71a0dd7f46d25be05a2a62cfbbDmitry Shmidt wpas_notify_ap_sta_deauthorized(wpa_s, mac_addr, p2p_dev_addr); 8268d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt} 827c55524ad84d13014e8019491c2b17e5dcf13545aDmitry Shmidt 828c55524ad84d13014e8019491c2b17e5dcf13545aDmitry Shmidt 829c55524ad84d13014e8019491c2b17e5dcf13545aDmitry Shmidtvoid wpas_notify_certification(struct wpa_supplicant *wpa_s, int depth, 8302f74e36e84064ffa32f82f3decf36b653c7e4fadDmitry Shmidt const char *subject, const char *altsubject[], 8312f74e36e84064ffa32f82f3decf36b653c7e4fadDmitry Shmidt int num_altsubject, const char *cert_hash, 832c55524ad84d13014e8019491c2b17e5dcf13545aDmitry Shmidt const struct wpabuf *cert) 833c55524ad84d13014e8019491c2b17e5dcf13545aDmitry Shmidt{ 834c55524ad84d13014e8019491c2b17e5dcf13545aDmitry Shmidt wpa_msg(wpa_s, MSG_INFO, WPA_EVENT_EAP_PEER_CERT 835c55524ad84d13014e8019491c2b17e5dcf13545aDmitry Shmidt "depth=%d subject='%s'%s%s", 8362f74e36e84064ffa32f82f3decf36b653c7e4fadDmitry Shmidt depth, subject, cert_hash ? " hash=" : "", 837c55524ad84d13014e8019491c2b17e5dcf13545aDmitry Shmidt cert_hash ? cert_hash : ""); 838c55524ad84d13014e8019491c2b17e5dcf13545aDmitry Shmidt 839c55524ad84d13014e8019491c2b17e5dcf13545aDmitry Shmidt if (cert) { 840c55524ad84d13014e8019491c2b17e5dcf13545aDmitry Shmidt char *cert_hex; 841c55524ad84d13014e8019491c2b17e5dcf13545aDmitry Shmidt size_t len = wpabuf_len(cert) * 2 + 1; 842c55524ad84d13014e8019491c2b17e5dcf13545aDmitry Shmidt cert_hex = os_malloc(len); 843c55524ad84d13014e8019491c2b17e5dcf13545aDmitry Shmidt if (cert_hex) { 844c55524ad84d13014e8019491c2b17e5dcf13545aDmitry Shmidt wpa_snprintf_hex(cert_hex, len, wpabuf_head(cert), 845c55524ad84d13014e8019491c2b17e5dcf13545aDmitry Shmidt wpabuf_len(cert)); 846c55524ad84d13014e8019491c2b17e5dcf13545aDmitry Shmidt wpa_msg_ctrl(wpa_s, MSG_INFO, 847c55524ad84d13014e8019491c2b17e5dcf13545aDmitry Shmidt WPA_EVENT_EAP_PEER_CERT 848c55524ad84d13014e8019491c2b17e5dcf13545aDmitry Shmidt "depth=%d subject='%s' cert=%s", 849c55524ad84d13014e8019491c2b17e5dcf13545aDmitry Shmidt depth, subject, cert_hex); 850c55524ad84d13014e8019491c2b17e5dcf13545aDmitry Shmidt os_free(cert_hex); 851c55524ad84d13014e8019491c2b17e5dcf13545aDmitry Shmidt } 852c55524ad84d13014e8019491c2b17e5dcf13545aDmitry Shmidt } 853c55524ad84d13014e8019491c2b17e5dcf13545aDmitry Shmidt 8542f74e36e84064ffa32f82f3decf36b653c7e4fadDmitry Shmidt if (altsubject) { 8552f74e36e84064ffa32f82f3decf36b653c7e4fadDmitry Shmidt int i; 8562f74e36e84064ffa32f82f3decf36b653c7e4fadDmitry Shmidt 8572f74e36e84064ffa32f82f3decf36b653c7e4fadDmitry Shmidt for (i = 0; i < num_altsubject; i++) 8582f74e36e84064ffa32f82f3decf36b653c7e4fadDmitry Shmidt wpa_msg(wpa_s, MSG_INFO, WPA_EVENT_EAP_PEER_ALT 8592f74e36e84064ffa32f82f3decf36b653c7e4fadDmitry Shmidt "depth=%d %s", depth, altsubject[i]); 8602f74e36e84064ffa32f82f3decf36b653c7e4fadDmitry Shmidt } 8612f74e36e84064ffa32f82f3decf36b653c7e4fadDmitry Shmidt 862c55524ad84d13014e8019491c2b17e5dcf13545aDmitry Shmidt /* notify the old DBus API */ 863c55524ad84d13014e8019491c2b17e5dcf13545aDmitry Shmidt wpa_supplicant_dbus_notify_certification(wpa_s, depth, subject, 864c55524ad84d13014e8019491c2b17e5dcf13545aDmitry Shmidt cert_hash, cert); 865c55524ad84d13014e8019491c2b17e5dcf13545aDmitry Shmidt /* notify the new DBus API */ 8662f74e36e84064ffa32f82f3decf36b653c7e4fadDmitry Shmidt wpas_dbus_signal_certification(wpa_s, depth, subject, altsubject, 8672f74e36e84064ffa32f82f3decf36b653c7e4fadDmitry Shmidt num_altsubject, cert_hash, cert); 868c55524ad84d13014e8019491c2b17e5dcf13545aDmitry Shmidt} 86904949598a23f501be6eec21697465fd46a28840aDmitry Shmidt 87004949598a23f501be6eec21697465fd46a28840aDmitry Shmidt 87104949598a23f501be6eec21697465fd46a28840aDmitry Shmidtvoid wpas_notify_preq(struct wpa_supplicant *wpa_s, 87204949598a23f501be6eec21697465fd46a28840aDmitry Shmidt const u8 *addr, const u8 *dst, const u8 *bssid, 87304949598a23f501be6eec21697465fd46a28840aDmitry Shmidt const u8 *ie, size_t ie_len, u32 ssi_signal) 87404949598a23f501be6eec21697465fd46a28840aDmitry Shmidt{ 87504949598a23f501be6eec21697465fd46a28840aDmitry Shmidt#ifdef CONFIG_AP 87604949598a23f501be6eec21697465fd46a28840aDmitry Shmidt wpas_dbus_signal_preq(wpa_s, addr, dst, bssid, ie, ie_len, ssi_signal); 87704949598a23f501be6eec21697465fd46a28840aDmitry Shmidt#endif /* CONFIG_AP */ 87804949598a23f501be6eec21697465fd46a28840aDmitry Shmidt} 87904949598a23f501be6eec21697465fd46a28840aDmitry Shmidt 88004949598a23f501be6eec21697465fd46a28840aDmitry Shmidt 88104949598a23f501be6eec21697465fd46a28840aDmitry Shmidtvoid wpas_notify_eap_status(struct wpa_supplicant *wpa_s, const char *status, 88204949598a23f501be6eec21697465fd46a28840aDmitry Shmidt const char *parameter) 88304949598a23f501be6eec21697465fd46a28840aDmitry Shmidt{ 88404949598a23f501be6eec21697465fd46a28840aDmitry Shmidt wpas_dbus_signal_eap_status(wpa_s, status, parameter); 8858da800a193fb6f8832218715f82a7b4e2d2ad338Dmitry Shmidt wpa_msg_ctrl(wpa_s, MSG_INFO, WPA_EVENT_EAP_STATUS 8868da800a193fb6f8832218715f82a7b4e2d2ad338Dmitry Shmidt "status='%s' parameter='%s'", 8878da800a193fb6f8832218715f82a7b4e2d2ad338Dmitry Shmidt status, parameter); 88804949598a23f501be6eec21697465fd46a28840aDmitry Shmidt} 889661b4f78e48c697429dc46154a4125892c001718Dmitry Shmidt 890661b4f78e48c697429dc46154a4125892c001718Dmitry Shmidt 891661b4f78e48c697429dc46154a4125892c001718Dmitry Shmidtvoid wpas_notify_network_bssid_set_changed(struct wpa_supplicant *wpa_s, 892661b4f78e48c697429dc46154a4125892c001718Dmitry Shmidt struct wpa_ssid *ssid) 893661b4f78e48c697429dc46154a4125892c001718Dmitry Shmidt{ 894661b4f78e48c697429dc46154a4125892c001718Dmitry Shmidt if (wpa_s->current_ssid != ssid) 895661b4f78e48c697429dc46154a4125892c001718Dmitry Shmidt return; 896661b4f78e48c697429dc46154a4125892c001718Dmitry Shmidt 897661b4f78e48c697429dc46154a4125892c001718Dmitry Shmidt wpa_dbg(wpa_s, MSG_DEBUG, 898661b4f78e48c697429dc46154a4125892c001718Dmitry Shmidt "Network bssid config changed for the current network - within-ESS roaming %s", 899661b4f78e48c697429dc46154a4125892c001718Dmitry Shmidt ssid->bssid_set ? "disabled" : "enabled"); 900661b4f78e48c697429dc46154a4125892c001718Dmitry Shmidt 901661b4f78e48c697429dc46154a4125892c001718Dmitry Shmidt wpa_drv_roaming(wpa_s, !ssid->bssid_set, 902661b4f78e48c697429dc46154a4125892c001718Dmitry Shmidt ssid->bssid_set ? ssid->bssid : NULL); 903661b4f78e48c697429dc46154a4125892c001718Dmitry Shmidt} 9047f65602d49069f96a7bb44da8bd79ffe8d4c6a98Dmitry Shmidt 9057f65602d49069f96a7bb44da8bd79ffe8d4c6a98Dmitry Shmidt 9067f65602d49069f96a7bb44da8bd79ffe8d4c6a98Dmitry Shmidtvoid wpas_notify_network_type_changed(struct wpa_supplicant *wpa_s, 9077f65602d49069f96a7bb44da8bd79ffe8d4c6a98Dmitry Shmidt struct wpa_ssid *ssid) 9087f65602d49069f96a7bb44da8bd79ffe8d4c6a98Dmitry Shmidt{ 9097f65602d49069f96a7bb44da8bd79ffe8d4c6a98Dmitry Shmidt#ifdef CONFIG_P2P 9107f65602d49069f96a7bb44da8bd79ffe8d4c6a98Dmitry Shmidt if (ssid->disabled == 2) { 9117f65602d49069f96a7bb44da8bd79ffe8d4c6a98Dmitry Shmidt /* Changed from normal network profile to persistent group */ 9127f65602d49069f96a7bb44da8bd79ffe8d4c6a98Dmitry Shmidt ssid->disabled = 0; 9137f65602d49069f96a7bb44da8bd79ffe8d4c6a98Dmitry Shmidt wpas_dbus_unregister_network(wpa_s, ssid->id); 9147f65602d49069f96a7bb44da8bd79ffe8d4c6a98Dmitry Shmidt ssid->disabled = 2; 9157a53dbb56693ee9f55c0cab1a8297436511e8613Dmitry Shmidt ssid->p2p_persistent_group = 1; 9167f65602d49069f96a7bb44da8bd79ffe8d4c6a98Dmitry Shmidt wpas_dbus_register_persistent_group(wpa_s, ssid); 9177f65602d49069f96a7bb44da8bd79ffe8d4c6a98Dmitry Shmidt } else { 9187f65602d49069f96a7bb44da8bd79ffe8d4c6a98Dmitry Shmidt /* Changed from persistent group to normal network profile */ 9197f65602d49069f96a7bb44da8bd79ffe8d4c6a98Dmitry Shmidt wpas_dbus_unregister_persistent_group(wpa_s, ssid->id); 9207a53dbb56693ee9f55c0cab1a8297436511e8613Dmitry Shmidt ssid->p2p_persistent_group = 0; 9217f65602d49069f96a7bb44da8bd79ffe8d4c6a98Dmitry Shmidt wpas_dbus_register_network(wpa_s, ssid); 9227f65602d49069f96a7bb44da8bd79ffe8d4c6a98Dmitry Shmidt } 9237f65602d49069f96a7bb44da8bd79ffe8d4c6a98Dmitry Shmidt#endif /* CONFIG_P2P */ 9247f65602d49069f96a7bb44da8bd79ffe8d4c6a98Dmitry Shmidt} 92504a9d74743634109939ddb9bc40814681a03dc84Roshan Pius 92604a9d74743634109939ddb9bc40814681a03dc84Roshan Piusvoid wpas_notify_anqp_query_done(struct wpa_supplicant *wpa_s, const u8* bssid, 92704a9d74743634109939ddb9bc40814681a03dc84Roshan Pius const char *result, 92804a9d74743634109939ddb9bc40814681a03dc84Roshan Pius const struct wpa_bss_anqp *anqp) 92904a9d74743634109939ddb9bc40814681a03dc84Roshan Pius{ 93004a9d74743634109939ddb9bc40814681a03dc84Roshan Pius#ifdef CONFIG_INTERWORKING 93104a9d74743634109939ddb9bc40814681a03dc84Roshan Pius if (!wpa_s || !bssid || !anqp) 93204a9d74743634109939ddb9bc40814681a03dc84Roshan Pius return; 9339322a34c4f97d96c1c42c5fbb53fb3d4fba933d6Roshan Pius 9349322a34c4f97d96c1c42c5fbb53fb3d4fba933d6Roshan Pius wpas_hidl_notify_anqp_query_done(wpa_s, bssid, result, anqp); 93504a9d74743634109939ddb9bc40814681a03dc84Roshan Pius#endif /* CONFIG_INTERWORKING */ 93604a9d74743634109939ddb9bc40814681a03dc84Roshan Pius} 93704a9d74743634109939ddb9bc40814681a03dc84Roshan Pius 93804a9d74743634109939ddb9bc40814681a03dc84Roshan Piusvoid wpas_notify_hs20_icon_query_done(struct wpa_supplicant *wpa_s, const u8* bssid, 93904a9d74743634109939ddb9bc40814681a03dc84Roshan Pius const char* file_name, const u8* image, 94004a9d74743634109939ddb9bc40814681a03dc84Roshan Pius u32 image_length) 94104a9d74743634109939ddb9bc40814681a03dc84Roshan Pius{ 94204a9d74743634109939ddb9bc40814681a03dc84Roshan Pius#ifdef CONFIG_HS20 94304a9d74743634109939ddb9bc40814681a03dc84Roshan Pius if (!wpa_s || !bssid || !file_name || !image) 94404a9d74743634109939ddb9bc40814681a03dc84Roshan Pius return; 9459322a34c4f97d96c1c42c5fbb53fb3d4fba933d6Roshan Pius 9469322a34c4f97d96c1c42c5fbb53fb3d4fba933d6Roshan Pius wpas_hidl_notify_hs20_icon_query_done(wpa_s, bssid, file_name, image, 9479322a34c4f97d96c1c42c5fbb53fb3d4fba933d6Roshan Pius image_length); 94804a9d74743634109939ddb9bc40814681a03dc84Roshan Pius#endif /* CONFIG_HS20 */ 94904a9d74743634109939ddb9bc40814681a03dc84Roshan Pius} 95004a9d74743634109939ddb9bc40814681a03dc84Roshan Pius 95104a9d74743634109939ddb9bc40814681a03dc84Roshan Piusvoid wpas_notify_hs20_rx_subscription_remediation(struct wpa_supplicant *wpa_s, 95204a9d74743634109939ddb9bc40814681a03dc84Roshan Pius const char* url, 95304a9d74743634109939ddb9bc40814681a03dc84Roshan Pius u8 osu_method) 95404a9d74743634109939ddb9bc40814681a03dc84Roshan Pius{ 95504a9d74743634109939ddb9bc40814681a03dc84Roshan Pius#ifdef CONFIG_HS20 95604a9d74743634109939ddb9bc40814681a03dc84Roshan Pius if (!wpa_s || !url) 95704a9d74743634109939ddb9bc40814681a03dc84Roshan Pius return; 9589322a34c4f97d96c1c42c5fbb53fb3d4fba933d6Roshan Pius 9599322a34c4f97d96c1c42c5fbb53fb3d4fba933d6Roshan Pius wpas_hidl_notify_hs20_rx_subscription_remediation(wpa_s, url, osu_method); 96004a9d74743634109939ddb9bc40814681a03dc84Roshan Pius#endif /* CONFIG_HS20 */ 96104a9d74743634109939ddb9bc40814681a03dc84Roshan Pius} 96204a9d74743634109939ddb9bc40814681a03dc84Roshan Pius 96304a9d74743634109939ddb9bc40814681a03dc84Roshan Piusvoid wpas_notify_hs20_rx_deauth_imminent_notice(struct wpa_supplicant *wpa_s, 96404a9d74743634109939ddb9bc40814681a03dc84Roshan Pius u8 code, u16 reauth_delay, 96504a9d74743634109939ddb9bc40814681a03dc84Roshan Pius const char *url) 96604a9d74743634109939ddb9bc40814681a03dc84Roshan Pius{ 96704a9d74743634109939ddb9bc40814681a03dc84Roshan Pius#ifdef CONFIG_HS20 96804a9d74743634109939ddb9bc40814681a03dc84Roshan Pius if (!wpa_s || !url) 96904a9d74743634109939ddb9bc40814681a03dc84Roshan Pius return; 9709322a34c4f97d96c1c42c5fbb53fb3d4fba933d6Roshan Pius 9719322a34c4f97d96c1c42c5fbb53fb3d4fba933d6Roshan Pius wpas_hidl_notify_hs20_rx_deauth_imminent_notice(wpa_s, code, reauth_delay, 9729322a34c4f97d96c1c42c5fbb53fb3d4fba933d6Roshan Pius url); 97304a9d74743634109939ddb9bc40814681a03dc84Roshan Pius#endif /* CONFIG_HS20 */ 97404a9d74743634109939ddb9bc40814681a03dc84Roshan Pius} 975