notify.c revision d6d8b8ddebec155f165137ac6e9b5ef0c003f0c0
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" 1657ffbcfc79cd9f7a8389bfcbabea0bced5ed4dbaRoshan Pius#include "hidl/hidl.h" 178d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt#include "dbus/dbus_common.h" 188d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt#include "dbus/dbus_old.h" 198d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt#include "dbus/dbus_new.h" 201f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidt#include "rsn_supp/wpa.h" 21d80a401aed31d06f261efd19223cf55d1a2a8228Dmitry Shmidt#include "fst/fst.h" 228d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt#include "driver_i.h" 238d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt#include "scan.h" 248d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt#include "p2p_supplicant.h" 258d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt#include "sme.h" 268d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt#include "notify.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); 14704949598a23f501be6eec21697465fd46a28840aDmitry Shmidt} 14804949598a23f501be6eec21697465fd46a28840aDmitry Shmidt 14904949598a23f501be6eec21697465fd46a28840aDmitry Shmidt 15031a29cc7ed87b62465c7e01f03484f4643d12309Dmitry Shmidtvoid wpas_notify_assoc_status_code(struct wpa_supplicant *wpa_s) 15131a29cc7ed87b62465c7e01f03484f4643d12309Dmitry Shmidt{ 15231a29cc7ed87b62465c7e01f03484f4643d12309Dmitry Shmidt if (wpa_s->p2p_mgmt) 15331a29cc7ed87b62465c7e01f03484f4643d12309Dmitry Shmidt return; 15431a29cc7ed87b62465c7e01f03484f4643d12309Dmitry Shmidt 15531a29cc7ed87b62465c7e01f03484f4643d12309Dmitry Shmidt wpas_dbus_signal_prop_changed(wpa_s, WPAS_DBUS_PROP_ASSOC_STATUS_CODE); 15631a29cc7ed87b62465c7e01f03484f4643d12309Dmitry Shmidt} 15731a29cc7ed87b62465c7e01f03484f4643d12309Dmitry Shmidt 15831a29cc7ed87b62465c7e01f03484f4643d12309Dmitry Shmidt 1598d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtvoid wpas_notify_network_changed(struct wpa_supplicant *wpa_s) 1608d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt{ 1616c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt if (wpa_s->p2p_mgmt) 1626c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt return; 1636c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt 1648d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt wpas_dbus_signal_prop_changed(wpa_s, WPAS_DBUS_PROP_CURRENT_NETWORK); 1658d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt} 1668d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 1678d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 1688d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtvoid wpas_notify_ap_scan_changed(struct wpa_supplicant *wpa_s) 1698d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt{ 1706c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt if (wpa_s->p2p_mgmt) 1716c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt return; 1726c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt 1738d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt wpas_dbus_signal_prop_changed(wpa_s, WPAS_DBUS_PROP_AP_SCAN); 1748d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt} 1758d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 1768d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 1778d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtvoid wpas_notify_bssid_changed(struct wpa_supplicant *wpa_s) 1788d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt{ 1796c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt if (wpa_s->p2p_mgmt) 1806c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt return; 1816c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt 1828d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt wpas_dbus_signal_prop_changed(wpa_s, WPAS_DBUS_PROP_CURRENT_BSS); 1838d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt} 1848d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 1858d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 1868d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtvoid wpas_notify_auth_changed(struct wpa_supplicant *wpa_s) 1878d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt{ 1886c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt if (wpa_s->p2p_mgmt) 1896c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt return; 1906c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt 1918d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt wpas_dbus_signal_prop_changed(wpa_s, WPAS_DBUS_PROP_CURRENT_AUTH_MODE); 1928d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt} 1938d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 1948d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 1958d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtvoid wpas_notify_network_enabled_changed(struct wpa_supplicant *wpa_s, 1968d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt struct wpa_ssid *ssid) 1978d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt{ 1986c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt if (wpa_s->p2p_mgmt) 1996c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt return; 2006c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt 2018d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt wpas_dbus_signal_network_enabled_changed(wpa_s, ssid); 2028d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt} 2038d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 2048d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 2058d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtvoid wpas_notify_network_selected(struct wpa_supplicant *wpa_s, 2068d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt struct wpa_ssid *ssid) 2078d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt{ 2086c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt if (wpa_s->p2p_mgmt) 2096c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt return; 2106c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt 2118d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt wpas_dbus_signal_network_selected(wpa_s, ssid->id); 2128d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt} 2138d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 2148d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 2151f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidtvoid wpas_notify_network_request(struct wpa_supplicant *wpa_s, 2161f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidt struct wpa_ssid *ssid, 2171f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidt enum wpa_ctrl_req_type rtype, 2181f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidt const char *default_txt) 2191f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidt{ 2206c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt if (wpa_s->p2p_mgmt) 2216c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt return; 2226c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt 2231f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidt wpas_dbus_signal_network_request(wpa_s, ssid, rtype, default_txt); 22465628ce79afddd4ba8fd796246b546b36815a0ddRoshan Pius 22557ffbcfc79cd9f7a8389bfcbabea0bced5ed4dbaRoshan Pius wpas_hidl_notify_network_request(wpa_s, ssid, rtype, default_txt); 2261f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidt} 2271f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidt 2281f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidt 2298d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtvoid wpas_notify_scanning(struct wpa_supplicant *wpa_s) 2308d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt{ 2316c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt if (wpa_s->p2p_mgmt) 2326c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt return; 2336c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt 2348d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt /* notify the old DBus API */ 2358d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt wpa_supplicant_dbus_notify_scanning(wpa_s); 2368d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 2378d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt /* notify the new DBus API */ 2388d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt wpas_dbus_signal_prop_changed(wpa_s, WPAS_DBUS_PROP_SCANNING); 2398d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt} 2408d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 2418d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 2428d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtvoid wpas_notify_scan_done(struct wpa_supplicant *wpa_s, int success) 2438d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt{ 2446c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt if (wpa_s->p2p_mgmt) 2456c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt return; 2466c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt 2478d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt wpas_dbus_signal_scan_done(wpa_s, success); 2488d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt} 2498d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 2508d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 2518d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtvoid wpas_notify_scan_results(struct wpa_supplicant *wpa_s) 2528d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt{ 2536c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt if (wpa_s->p2p_mgmt) 2546c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt return; 2556c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt 2568d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt /* notify the old DBus API */ 2578d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt wpa_supplicant_dbus_notify_scan_results(wpa_s); 2588d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 2598d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt wpas_wps_notify_scan_results(wpa_s); 2608d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt} 2618d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 2628d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 2638d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtvoid wpas_notify_wps_credential(struct wpa_supplicant *wpa_s, 2648d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt const struct wps_credential *cred) 2658d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt{ 2666c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt if (wpa_s->p2p_mgmt) 2676c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt return; 2686c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt 2698d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt#ifdef CONFIG_WPS 2708d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt /* notify the old DBus API */ 2718d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt wpa_supplicant_dbus_notify_wps_cred(wpa_s, cred); 2728d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt /* notify the new DBus API */ 2738d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt wpas_dbus_signal_wps_cred(wpa_s, cred); 2748d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt#endif /* CONFIG_WPS */ 2758d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt} 2768d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 2778d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 2788d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtvoid wpas_notify_wps_event_m2d(struct wpa_supplicant *wpa_s, 2798d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt struct wps_event_m2d *m2d) 2808d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt{ 2816c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt if (wpa_s->p2p_mgmt) 2826c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt return; 2836c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt 2848d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt#ifdef CONFIG_WPS 2858d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt wpas_dbus_signal_wps_event_m2d(wpa_s, m2d); 2868d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt#endif /* CONFIG_WPS */ 2878d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt} 2888d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 2898d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 2908d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtvoid wpas_notify_wps_event_fail(struct wpa_supplicant *wpa_s, 2918d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt struct wps_event_fail *fail) 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_fail(wpa_s, fail); 2988d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt#endif /* CONFIG_WPS */ 2998d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt} 3008d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 3018d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 3028d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtvoid wpas_notify_wps_event_success(struct wpa_supplicant *wpa_s) 3038d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt{ 3046c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt if (wpa_s->p2p_mgmt) 3056c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt return; 3066c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt 3078d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt#ifdef CONFIG_WPS 3088d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt wpas_dbus_signal_wps_event_success(wpa_s); 3098d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt#endif /* CONFIG_WPS */ 3108d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt} 3118d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 3127a53dbb56693ee9f55c0cab1a8297436511e8613Dmitry Shmidtvoid wpas_notify_wps_event_pbc_overlap(struct wpa_supplicant *wpa_s) 3137a53dbb56693ee9f55c0cab1a8297436511e8613Dmitry Shmidt{ 3147a53dbb56693ee9f55c0cab1a8297436511e8613Dmitry Shmidt if (wpa_s->p2p_mgmt) 3157a53dbb56693ee9f55c0cab1a8297436511e8613Dmitry Shmidt return; 3167a53dbb56693ee9f55c0cab1a8297436511e8613Dmitry Shmidt 3177a53dbb56693ee9f55c0cab1a8297436511e8613Dmitry Shmidt#ifdef CONFIG_WPS 3187a53dbb56693ee9f55c0cab1a8297436511e8613Dmitry Shmidt wpas_dbus_signal_wps_event_pbc_overlap(wpa_s); 3197a53dbb56693ee9f55c0cab1a8297436511e8613Dmitry Shmidt#endif /* CONFIG_WPS */ 3207a53dbb56693ee9f55c0cab1a8297436511e8613Dmitry Shmidt} 3217a53dbb56693ee9f55c0cab1a8297436511e8613Dmitry Shmidt 3228d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 3238d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtvoid wpas_notify_network_added(struct wpa_supplicant *wpa_s, 3248d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt struct wpa_ssid *ssid) 3258d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt{ 3266c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt if (wpa_s->p2p_mgmt) 3276c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt return; 3286c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt 32975ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen /* 33075ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen * Networks objects created during any P2P activities should not be 33175ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen * exposed out. They might/will confuse certain non-P2P aware 33275ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen * applications since these network objects won't behave like 33375ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen * regular ones. 33475ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen */ 335d385445171074ae070c5ddce94344ec0f06d15b4Roshan Pius if (!ssid->p2p_group && wpa_s->global->p2p_group_formation != wpa_s) { 33675ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen wpas_dbus_register_network(wpa_s, ssid); 33757ffbcfc79cd9f7a8389bfcbabea0bced5ed4dbaRoshan Pius wpas_hidl_register_network(wpa_s, ssid); 338d385445171074ae070c5ddce94344ec0f06d15b4Roshan Pius } 33975ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen} 34075ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen 34175ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen 34275ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinenvoid wpas_notify_persistent_group_added(struct wpa_supplicant *wpa_s, 34375ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen struct wpa_ssid *ssid) 34475ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen{ 345c55524ad84d13014e8019491c2b17e5dcf13545aDmitry Shmidt#ifdef CONFIG_P2P 34675ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen wpas_dbus_register_persistent_group(wpa_s, ssid); 347c55524ad84d13014e8019491c2b17e5dcf13545aDmitry Shmidt#endif /* CONFIG_P2P */ 34875ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen} 34975ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen 35075ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen 35175ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinenvoid wpas_notify_persistent_group_removed(struct wpa_supplicant *wpa_s, 35275ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen struct wpa_ssid *ssid) 35375ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen{ 354c55524ad84d13014e8019491c2b17e5dcf13545aDmitry Shmidt#ifdef CONFIG_P2P 35575ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen wpas_dbus_unregister_persistent_group(wpa_s, ssid->id); 356c55524ad84d13014e8019491c2b17e5dcf13545aDmitry Shmidt#endif /* CONFIG_P2P */ 3578d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt} 3588d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 3598d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 3608d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtvoid wpas_notify_network_removed(struct wpa_supplicant *wpa_s, 3618d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt struct wpa_ssid *ssid) 3628d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt{ 363f21452aea786ac056eb01f1cbba4f553bd502747Dmitry Shmidt if (wpa_s->next_ssid == ssid) 364f21452aea786ac056eb01f1cbba4f553bd502747Dmitry Shmidt wpa_s->next_ssid = NULL; 3651f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidt if (wpa_s->wpa) 3661f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidt wpa_sm_pmksa_cache_flush(wpa_s->wpa, ssid); 367cc00d5dc8483e32158b2ba61ea44b0c38d790ed7Dmitry Shmidt if (!ssid->p2p_group && wpa_s->global->p2p_group_formation != wpa_s && 368d385445171074ae070c5ddce94344ec0f06d15b4Roshan Pius !wpa_s->p2p_mgmt) { 36975ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen wpas_dbus_unregister_network(wpa_s, ssid->id); 37057ffbcfc79cd9f7a8389bfcbabea0bced5ed4dbaRoshan Pius wpas_hidl_unregister_network(wpa_s, ssid); 371d385445171074ae070c5ddce94344ec0f06d15b4Roshan Pius } 3726c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt if (network_is_persistent_group(ssid)) 3736c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt wpas_notify_persistent_group_removed(wpa_s, ssid); 3746c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt 3751f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidt wpas_p2p_network_removed(wpa_s, ssid); 3768d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt} 3778d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 3788d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 3798d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtvoid wpas_notify_bss_added(struct wpa_supplicant *wpa_s, 3808d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt u8 bssid[], unsigned int id) 3818d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt{ 3826c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt if (wpa_s->p2p_mgmt) 3836c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt return; 3846c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt 3858d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt wpas_dbus_register_bss(wpa_s, bssid, id); 3868d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt wpa_msg_ctrl(wpa_s, MSG_INFO, WPA_EVENT_BSS_ADDED "%u " MACSTR, 3878d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt id, MAC2STR(bssid)); 3888d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt} 3898d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 3908d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 3918d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtvoid wpas_notify_bss_removed(struct wpa_supplicant *wpa_s, 3928d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt u8 bssid[], unsigned int id) 3938d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt{ 3946c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt if (wpa_s->p2p_mgmt) 3956c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt return; 3966c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt 3978d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt wpas_dbus_unregister_bss(wpa_s, bssid, id); 3988d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt wpa_msg_ctrl(wpa_s, MSG_INFO, WPA_EVENT_BSS_REMOVED "%u " MACSTR, 3998d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt id, MAC2STR(bssid)); 4008d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt} 4018d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 4028d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 4038d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtvoid wpas_notify_bss_freq_changed(struct wpa_supplicant *wpa_s, 4048d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt unsigned int id) 4058d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt{ 4066c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt if (wpa_s->p2p_mgmt) 4076c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt return; 4086c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt 4098d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt wpas_dbus_bss_signal_prop_changed(wpa_s, WPAS_DBUS_BSS_PROP_FREQ, id); 4108d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt} 4118d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 4128d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 4138d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtvoid wpas_notify_bss_signal_changed(struct wpa_supplicant *wpa_s, 4148d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt unsigned int id) 4158d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt{ 4166c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt if (wpa_s->p2p_mgmt) 4176c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt return; 4186c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt 4198d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt wpas_dbus_bss_signal_prop_changed(wpa_s, WPAS_DBUS_BSS_PROP_SIGNAL, 4208d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt id); 4218d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt} 4228d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 4238d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 4248d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtvoid wpas_notify_bss_privacy_changed(struct wpa_supplicant *wpa_s, 4258d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt unsigned int id) 4268d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt{ 4276c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt if (wpa_s->p2p_mgmt) 4286c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt return; 4296c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt 4308d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt wpas_dbus_bss_signal_prop_changed(wpa_s, WPAS_DBUS_BSS_PROP_PRIVACY, 4318d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt id); 4328d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt} 4338d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 4348d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 4358d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtvoid wpas_notify_bss_mode_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_MODE, id); 4428d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt} 4438d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 4448d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 4458d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtvoid wpas_notify_bss_wpaie_changed(struct wpa_supplicant *wpa_s, 4468d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt unsigned int id) 4478d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt{ 4486c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt if (wpa_s->p2p_mgmt) 4496c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt return; 4506c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt 4518d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt wpas_dbus_bss_signal_prop_changed(wpa_s, WPAS_DBUS_BSS_PROP_WPA, id); 4528d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt} 4538d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 4548d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 4558d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtvoid wpas_notify_bss_rsnie_changed(struct wpa_supplicant *wpa_s, 4568d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt unsigned int id) 4578d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt{ 4586c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt if (wpa_s->p2p_mgmt) 4596c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt return; 4606c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt 4618d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt wpas_dbus_bss_signal_prop_changed(wpa_s, WPAS_DBUS_BSS_PROP_RSN, id); 4628d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt} 4638d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 4648d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 4658d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtvoid wpas_notify_bss_wps_changed(struct wpa_supplicant *wpa_s, 4668d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt unsigned int id) 4678d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt{ 4686c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt if (wpa_s->p2p_mgmt) 4696c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt return; 4706c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt 471d5e4923d04122f81300fa68fb07d64ede28fd44dDmitry Shmidt#ifdef CONFIG_WPS 472d5e4923d04122f81300fa68fb07d64ede28fd44dDmitry Shmidt wpas_dbus_bss_signal_prop_changed(wpa_s, WPAS_DBUS_BSS_PROP_WPS, id); 473d5e4923d04122f81300fa68fb07d64ede28fd44dDmitry Shmidt#endif /* CONFIG_WPS */ 4748d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt} 4758d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 4768d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 4778d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtvoid wpas_notify_bss_ies_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_IES, id); 4848d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt} 4858d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 4868d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 4878d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtvoid wpas_notify_bss_rates_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 4938d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt wpas_dbus_bss_signal_prop_changed(wpa_s, WPAS_DBUS_BSS_PROP_RATES, id); 4948d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt} 4958d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 4968d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 497661b4f78e48c697429dc46154a4125892c001718Dmitry Shmidtvoid wpas_notify_bss_seen(struct wpa_supplicant *wpa_s, unsigned int id) 498661b4f78e48c697429dc46154a4125892c001718Dmitry Shmidt{ 4996c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt if (wpa_s->p2p_mgmt) 5006c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt return; 5016c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt 502661b4f78e48c697429dc46154a4125892c001718Dmitry Shmidt wpas_dbus_bss_signal_prop_changed(wpa_s, WPAS_DBUS_BSS_PROP_AGE, id); 503661b4f78e48c697429dc46154a4125892c001718Dmitry Shmidt} 504661b4f78e48c697429dc46154a4125892c001718Dmitry Shmidt 505661b4f78e48c697429dc46154a4125892c001718Dmitry Shmidt 5068d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtvoid wpas_notify_blob_added(struct wpa_supplicant *wpa_s, const char *name) 5078d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt{ 5086c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt if (wpa_s->p2p_mgmt) 5096c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt return; 5106c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt 5118d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt wpas_dbus_signal_blob_added(wpa_s, name); 5128d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt} 5138d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 5148d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 5158d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtvoid wpas_notify_blob_removed(struct wpa_supplicant *wpa_s, const char *name) 5168d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt{ 5176c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt if (wpa_s->p2p_mgmt) 5186c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt return; 5196c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt 5208d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt wpas_dbus_signal_blob_removed(wpa_s, name); 5218d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt} 5228d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 5238d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 5248d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtvoid wpas_notify_debug_level_changed(struct wpa_global *global) 5258d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt{ 5268d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt wpas_dbus_signal_debug_level_changed(global); 5278d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt} 5288d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 5298d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 5308d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtvoid wpas_notify_debug_timestamp_changed(struct wpa_global *global) 5318d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt{ 5328d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt wpas_dbus_signal_debug_timestamp_changed(global); 5338d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt} 5348d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 5358d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 5368d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtvoid wpas_notify_debug_show_keys_changed(struct wpa_global *global) 5378d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt{ 5388d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt wpas_dbus_signal_debug_show_keys_changed(global); 5398d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt} 5408d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 5418d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 5428d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtvoid wpas_notify_suspend(struct wpa_global *global) 5438d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt{ 5448d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt struct wpa_supplicant *wpa_s; 5458d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 5468d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt os_get_time(&global->suspend_time); 5478d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt wpa_printf(MSG_DEBUG, "System suspend notification"); 5488d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt for (wpa_s = global->ifaces; wpa_s; wpa_s = wpa_s->next) 5498d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt wpa_drv_suspend(wpa_s); 5508d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt} 5518d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 5528d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 5538d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtvoid wpas_notify_resume(struct wpa_global *global) 5548d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt{ 5558d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt struct os_time now; 5568d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt int slept; 5578d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt struct wpa_supplicant *wpa_s; 5588d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 5598d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt if (global->suspend_time.sec == 0) 5608d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt slept = -1; 5618d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt else { 5628d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt os_get_time(&now); 5638d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt slept = now.sec - global->suspend_time.sec; 5648d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt } 5658d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt wpa_printf(MSG_DEBUG, "System resume notification (slept %d seconds)", 5668d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt slept); 5678d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 5688d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt for (wpa_s = global->ifaces; wpa_s; wpa_s = wpa_s->next) { 5698d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt wpa_drv_resume(wpa_s); 5708d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt if (wpa_s->wpa_state == WPA_DISCONNECTED) 5718d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt wpa_supplicant_req_scan(wpa_s, 0, 100000); 5728d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt } 5738d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt} 5748d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 5758d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 5768d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt#ifdef CONFIG_P2P 5778d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 5788bd70b7d6ba220544ee2f0e201e5df23e277fa1dDmitry Shmidtvoid wpas_notify_p2p_find_stopped(struct wpa_supplicant *wpa_s) 5798bd70b7d6ba220544ee2f0e201e5df23e277fa1dDmitry Shmidt{ 5808bd70b7d6ba220544ee2f0e201e5df23e277fa1dDmitry Shmidt /* Notify P2P find has stopped */ 5818bd70b7d6ba220544ee2f0e201e5df23e277fa1dDmitry Shmidt wpas_dbus_signal_p2p_find_stopped(wpa_s); 5828bd70b7d6ba220544ee2f0e201e5df23e277fa1dDmitry Shmidt} 5838bd70b7d6ba220544ee2f0e201e5df23e277fa1dDmitry Shmidt 5848bd70b7d6ba220544ee2f0e201e5df23e277fa1dDmitry Shmidt 5858d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtvoid wpas_notify_p2p_device_found(struct wpa_supplicant *wpa_s, 5868d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt const u8 *dev_addr, int new_device) 5878d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt{ 58875ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen if (new_device) { 58975ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen /* Create the new peer object */ 59075ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen wpas_dbus_register_peer(wpa_s, dev_addr); 59175ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen } 59275ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen 59375ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen /* Notify a new peer has been detected*/ 59475ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen wpas_dbus_signal_peer_device_found(wpa_s, dev_addr); 5958d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt} 5968d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 5978d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 5988d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtvoid wpas_notify_p2p_device_lost(struct wpa_supplicant *wpa_s, 5998d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt const u8 *dev_addr) 6008d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt{ 60175ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen wpas_dbus_unregister_peer(wpa_s, dev_addr); 60275ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen 60375ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen /* Create signal on interface object*/ 60475ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen wpas_dbus_signal_peer_device_lost(wpa_s, dev_addr); 6058d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt} 6068d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 6078d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 6088d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtvoid wpas_notify_p2p_group_removed(struct wpa_supplicant *wpa_s, 6098d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt const struct wpa_ssid *ssid, 6108d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt const char *role) 6118d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt{ 61275ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen wpas_dbus_signal_p2p_group_removed(wpa_s, role); 61303658834c33748b9ad86f3d4cdf0c7be9c6887d1Dmitry Shmidt 61403658834c33748b9ad86f3d4cdf0c7be9c6887d1Dmitry Shmidt wpas_dbus_unregister_p2p_group(wpa_s, ssid); 6158d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt} 6168d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 6178d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 6188d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtvoid wpas_notify_p2p_go_neg_req(struct wpa_supplicant *wpa_s, 6197a53dbb56693ee9f55c0cab1a8297436511e8613Dmitry Shmidt const u8 *src, u16 dev_passwd_id, u8 go_intent) 6208d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt{ 6217a53dbb56693ee9f55c0cab1a8297436511e8613Dmitry Shmidt wpas_dbus_signal_p2p_go_neg_req(wpa_s, src, dev_passwd_id, go_intent); 6228d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt} 6238d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 6248d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 6251f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidtvoid wpas_notify_p2p_go_neg_completed(struct wpa_supplicant *wpa_s, 6261f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidt struct p2p_go_neg_results *res) 6278d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt{ 6281f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidt wpas_dbus_signal_p2p_go_neg_resp(wpa_s, res); 6298d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt} 6308d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 6318d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 6328d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtvoid wpas_notify_p2p_invitation_result(struct wpa_supplicant *wpa_s, 6338d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt int status, const u8 *bssid) 6348d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt{ 63575ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen wpas_dbus_signal_p2p_invitation_result(wpa_s, status, bssid); 6368d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt} 6378d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 6388d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 6398d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtvoid wpas_notify_p2p_sd_request(struct wpa_supplicant *wpa_s, 6408d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt int freq, const u8 *sa, u8 dialog_token, 6418d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt u16 update_indic, const u8 *tlvs, 6428d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt size_t tlvs_len) 6438d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt{ 64475ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen wpas_dbus_signal_p2p_sd_request(wpa_s, freq, sa, dialog_token, 64575ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen update_indic, tlvs, tlvs_len); 6468d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt} 6478d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 6488d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 6498d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtvoid wpas_notify_p2p_sd_response(struct wpa_supplicant *wpa_s, 6508d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt const u8 *sa, u16 update_indic, 6518d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt const u8 *tlvs, size_t tlvs_len) 6528d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt{ 65375ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen wpas_dbus_signal_p2p_sd_response(wpa_s, sa, update_indic, 65475ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen tlvs, tlvs_len); 65575ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen} 65675ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen 65775ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen 65875ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen/** 65975ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen * wpas_notify_p2p_provision_discovery - Notification of provision discovery 66075ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen * @dev_addr: Who sent the request or responded to our request. 66175ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen * @request: Will be 1 if request, 0 for response. 66275ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen * @status: Valid only in case of response (0 in case of success) 66375ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen * @config_methods: WPS config methods 66475ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen * @generated_pin: PIN to be displayed in case of WPS_CONFIG_DISPLAY method 66575ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen * 66675ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen * This can be used to notify: 66775ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen * - Requests or responses 66875ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen * - Various config methods 66975ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen * - Failure condition in case of response 67075ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen */ 67175ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinenvoid wpas_notify_p2p_provision_discovery(struct wpa_supplicant *wpa_s, 67275ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen const u8 *dev_addr, int request, 67375ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen enum p2p_prov_disc_status status, 67475ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen u16 config_methods, 67575ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen unsigned int generated_pin) 67675ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen{ 67775ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen wpas_dbus_signal_p2p_provision_discovery(wpa_s, dev_addr, request, 67875ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen status, config_methods, 67975ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen generated_pin); 68075ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen} 68175ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen 68275ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen 68375ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinenvoid wpas_notify_p2p_group_started(struct wpa_supplicant *wpa_s, 684d5ab1b53af720d05586ccc0addabe93459f1f388Dmitry Shmidt struct wpa_ssid *ssid, int persistent, 68575ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen int client) 68675ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen{ 68775ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen /* Notify a group has been started */ 68875ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen wpas_dbus_register_p2p_group(wpa_s, ssid); 68975ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen 690d5ab1b53af720d05586ccc0addabe93459f1f388Dmitry Shmidt wpas_dbus_signal_p2p_group_started(wpa_s, client, persistent); 69175ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen} 69275ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen 69375ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen 694d80a401aed31d06f261efd19223cf55d1a2a8228Dmitry Shmidtvoid wpas_notify_p2p_group_formation_failure(struct wpa_supplicant *wpa_s, 695d80a401aed31d06f261efd19223cf55d1a2a8228Dmitry Shmidt const char *reason) 696d80a401aed31d06f261efd19223cf55d1a2a8228Dmitry Shmidt{ 697d80a401aed31d06f261efd19223cf55d1a2a8228Dmitry Shmidt /* Notify a group formation failed */ 698d80a401aed31d06f261efd19223cf55d1a2a8228Dmitry Shmidt wpas_dbus_signal_p2p_group_formation_failure(wpa_s, reason); 699d80a401aed31d06f261efd19223cf55d1a2a8228Dmitry Shmidt} 700d80a401aed31d06f261efd19223cf55d1a2a8228Dmitry Shmidt 701d80a401aed31d06f261efd19223cf55d1a2a8228Dmitry Shmidt 70275ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinenvoid wpas_notify_p2p_wps_failed(struct wpa_supplicant *wpa_s, 70375ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen struct wps_event_fail *fail) 70475ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen{ 70575ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen wpas_dbus_signal_p2p_wps_failed(wpa_s, fail); 7068d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt} 7078d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 708d80a401aed31d06f261efd19223cf55d1a2a8228Dmitry Shmidt 709d80a401aed31d06f261efd19223cf55d1a2a8228Dmitry Shmidtvoid wpas_notify_p2p_invitation_received(struct wpa_supplicant *wpa_s, 710d80a401aed31d06f261efd19223cf55d1a2a8228Dmitry Shmidt const u8 *sa, const u8 *go_dev_addr, 711d80a401aed31d06f261efd19223cf55d1a2a8228Dmitry Shmidt const u8 *bssid, int id, int op_freq) 712d80a401aed31d06f261efd19223cf55d1a2a8228Dmitry Shmidt{ 713d80a401aed31d06f261efd19223cf55d1a2a8228Dmitry Shmidt /* Notify a P2P Invitation Request */ 714d80a401aed31d06f261efd19223cf55d1a2a8228Dmitry Shmidt wpas_dbus_signal_p2p_invitation_received(wpa_s, sa, go_dev_addr, bssid, 715d80a401aed31d06f261efd19223cf55d1a2a8228Dmitry Shmidt id, op_freq); 716d80a401aed31d06f261efd19223cf55d1a2a8228Dmitry Shmidt} 717d80a401aed31d06f261efd19223cf55d1a2a8228Dmitry Shmidt 7188d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt#endif /* CONFIG_P2P */ 7198d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 7208d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 7218d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtstatic void wpas_notify_ap_sta_authorized(struct wpa_supplicant *wpa_s, 7221f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidt const u8 *sta, 7231f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidt const u8 *p2p_dev_addr) 7248d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt{ 72575ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen#ifdef CONFIG_P2P 7261f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidt wpas_p2p_notify_ap_sta_authorized(wpa_s, p2p_dev_addr); 7271f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidt 72875ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen /* 72975ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen * Create 'peer-joined' signal on group object -- will also 73075ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen * check P2P itself. 73175ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen */ 7326c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt if (p2p_dev_addr) 7336c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt wpas_dbus_signal_p2p_peer_joined(wpa_s, p2p_dev_addr); 73475ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen#endif /* CONFIG_P2P */ 73534af306c42b7ccf956508e7cd23f0ba90606e360Dmitry Shmidt 73634af306c42b7ccf956508e7cd23f0ba90606e360Dmitry Shmidt /* Notify listeners a new station has been authorized */ 73734af306c42b7ccf956508e7cd23f0ba90606e360Dmitry Shmidt wpas_dbus_signal_sta_authorized(wpa_s, sta); 7388d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt} 7398d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 7408d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 7418d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtstatic void wpas_notify_ap_sta_deauthorized(struct wpa_supplicant *wpa_s, 742d30ac604c9f6da71a0dd7f46d25be05a2a62cfbbDmitry Shmidt const u8 *sta, 743d30ac604c9f6da71a0dd7f46d25be05a2a62cfbbDmitry Shmidt const u8 *p2p_dev_addr) 7448d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt{ 74575ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen#ifdef CONFIG_P2P 74675ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen /* 74775ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen * Create 'peer-disconnected' signal on group object if this 74875ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen * is a P2P group. 74975ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen */ 7506c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt if (p2p_dev_addr) 7516c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt wpas_dbus_signal_p2p_peer_disconnected(wpa_s, p2p_dev_addr); 75275ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen#endif /* CONFIG_P2P */ 75334af306c42b7ccf956508e7cd23f0ba90606e360Dmitry Shmidt 75434af306c42b7ccf956508e7cd23f0ba90606e360Dmitry Shmidt /* Notify listeners a station has been deauthorized */ 75534af306c42b7ccf956508e7cd23f0ba90606e360Dmitry Shmidt wpas_dbus_signal_sta_deauthorized(wpa_s, sta); 7568d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt} 7578d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 7588d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 7598d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtvoid wpas_notify_sta_authorized(struct wpa_supplicant *wpa_s, 7601f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidt const u8 *mac_addr, int authorized, 7611f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidt const u8 *p2p_dev_addr) 7628d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt{ 7638d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt if (authorized) 7641f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidt wpas_notify_ap_sta_authorized(wpa_s, mac_addr, p2p_dev_addr); 7658d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt else 766d30ac604c9f6da71a0dd7f46d25be05a2a62cfbbDmitry Shmidt wpas_notify_ap_sta_deauthorized(wpa_s, mac_addr, p2p_dev_addr); 7678d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt} 768c55524ad84d13014e8019491c2b17e5dcf13545aDmitry Shmidt 769c55524ad84d13014e8019491c2b17e5dcf13545aDmitry Shmidt 770c55524ad84d13014e8019491c2b17e5dcf13545aDmitry Shmidtvoid wpas_notify_certification(struct wpa_supplicant *wpa_s, int depth, 7712f74e36e84064ffa32f82f3decf36b653c7e4fadDmitry Shmidt const char *subject, const char *altsubject[], 7722f74e36e84064ffa32f82f3decf36b653c7e4fadDmitry Shmidt int num_altsubject, const char *cert_hash, 773c55524ad84d13014e8019491c2b17e5dcf13545aDmitry Shmidt const struct wpabuf *cert) 774c55524ad84d13014e8019491c2b17e5dcf13545aDmitry Shmidt{ 775c55524ad84d13014e8019491c2b17e5dcf13545aDmitry Shmidt wpa_msg(wpa_s, MSG_INFO, WPA_EVENT_EAP_PEER_CERT 776c55524ad84d13014e8019491c2b17e5dcf13545aDmitry Shmidt "depth=%d subject='%s'%s%s", 7772f74e36e84064ffa32f82f3decf36b653c7e4fadDmitry Shmidt depth, subject, cert_hash ? " hash=" : "", 778c55524ad84d13014e8019491c2b17e5dcf13545aDmitry Shmidt cert_hash ? cert_hash : ""); 779c55524ad84d13014e8019491c2b17e5dcf13545aDmitry Shmidt 780c55524ad84d13014e8019491c2b17e5dcf13545aDmitry Shmidt if (cert) { 781c55524ad84d13014e8019491c2b17e5dcf13545aDmitry Shmidt char *cert_hex; 782c55524ad84d13014e8019491c2b17e5dcf13545aDmitry Shmidt size_t len = wpabuf_len(cert) * 2 + 1; 783c55524ad84d13014e8019491c2b17e5dcf13545aDmitry Shmidt cert_hex = os_malloc(len); 784c55524ad84d13014e8019491c2b17e5dcf13545aDmitry Shmidt if (cert_hex) { 785c55524ad84d13014e8019491c2b17e5dcf13545aDmitry Shmidt wpa_snprintf_hex(cert_hex, len, wpabuf_head(cert), 786c55524ad84d13014e8019491c2b17e5dcf13545aDmitry Shmidt wpabuf_len(cert)); 787c55524ad84d13014e8019491c2b17e5dcf13545aDmitry Shmidt wpa_msg_ctrl(wpa_s, MSG_INFO, 788c55524ad84d13014e8019491c2b17e5dcf13545aDmitry Shmidt WPA_EVENT_EAP_PEER_CERT 789c55524ad84d13014e8019491c2b17e5dcf13545aDmitry Shmidt "depth=%d subject='%s' cert=%s", 790c55524ad84d13014e8019491c2b17e5dcf13545aDmitry Shmidt depth, subject, cert_hex); 791c55524ad84d13014e8019491c2b17e5dcf13545aDmitry Shmidt os_free(cert_hex); 792c55524ad84d13014e8019491c2b17e5dcf13545aDmitry Shmidt } 793c55524ad84d13014e8019491c2b17e5dcf13545aDmitry Shmidt } 794c55524ad84d13014e8019491c2b17e5dcf13545aDmitry Shmidt 7952f74e36e84064ffa32f82f3decf36b653c7e4fadDmitry Shmidt if (altsubject) { 7962f74e36e84064ffa32f82f3decf36b653c7e4fadDmitry Shmidt int i; 7972f74e36e84064ffa32f82f3decf36b653c7e4fadDmitry Shmidt 7982f74e36e84064ffa32f82f3decf36b653c7e4fadDmitry Shmidt for (i = 0; i < num_altsubject; i++) 7992f74e36e84064ffa32f82f3decf36b653c7e4fadDmitry Shmidt wpa_msg(wpa_s, MSG_INFO, WPA_EVENT_EAP_PEER_ALT 8002f74e36e84064ffa32f82f3decf36b653c7e4fadDmitry Shmidt "depth=%d %s", depth, altsubject[i]); 8012f74e36e84064ffa32f82f3decf36b653c7e4fadDmitry Shmidt } 8022f74e36e84064ffa32f82f3decf36b653c7e4fadDmitry Shmidt 803c55524ad84d13014e8019491c2b17e5dcf13545aDmitry Shmidt /* notify the old DBus API */ 804c55524ad84d13014e8019491c2b17e5dcf13545aDmitry Shmidt wpa_supplicant_dbus_notify_certification(wpa_s, depth, subject, 805c55524ad84d13014e8019491c2b17e5dcf13545aDmitry Shmidt cert_hash, cert); 806c55524ad84d13014e8019491c2b17e5dcf13545aDmitry Shmidt /* notify the new DBus API */ 8072f74e36e84064ffa32f82f3decf36b653c7e4fadDmitry Shmidt wpas_dbus_signal_certification(wpa_s, depth, subject, altsubject, 8082f74e36e84064ffa32f82f3decf36b653c7e4fadDmitry Shmidt num_altsubject, cert_hash, cert); 809c55524ad84d13014e8019491c2b17e5dcf13545aDmitry Shmidt} 81004949598a23f501be6eec21697465fd46a28840aDmitry Shmidt 81104949598a23f501be6eec21697465fd46a28840aDmitry Shmidt 81204949598a23f501be6eec21697465fd46a28840aDmitry Shmidtvoid wpas_notify_preq(struct wpa_supplicant *wpa_s, 81304949598a23f501be6eec21697465fd46a28840aDmitry Shmidt const u8 *addr, const u8 *dst, const u8 *bssid, 81404949598a23f501be6eec21697465fd46a28840aDmitry Shmidt const u8 *ie, size_t ie_len, u32 ssi_signal) 81504949598a23f501be6eec21697465fd46a28840aDmitry Shmidt{ 81604949598a23f501be6eec21697465fd46a28840aDmitry Shmidt#ifdef CONFIG_AP 81704949598a23f501be6eec21697465fd46a28840aDmitry Shmidt wpas_dbus_signal_preq(wpa_s, addr, dst, bssid, ie, ie_len, ssi_signal); 81804949598a23f501be6eec21697465fd46a28840aDmitry Shmidt#endif /* CONFIG_AP */ 81904949598a23f501be6eec21697465fd46a28840aDmitry Shmidt} 82004949598a23f501be6eec21697465fd46a28840aDmitry Shmidt 82104949598a23f501be6eec21697465fd46a28840aDmitry Shmidt 82204949598a23f501be6eec21697465fd46a28840aDmitry Shmidtvoid wpas_notify_eap_status(struct wpa_supplicant *wpa_s, const char *status, 82304949598a23f501be6eec21697465fd46a28840aDmitry Shmidt const char *parameter) 82404949598a23f501be6eec21697465fd46a28840aDmitry Shmidt{ 82504949598a23f501be6eec21697465fd46a28840aDmitry Shmidt wpas_dbus_signal_eap_status(wpa_s, status, parameter); 8268da800a193fb6f8832218715f82a7b4e2d2ad338Dmitry Shmidt wpa_msg_ctrl(wpa_s, MSG_INFO, WPA_EVENT_EAP_STATUS 8278da800a193fb6f8832218715f82a7b4e2d2ad338Dmitry Shmidt "status='%s' parameter='%s'", 8288da800a193fb6f8832218715f82a7b4e2d2ad338Dmitry Shmidt status, parameter); 82904949598a23f501be6eec21697465fd46a28840aDmitry Shmidt} 830661b4f78e48c697429dc46154a4125892c001718Dmitry Shmidt 831661b4f78e48c697429dc46154a4125892c001718Dmitry Shmidt 832661b4f78e48c697429dc46154a4125892c001718Dmitry Shmidtvoid wpas_notify_network_bssid_set_changed(struct wpa_supplicant *wpa_s, 833661b4f78e48c697429dc46154a4125892c001718Dmitry Shmidt struct wpa_ssid *ssid) 834661b4f78e48c697429dc46154a4125892c001718Dmitry Shmidt{ 835661b4f78e48c697429dc46154a4125892c001718Dmitry Shmidt if (wpa_s->current_ssid != ssid) 836661b4f78e48c697429dc46154a4125892c001718Dmitry Shmidt return; 837661b4f78e48c697429dc46154a4125892c001718Dmitry Shmidt 838661b4f78e48c697429dc46154a4125892c001718Dmitry Shmidt wpa_dbg(wpa_s, MSG_DEBUG, 839661b4f78e48c697429dc46154a4125892c001718Dmitry Shmidt "Network bssid config changed for the current network - within-ESS roaming %s", 840661b4f78e48c697429dc46154a4125892c001718Dmitry Shmidt ssid->bssid_set ? "disabled" : "enabled"); 841661b4f78e48c697429dc46154a4125892c001718Dmitry Shmidt 842661b4f78e48c697429dc46154a4125892c001718Dmitry Shmidt wpa_drv_roaming(wpa_s, !ssid->bssid_set, 843661b4f78e48c697429dc46154a4125892c001718Dmitry Shmidt ssid->bssid_set ? ssid->bssid : NULL); 844661b4f78e48c697429dc46154a4125892c001718Dmitry Shmidt} 8457f65602d49069f96a7bb44da8bd79ffe8d4c6a98Dmitry Shmidt 8467f65602d49069f96a7bb44da8bd79ffe8d4c6a98Dmitry Shmidt 8477f65602d49069f96a7bb44da8bd79ffe8d4c6a98Dmitry Shmidtvoid wpas_notify_network_type_changed(struct wpa_supplicant *wpa_s, 8487f65602d49069f96a7bb44da8bd79ffe8d4c6a98Dmitry Shmidt struct wpa_ssid *ssid) 8497f65602d49069f96a7bb44da8bd79ffe8d4c6a98Dmitry Shmidt{ 8507f65602d49069f96a7bb44da8bd79ffe8d4c6a98Dmitry Shmidt#ifdef CONFIG_P2P 8517f65602d49069f96a7bb44da8bd79ffe8d4c6a98Dmitry Shmidt if (ssid->disabled == 2) { 8527f65602d49069f96a7bb44da8bd79ffe8d4c6a98Dmitry Shmidt /* Changed from normal network profile to persistent group */ 8537f65602d49069f96a7bb44da8bd79ffe8d4c6a98Dmitry Shmidt ssid->disabled = 0; 8547f65602d49069f96a7bb44da8bd79ffe8d4c6a98Dmitry Shmidt wpas_dbus_unregister_network(wpa_s, ssid->id); 8557f65602d49069f96a7bb44da8bd79ffe8d4c6a98Dmitry Shmidt ssid->disabled = 2; 8567a53dbb56693ee9f55c0cab1a8297436511e8613Dmitry Shmidt ssid->p2p_persistent_group = 1; 8577f65602d49069f96a7bb44da8bd79ffe8d4c6a98Dmitry Shmidt wpas_dbus_register_persistent_group(wpa_s, ssid); 8587f65602d49069f96a7bb44da8bd79ffe8d4c6a98Dmitry Shmidt } else { 8597f65602d49069f96a7bb44da8bd79ffe8d4c6a98Dmitry Shmidt /* Changed from persistent group to normal network profile */ 8607f65602d49069f96a7bb44da8bd79ffe8d4c6a98Dmitry Shmidt wpas_dbus_unregister_persistent_group(wpa_s, ssid->id); 8617a53dbb56693ee9f55c0cab1a8297436511e8613Dmitry Shmidt ssid->p2p_persistent_group = 0; 8627f65602d49069f96a7bb44da8bd79ffe8d4c6a98Dmitry Shmidt wpas_dbus_register_network(wpa_s, ssid); 8637f65602d49069f96a7bb44da8bd79ffe8d4c6a98Dmitry Shmidt } 8647f65602d49069f96a7bb44da8bd79ffe8d4c6a98Dmitry Shmidt#endif /* CONFIG_P2P */ 8657f65602d49069f96a7bb44da8bd79ffe8d4c6a98Dmitry Shmidt} 866