notify.c revision 54e763ada0bed9bf2c48415e82c5f04db23a3330
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" 16e4663044d3a689fb5458247e9bc0f8b58cf72fcaDmitry Shmidt#include "binder/binder.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 38e4663044d3a689fb5458247e9bc0f8b58cf72fcaDmitry Shmidt#ifdef CONFIG_BINDER 39e4663044d3a689fb5458247e9bc0f8b58cf72fcaDmitry Shmidt global->binder = wpas_binder_init(global); 40e4663044d3a689fb5458247e9bc0f8b58cf72fcaDmitry Shmidt if (!global->binder) 41e4663044d3a689fb5458247e9bc0f8b58cf72fcaDmitry Shmidt return -1; 42e4663044d3a689fb5458247e9bc0f8b58cf72fcaDmitry Shmidt#endif /* CONFIG_BINDER */ 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 55e4663044d3a689fb5458247e9bc0f8b58cf72fcaDmitry Shmidt#ifdef CONFIG_BINDER 56e4663044d3a689fb5458247e9bc0f8b58cf72fcaDmitry Shmidt if (global->binder) 57e4663044d3a689fb5458247e9bc0f8b58cf72fcaDmitry Shmidt wpas_binder_deinit(global->binder); 58e4663044d3a689fb5458247e9bc0f8b58cf72fcaDmitry Shmidt#endif /* CONFIG_BINDER */ 598d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt} 608d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 618d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 628d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtint wpas_notify_iface_added(struct wpa_supplicant *wpa_s) 638d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt{ 646c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt if (wpa_s->p2p_mgmt) 656c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt return 0; 666c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt 678d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt if (wpas_dbus_register_iface(wpa_s)) 688d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt return -1; 698d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 708d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt if (wpas_dbus_register_interface(wpa_s)) 718d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt return -1; 728d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 7354e763ada0bed9bf2c48415e82c5f04db23a3330Roshan Pius if (wpas_binder_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{ 826c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt if (wpa_s->p2p_mgmt) 836c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt return; 846c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt 858d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt /* unregister interface in old DBus ctrl iface */ 868d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt wpas_dbus_unregister_iface(wpa_s); 878d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 888d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt /* unregister interface in new DBus ctrl iface */ 898d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt wpas_dbus_unregister_interface(wpa_s); 9054e763ada0bed9bf2c48415e82c5f04db23a3330Roshan Pius 9154e763ada0bed9bf2c48415e82c5f04db23a3330Roshan Pius wpas_binder_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 */ 1368d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt} 1378d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 1388d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 13904949598a23f501be6eec21697465fd46a28840aDmitry Shmidtvoid wpas_notify_disconnect_reason(struct wpa_supplicant *wpa_s) 14004949598a23f501be6eec21697465fd46a28840aDmitry Shmidt{ 1416c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt if (wpa_s->p2p_mgmt) 1426c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt return; 1436c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt 14404949598a23f501be6eec21697465fd46a28840aDmitry Shmidt wpas_dbus_signal_prop_changed(wpa_s, WPAS_DBUS_PROP_DISCONNECT_REASON); 14504949598a23f501be6eec21697465fd46a28840aDmitry Shmidt} 14604949598a23f501be6eec21697465fd46a28840aDmitry Shmidt 14704949598a23f501be6eec21697465fd46a28840aDmitry Shmidt 14831a29cc7ed87b62465c7e01f03484f4643d12309Dmitry Shmidtvoid wpas_notify_assoc_status_code(struct wpa_supplicant *wpa_s) 14931a29cc7ed87b62465c7e01f03484f4643d12309Dmitry Shmidt{ 15031a29cc7ed87b62465c7e01f03484f4643d12309Dmitry Shmidt if (wpa_s->p2p_mgmt) 15131a29cc7ed87b62465c7e01f03484f4643d12309Dmitry Shmidt return; 15231a29cc7ed87b62465c7e01f03484f4643d12309Dmitry Shmidt 15331a29cc7ed87b62465c7e01f03484f4643d12309Dmitry Shmidt wpas_dbus_signal_prop_changed(wpa_s, WPAS_DBUS_PROP_ASSOC_STATUS_CODE); 15431a29cc7ed87b62465c7e01f03484f4643d12309Dmitry Shmidt} 15531a29cc7ed87b62465c7e01f03484f4643d12309Dmitry Shmidt 15631a29cc7ed87b62465c7e01f03484f4643d12309Dmitry Shmidt 1578d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtvoid wpas_notify_network_changed(struct wpa_supplicant *wpa_s) 1588d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt{ 1596c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt if (wpa_s->p2p_mgmt) 1606c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt return; 1616c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt 1628d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt wpas_dbus_signal_prop_changed(wpa_s, WPAS_DBUS_PROP_CURRENT_NETWORK); 1638d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt} 1648d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 1658d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 1668d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtvoid wpas_notify_ap_scan_changed(struct wpa_supplicant *wpa_s) 1678d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt{ 1686c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt if (wpa_s->p2p_mgmt) 1696c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt return; 1706c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt 1718d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt wpas_dbus_signal_prop_changed(wpa_s, WPAS_DBUS_PROP_AP_SCAN); 1728d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt} 1738d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 1748d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 1758d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtvoid wpas_notify_bssid_changed(struct wpa_supplicant *wpa_s) 1768d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt{ 1776c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt if (wpa_s->p2p_mgmt) 1786c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt return; 1796c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt 1808d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt wpas_dbus_signal_prop_changed(wpa_s, WPAS_DBUS_PROP_CURRENT_BSS); 1818d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt} 1828d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 1838d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 1848d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtvoid wpas_notify_auth_changed(struct wpa_supplicant *wpa_s) 1858d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt{ 1866c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt if (wpa_s->p2p_mgmt) 1876c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt return; 1886c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt 1898d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt wpas_dbus_signal_prop_changed(wpa_s, WPAS_DBUS_PROP_CURRENT_AUTH_MODE); 1908d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt} 1918d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 1928d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 1938d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtvoid wpas_notify_network_enabled_changed(struct wpa_supplicant *wpa_s, 1948d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt struct wpa_ssid *ssid) 1958d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt{ 1966c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt if (wpa_s->p2p_mgmt) 1976c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt return; 1986c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt 1998d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt wpas_dbus_signal_network_enabled_changed(wpa_s, ssid); 2008d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt} 2018d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 2028d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 2038d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtvoid wpas_notify_network_selected(struct wpa_supplicant *wpa_s, 2048d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt struct wpa_ssid *ssid) 2058d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt{ 2066c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt if (wpa_s->p2p_mgmt) 2076c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt return; 2086c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt 2098d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt wpas_dbus_signal_network_selected(wpa_s, ssid->id); 2108d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt} 2118d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 2128d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 2131f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidtvoid wpas_notify_network_request(struct wpa_supplicant *wpa_s, 2141f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidt struct wpa_ssid *ssid, 2151f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidt enum wpa_ctrl_req_type rtype, 2161f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidt const char *default_txt) 2171f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidt{ 2186c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt if (wpa_s->p2p_mgmt) 2196c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt return; 2206c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt 2211f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidt wpas_dbus_signal_network_request(wpa_s, ssid, rtype, default_txt); 2221f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidt} 2231f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidt 2241f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidt 2258d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtvoid wpas_notify_scanning(struct wpa_supplicant *wpa_s) 2268d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt{ 2276c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt if (wpa_s->p2p_mgmt) 2286c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt return; 2296c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt 2308d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt /* notify the old DBus API */ 2318d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt wpa_supplicant_dbus_notify_scanning(wpa_s); 2328d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 2338d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt /* notify the new DBus API */ 2348d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt wpas_dbus_signal_prop_changed(wpa_s, WPAS_DBUS_PROP_SCANNING); 2358d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt} 2368d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 2378d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 2388d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtvoid wpas_notify_scan_done(struct wpa_supplicant *wpa_s, int success) 2398d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt{ 2406c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt if (wpa_s->p2p_mgmt) 2416c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt return; 2426c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt 2438d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt wpas_dbus_signal_scan_done(wpa_s, success); 2448d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt} 2458d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 2468d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 2478d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtvoid wpas_notify_scan_results(struct wpa_supplicant *wpa_s) 2488d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt{ 2496c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt if (wpa_s->p2p_mgmt) 2506c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt return; 2516c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt 2528d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt /* notify the old DBus API */ 2538d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt wpa_supplicant_dbus_notify_scan_results(wpa_s); 2548d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 2558d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt wpas_wps_notify_scan_results(wpa_s); 2568d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt} 2578d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 2588d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 2598d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtvoid wpas_notify_wps_credential(struct wpa_supplicant *wpa_s, 2608d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt const struct wps_credential *cred) 2618d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt{ 2626c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt if (wpa_s->p2p_mgmt) 2636c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt return; 2646c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt 2658d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt#ifdef CONFIG_WPS 2668d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt /* notify the old DBus API */ 2678d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt wpa_supplicant_dbus_notify_wps_cred(wpa_s, cred); 2688d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt /* notify the new DBus API */ 2698d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt wpas_dbus_signal_wps_cred(wpa_s, cred); 2708d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt#endif /* CONFIG_WPS */ 2718d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt} 2728d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 2738d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 2748d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtvoid wpas_notify_wps_event_m2d(struct wpa_supplicant *wpa_s, 2758d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt struct wps_event_m2d *m2d) 2768d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt{ 2776c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt if (wpa_s->p2p_mgmt) 2786c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt return; 2796c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt 2808d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt#ifdef CONFIG_WPS 2818d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt wpas_dbus_signal_wps_event_m2d(wpa_s, m2d); 2828d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt#endif /* CONFIG_WPS */ 2838d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt} 2848d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 2858d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 2868d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtvoid wpas_notify_wps_event_fail(struct wpa_supplicant *wpa_s, 2878d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt struct wps_event_fail *fail) 2888d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt{ 2896c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt if (wpa_s->p2p_mgmt) 2906c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt return; 2916c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt 2928d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt#ifdef CONFIG_WPS 2938d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt wpas_dbus_signal_wps_event_fail(wpa_s, fail); 2948d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt#endif /* CONFIG_WPS */ 2958d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt} 2968d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 2978d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 2988d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtvoid wpas_notify_wps_event_success(struct wpa_supplicant *wpa_s) 2998d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt{ 3006c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt if (wpa_s->p2p_mgmt) 3016c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt return; 3026c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt 3038d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt#ifdef CONFIG_WPS 3048d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt wpas_dbus_signal_wps_event_success(wpa_s); 3058d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt#endif /* CONFIG_WPS */ 3068d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt} 3078d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 3087a53dbb56693ee9f55c0cab1a8297436511e8613Dmitry Shmidtvoid wpas_notify_wps_event_pbc_overlap(struct wpa_supplicant *wpa_s) 3097a53dbb56693ee9f55c0cab1a8297436511e8613Dmitry Shmidt{ 3107a53dbb56693ee9f55c0cab1a8297436511e8613Dmitry Shmidt if (wpa_s->p2p_mgmt) 3117a53dbb56693ee9f55c0cab1a8297436511e8613Dmitry Shmidt return; 3127a53dbb56693ee9f55c0cab1a8297436511e8613Dmitry Shmidt 3137a53dbb56693ee9f55c0cab1a8297436511e8613Dmitry Shmidt#ifdef CONFIG_WPS 3147a53dbb56693ee9f55c0cab1a8297436511e8613Dmitry Shmidt wpas_dbus_signal_wps_event_pbc_overlap(wpa_s); 3157a53dbb56693ee9f55c0cab1a8297436511e8613Dmitry Shmidt#endif /* CONFIG_WPS */ 3167a53dbb56693ee9f55c0cab1a8297436511e8613Dmitry Shmidt} 3177a53dbb56693ee9f55c0cab1a8297436511e8613Dmitry Shmidt 3188d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 3198d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtvoid wpas_notify_network_added(struct wpa_supplicant *wpa_s, 3208d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt struct wpa_ssid *ssid) 3218d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt{ 3226c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt if (wpa_s->p2p_mgmt) 3236c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt return; 3246c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt 32575ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen /* 32675ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen * Networks objects created during any P2P activities should not be 32775ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen * exposed out. They might/will confuse certain non-P2P aware 32875ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen * applications since these network objects won't behave like 32975ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen * regular ones. 33075ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen */ 331391c59f0632df8db1c325da1d31d479b2eedce45Dmitry Shmidt if (!ssid->p2p_group && wpa_s->global->p2p_group_formation != wpa_s) 33275ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen wpas_dbus_register_network(wpa_s, ssid); 33375ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen} 33475ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen 33575ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen 33675ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinenvoid wpas_notify_persistent_group_added(struct wpa_supplicant *wpa_s, 33775ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen struct wpa_ssid *ssid) 33875ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen{ 339c55524ad84d13014e8019491c2b17e5dcf13545aDmitry Shmidt#ifdef CONFIG_P2P 34075ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen wpas_dbus_register_persistent_group(wpa_s, ssid); 341c55524ad84d13014e8019491c2b17e5dcf13545aDmitry Shmidt#endif /* CONFIG_P2P */ 34275ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen} 34375ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen 34475ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen 34575ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinenvoid wpas_notify_persistent_group_removed(struct wpa_supplicant *wpa_s, 34675ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen struct wpa_ssid *ssid) 34775ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen{ 348c55524ad84d13014e8019491c2b17e5dcf13545aDmitry Shmidt#ifdef CONFIG_P2P 34975ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen wpas_dbus_unregister_persistent_group(wpa_s, ssid->id); 350c55524ad84d13014e8019491c2b17e5dcf13545aDmitry Shmidt#endif /* CONFIG_P2P */ 3518d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt} 3528d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 3538d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 3548d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtvoid wpas_notify_network_removed(struct wpa_supplicant *wpa_s, 3558d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt struct wpa_ssid *ssid) 3568d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt{ 357f21452aea786ac056eb01f1cbba4f553bd502747Dmitry Shmidt if (wpa_s->next_ssid == ssid) 358f21452aea786ac056eb01f1cbba4f553bd502747Dmitry Shmidt wpa_s->next_ssid = NULL; 3591f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidt if (wpa_s->wpa) 3601f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidt wpa_sm_pmksa_cache_flush(wpa_s->wpa, ssid); 361cc00d5dc8483e32158b2ba61ea44b0c38d790ed7Dmitry Shmidt if (!ssid->p2p_group && wpa_s->global->p2p_group_formation != wpa_s && 362cc00d5dc8483e32158b2ba61ea44b0c38d790ed7Dmitry Shmidt !wpa_s->p2p_mgmt) 36375ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen wpas_dbus_unregister_network(wpa_s, ssid->id); 3646c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt if (network_is_persistent_group(ssid)) 3656c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt wpas_notify_persistent_group_removed(wpa_s, ssid); 3666c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt 3671f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidt wpas_p2p_network_removed(wpa_s, ssid); 3688d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt} 3698d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 3708d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 3718d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtvoid wpas_notify_bss_added(struct wpa_supplicant *wpa_s, 3728d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt u8 bssid[], unsigned int id) 3738d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt{ 3746c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt if (wpa_s->p2p_mgmt) 3756c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt return; 3766c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt 3778d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt wpas_dbus_register_bss(wpa_s, bssid, id); 3788d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt wpa_msg_ctrl(wpa_s, MSG_INFO, WPA_EVENT_BSS_ADDED "%u " MACSTR, 3798d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt id, MAC2STR(bssid)); 3808d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt} 3818d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 3828d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 3838d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtvoid wpas_notify_bss_removed(struct wpa_supplicant *wpa_s, 3848d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt u8 bssid[], unsigned int id) 3858d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt{ 3866c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt if (wpa_s->p2p_mgmt) 3876c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt return; 3886c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt 3898d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt wpas_dbus_unregister_bss(wpa_s, bssid, id); 3908d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt wpa_msg_ctrl(wpa_s, MSG_INFO, WPA_EVENT_BSS_REMOVED "%u " MACSTR, 3918d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt id, MAC2STR(bssid)); 3928d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt} 3938d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 3948d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 3958d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtvoid wpas_notify_bss_freq_changed(struct wpa_supplicant *wpa_s, 3968d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt unsigned int id) 3978d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt{ 3986c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt if (wpa_s->p2p_mgmt) 3996c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt return; 4006c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt 4018d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt wpas_dbus_bss_signal_prop_changed(wpa_s, WPAS_DBUS_BSS_PROP_FREQ, id); 4028d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt} 4038d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 4048d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 4058d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtvoid wpas_notify_bss_signal_changed(struct wpa_supplicant *wpa_s, 4068d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt unsigned int id) 4078d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt{ 4086c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt if (wpa_s->p2p_mgmt) 4096c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt return; 4106c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt 4118d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt wpas_dbus_bss_signal_prop_changed(wpa_s, WPAS_DBUS_BSS_PROP_SIGNAL, 4128d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt id); 4138d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt} 4148d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 4158d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 4168d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtvoid wpas_notify_bss_privacy_changed(struct wpa_supplicant *wpa_s, 4178d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt unsigned int id) 4188d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt{ 4196c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt if (wpa_s->p2p_mgmt) 4206c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt return; 4216c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt 4228d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt wpas_dbus_bss_signal_prop_changed(wpa_s, WPAS_DBUS_BSS_PROP_PRIVACY, 4238d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt id); 4248d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt} 4258d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 4268d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 4278d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtvoid wpas_notify_bss_mode_changed(struct wpa_supplicant *wpa_s, 4288d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt unsigned int id) 4298d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt{ 4306c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt if (wpa_s->p2p_mgmt) 4316c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt return; 4326c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt 4338d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt wpas_dbus_bss_signal_prop_changed(wpa_s, WPAS_DBUS_BSS_PROP_MODE, id); 4348d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt} 4358d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 4368d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 4378d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtvoid wpas_notify_bss_wpaie_changed(struct wpa_supplicant *wpa_s, 4388d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt unsigned int id) 4398d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt{ 4406c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt if (wpa_s->p2p_mgmt) 4416c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt return; 4426c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt 4438d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt wpas_dbus_bss_signal_prop_changed(wpa_s, WPAS_DBUS_BSS_PROP_WPA, id); 4448d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt} 4458d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 4468d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 4478d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtvoid wpas_notify_bss_rsnie_changed(struct wpa_supplicant *wpa_s, 4488d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt unsigned int id) 4498d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt{ 4506c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt if (wpa_s->p2p_mgmt) 4516c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt return; 4526c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt 4538d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt wpas_dbus_bss_signal_prop_changed(wpa_s, WPAS_DBUS_BSS_PROP_RSN, id); 4548d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt} 4558d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 4568d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 4578d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtvoid wpas_notify_bss_wps_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 463d5e4923d04122f81300fa68fb07d64ede28fd44dDmitry Shmidt#ifdef CONFIG_WPS 464d5e4923d04122f81300fa68fb07d64ede28fd44dDmitry Shmidt wpas_dbus_bss_signal_prop_changed(wpa_s, WPAS_DBUS_BSS_PROP_WPS, id); 465d5e4923d04122f81300fa68fb07d64ede28fd44dDmitry Shmidt#endif /* CONFIG_WPS */ 4668d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt} 4678d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 4688d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 4698d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtvoid wpas_notify_bss_ies_changed(struct wpa_supplicant *wpa_s, 4708d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt unsigned int id) 4718d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt{ 4726c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt if (wpa_s->p2p_mgmt) 4736c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt return; 4746c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt 4758d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt wpas_dbus_bss_signal_prop_changed(wpa_s, WPAS_DBUS_BSS_PROP_IES, id); 4768d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt} 4778d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 4788d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 4798d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtvoid wpas_notify_bss_rates_changed(struct wpa_supplicant *wpa_s, 4808d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt unsigned int id) 4818d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt{ 4826c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt if (wpa_s->p2p_mgmt) 4836c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt return; 4846c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt 4858d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt wpas_dbus_bss_signal_prop_changed(wpa_s, WPAS_DBUS_BSS_PROP_RATES, id); 4868d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt} 4878d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 4888d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 489661b4f78e48c697429dc46154a4125892c001718Dmitry Shmidtvoid wpas_notify_bss_seen(struct wpa_supplicant *wpa_s, unsigned int id) 490661b4f78e48c697429dc46154a4125892c001718Dmitry Shmidt{ 4916c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt if (wpa_s->p2p_mgmt) 4926c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt return; 4936c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt 494661b4f78e48c697429dc46154a4125892c001718Dmitry Shmidt wpas_dbus_bss_signal_prop_changed(wpa_s, WPAS_DBUS_BSS_PROP_AGE, id); 495661b4f78e48c697429dc46154a4125892c001718Dmitry Shmidt} 496661b4f78e48c697429dc46154a4125892c001718Dmitry Shmidt 497661b4f78e48c697429dc46154a4125892c001718Dmitry Shmidt 4988d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtvoid wpas_notify_blob_added(struct wpa_supplicant *wpa_s, const char *name) 4998d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt{ 5006c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt if (wpa_s->p2p_mgmt) 5016c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt return; 5026c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt 5038d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt wpas_dbus_signal_blob_added(wpa_s, name); 5048d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt} 5058d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 5068d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 5078d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtvoid wpas_notify_blob_removed(struct wpa_supplicant *wpa_s, const char *name) 5088d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt{ 5096c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt if (wpa_s->p2p_mgmt) 5106c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt return; 5116c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt 5128d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt wpas_dbus_signal_blob_removed(wpa_s, name); 5138d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt} 5148d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 5158d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 5168d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtvoid wpas_notify_debug_level_changed(struct wpa_global *global) 5178d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt{ 5188d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt wpas_dbus_signal_debug_level_changed(global); 5198d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt} 5208d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 5218d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 5228d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtvoid wpas_notify_debug_timestamp_changed(struct wpa_global *global) 5238d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt{ 5248d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt wpas_dbus_signal_debug_timestamp_changed(global); 5258d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt} 5268d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 5278d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 5288d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtvoid wpas_notify_debug_show_keys_changed(struct wpa_global *global) 5298d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt{ 5308d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt wpas_dbus_signal_debug_show_keys_changed(global); 5318d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt} 5328d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 5338d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 5348d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtvoid wpas_notify_suspend(struct wpa_global *global) 5358d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt{ 5368d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt struct wpa_supplicant *wpa_s; 5378d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 5388d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt os_get_time(&global->suspend_time); 5398d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt wpa_printf(MSG_DEBUG, "System suspend notification"); 5408d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt for (wpa_s = global->ifaces; wpa_s; wpa_s = wpa_s->next) 5418d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt wpa_drv_suspend(wpa_s); 5428d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt} 5438d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 5448d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 5458d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtvoid wpas_notify_resume(struct wpa_global *global) 5468d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt{ 5478d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt struct os_time now; 5488d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt int slept; 5498d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt struct wpa_supplicant *wpa_s; 5508d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 5518d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt if (global->suspend_time.sec == 0) 5528d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt slept = -1; 5538d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt else { 5548d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt os_get_time(&now); 5558d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt slept = now.sec - global->suspend_time.sec; 5568d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt } 5578d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt wpa_printf(MSG_DEBUG, "System resume notification (slept %d seconds)", 5588d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt slept); 5598d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 5608d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt for (wpa_s = global->ifaces; wpa_s; wpa_s = wpa_s->next) { 5618d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt wpa_drv_resume(wpa_s); 5628d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt if (wpa_s->wpa_state == WPA_DISCONNECTED) 5638d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt wpa_supplicant_req_scan(wpa_s, 0, 100000); 5648d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt } 5658d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt} 5668d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 5678d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 5688d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt#ifdef CONFIG_P2P 5698d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 5708bd70b7d6ba220544ee2f0e201e5df23e277fa1dDmitry Shmidtvoid wpas_notify_p2p_find_stopped(struct wpa_supplicant *wpa_s) 5718bd70b7d6ba220544ee2f0e201e5df23e277fa1dDmitry Shmidt{ 5728bd70b7d6ba220544ee2f0e201e5df23e277fa1dDmitry Shmidt /* Notify P2P find has stopped */ 5738bd70b7d6ba220544ee2f0e201e5df23e277fa1dDmitry Shmidt wpas_dbus_signal_p2p_find_stopped(wpa_s); 5748bd70b7d6ba220544ee2f0e201e5df23e277fa1dDmitry Shmidt} 5758bd70b7d6ba220544ee2f0e201e5df23e277fa1dDmitry Shmidt 5768bd70b7d6ba220544ee2f0e201e5df23e277fa1dDmitry Shmidt 5778d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtvoid wpas_notify_p2p_device_found(struct wpa_supplicant *wpa_s, 5788d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt const u8 *dev_addr, int new_device) 5798d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt{ 58075ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen if (new_device) { 58175ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen /* Create the new peer object */ 58275ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen wpas_dbus_register_peer(wpa_s, dev_addr); 58375ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen } 58475ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen 58575ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen /* Notify a new peer has been detected*/ 58675ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen wpas_dbus_signal_peer_device_found(wpa_s, dev_addr); 5878d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt} 5888d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 5898d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 5908d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtvoid wpas_notify_p2p_device_lost(struct wpa_supplicant *wpa_s, 5918d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt const u8 *dev_addr) 5928d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt{ 59375ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen wpas_dbus_unregister_peer(wpa_s, dev_addr); 59475ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen 59575ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen /* Create signal on interface object*/ 59675ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen wpas_dbus_signal_peer_device_lost(wpa_s, dev_addr); 5978d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt} 5988d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 5998d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 6008d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtvoid wpas_notify_p2p_group_removed(struct wpa_supplicant *wpa_s, 6018d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt const struct wpa_ssid *ssid, 6028d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt const char *role) 6038d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt{ 60475ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen wpas_dbus_signal_p2p_group_removed(wpa_s, role); 60503658834c33748b9ad86f3d4cdf0c7be9c6887d1Dmitry Shmidt 60603658834c33748b9ad86f3d4cdf0c7be9c6887d1Dmitry Shmidt wpas_dbus_unregister_p2p_group(wpa_s, ssid); 6078d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt} 6088d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 6098d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 6108d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtvoid wpas_notify_p2p_go_neg_req(struct wpa_supplicant *wpa_s, 6117a53dbb56693ee9f55c0cab1a8297436511e8613Dmitry Shmidt const u8 *src, u16 dev_passwd_id, u8 go_intent) 6128d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt{ 6137a53dbb56693ee9f55c0cab1a8297436511e8613Dmitry Shmidt wpas_dbus_signal_p2p_go_neg_req(wpa_s, src, dev_passwd_id, go_intent); 6148d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt} 6158d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 6168d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 6171f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidtvoid wpas_notify_p2p_go_neg_completed(struct wpa_supplicant *wpa_s, 6181f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidt struct p2p_go_neg_results *res) 6198d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt{ 6201f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidt wpas_dbus_signal_p2p_go_neg_resp(wpa_s, res); 6218d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt} 6228d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 6238d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 6248d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtvoid wpas_notify_p2p_invitation_result(struct wpa_supplicant *wpa_s, 6258d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt int status, const u8 *bssid) 6268d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt{ 62775ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen wpas_dbus_signal_p2p_invitation_result(wpa_s, status, bssid); 6288d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt} 6298d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 6308d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 6318d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtvoid wpas_notify_p2p_sd_request(struct wpa_supplicant *wpa_s, 6328d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt int freq, const u8 *sa, u8 dialog_token, 6338d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt u16 update_indic, const u8 *tlvs, 6348d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt size_t tlvs_len) 6358d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt{ 63675ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen wpas_dbus_signal_p2p_sd_request(wpa_s, freq, sa, dialog_token, 63775ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen update_indic, tlvs, tlvs_len); 6388d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt} 6398d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 6408d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 6418d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtvoid wpas_notify_p2p_sd_response(struct wpa_supplicant *wpa_s, 6428d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt const u8 *sa, u16 update_indic, 6438d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt const u8 *tlvs, size_t tlvs_len) 6448d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt{ 64575ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen wpas_dbus_signal_p2p_sd_response(wpa_s, sa, update_indic, 64675ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen tlvs, tlvs_len); 64775ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen} 64875ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen 64975ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen 65075ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen/** 65175ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen * wpas_notify_p2p_provision_discovery - Notification of provision discovery 65275ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen * @dev_addr: Who sent the request or responded to our request. 65375ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen * @request: Will be 1 if request, 0 for response. 65475ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen * @status: Valid only in case of response (0 in case of success) 65575ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen * @config_methods: WPS config methods 65675ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen * @generated_pin: PIN to be displayed in case of WPS_CONFIG_DISPLAY method 65775ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen * 65875ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen * This can be used to notify: 65975ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen * - Requests or responses 66075ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen * - Various config methods 66175ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen * - Failure condition in case of response 66275ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen */ 66375ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinenvoid wpas_notify_p2p_provision_discovery(struct wpa_supplicant *wpa_s, 66475ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen const u8 *dev_addr, int request, 66575ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen enum p2p_prov_disc_status status, 66675ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen u16 config_methods, 66775ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen unsigned int generated_pin) 66875ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen{ 66975ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen wpas_dbus_signal_p2p_provision_discovery(wpa_s, dev_addr, request, 67075ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen status, config_methods, 67175ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen generated_pin); 67275ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen} 67375ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen 67475ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen 67575ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinenvoid wpas_notify_p2p_group_started(struct wpa_supplicant *wpa_s, 676d5ab1b53af720d05586ccc0addabe93459f1f388Dmitry Shmidt struct wpa_ssid *ssid, int persistent, 67775ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen int client) 67875ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen{ 67975ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen /* Notify a group has been started */ 68075ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen wpas_dbus_register_p2p_group(wpa_s, ssid); 68175ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen 682d5ab1b53af720d05586ccc0addabe93459f1f388Dmitry Shmidt wpas_dbus_signal_p2p_group_started(wpa_s, client, persistent); 68375ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen} 68475ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen 68575ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen 686d80a401aed31d06f261efd19223cf55d1a2a8228Dmitry Shmidtvoid wpas_notify_p2p_group_formation_failure(struct wpa_supplicant *wpa_s, 687d80a401aed31d06f261efd19223cf55d1a2a8228Dmitry Shmidt const char *reason) 688d80a401aed31d06f261efd19223cf55d1a2a8228Dmitry Shmidt{ 689d80a401aed31d06f261efd19223cf55d1a2a8228Dmitry Shmidt /* Notify a group formation failed */ 690d80a401aed31d06f261efd19223cf55d1a2a8228Dmitry Shmidt wpas_dbus_signal_p2p_group_formation_failure(wpa_s, reason); 691d80a401aed31d06f261efd19223cf55d1a2a8228Dmitry Shmidt} 692d80a401aed31d06f261efd19223cf55d1a2a8228Dmitry Shmidt 693d80a401aed31d06f261efd19223cf55d1a2a8228Dmitry Shmidt 69475ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinenvoid wpas_notify_p2p_wps_failed(struct wpa_supplicant *wpa_s, 69575ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen struct wps_event_fail *fail) 69675ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen{ 69775ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen wpas_dbus_signal_p2p_wps_failed(wpa_s, fail); 6988d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt} 6998d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 700d80a401aed31d06f261efd19223cf55d1a2a8228Dmitry Shmidt 701d80a401aed31d06f261efd19223cf55d1a2a8228Dmitry Shmidtvoid wpas_notify_p2p_invitation_received(struct wpa_supplicant *wpa_s, 702d80a401aed31d06f261efd19223cf55d1a2a8228Dmitry Shmidt const u8 *sa, const u8 *go_dev_addr, 703d80a401aed31d06f261efd19223cf55d1a2a8228Dmitry Shmidt const u8 *bssid, int id, int op_freq) 704d80a401aed31d06f261efd19223cf55d1a2a8228Dmitry Shmidt{ 705d80a401aed31d06f261efd19223cf55d1a2a8228Dmitry Shmidt /* Notify a P2P Invitation Request */ 706d80a401aed31d06f261efd19223cf55d1a2a8228Dmitry Shmidt wpas_dbus_signal_p2p_invitation_received(wpa_s, sa, go_dev_addr, bssid, 707d80a401aed31d06f261efd19223cf55d1a2a8228Dmitry Shmidt id, op_freq); 708d80a401aed31d06f261efd19223cf55d1a2a8228Dmitry Shmidt} 709d80a401aed31d06f261efd19223cf55d1a2a8228Dmitry Shmidt 7108d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt#endif /* CONFIG_P2P */ 7118d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 7128d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 7138d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtstatic void wpas_notify_ap_sta_authorized(struct wpa_supplicant *wpa_s, 7141f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidt const u8 *sta, 7151f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidt const u8 *p2p_dev_addr) 7168d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt{ 71775ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen#ifdef CONFIG_P2P 7181f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidt wpas_p2p_notify_ap_sta_authorized(wpa_s, p2p_dev_addr); 7191f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidt 72075ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen /* 72175ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen * Create 'peer-joined' signal on group object -- will also 72275ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen * check P2P itself. 72375ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen */ 7246c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt if (p2p_dev_addr) 7256c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt wpas_dbus_signal_p2p_peer_joined(wpa_s, p2p_dev_addr); 72675ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen#endif /* CONFIG_P2P */ 72734af306c42b7ccf956508e7cd23f0ba90606e360Dmitry Shmidt 72834af306c42b7ccf956508e7cd23f0ba90606e360Dmitry Shmidt /* Notify listeners a new station has been authorized */ 72934af306c42b7ccf956508e7cd23f0ba90606e360Dmitry Shmidt wpas_dbus_signal_sta_authorized(wpa_s, sta); 7308d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt} 7318d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 7328d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 7338d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtstatic void wpas_notify_ap_sta_deauthorized(struct wpa_supplicant *wpa_s, 734d30ac604c9f6da71a0dd7f46d25be05a2a62cfbbDmitry Shmidt const u8 *sta, 735d30ac604c9f6da71a0dd7f46d25be05a2a62cfbbDmitry Shmidt const u8 *p2p_dev_addr) 7368d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt{ 73775ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen#ifdef CONFIG_P2P 73875ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen /* 73975ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen * Create 'peer-disconnected' signal on group object if this 74075ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen * is a P2P group. 74175ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen */ 7426c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt if (p2p_dev_addr) 7436c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt wpas_dbus_signal_p2p_peer_disconnected(wpa_s, p2p_dev_addr); 74475ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen#endif /* CONFIG_P2P */ 74534af306c42b7ccf956508e7cd23f0ba90606e360Dmitry Shmidt 74634af306c42b7ccf956508e7cd23f0ba90606e360Dmitry Shmidt /* Notify listeners a station has been deauthorized */ 74734af306c42b7ccf956508e7cd23f0ba90606e360Dmitry Shmidt wpas_dbus_signal_sta_deauthorized(wpa_s, sta); 7488d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt} 7498d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 7508d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 7518d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtvoid wpas_notify_sta_authorized(struct wpa_supplicant *wpa_s, 7521f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidt const u8 *mac_addr, int authorized, 7531f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidt const u8 *p2p_dev_addr) 7548d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt{ 7558d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt if (authorized) 7561f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidt wpas_notify_ap_sta_authorized(wpa_s, mac_addr, p2p_dev_addr); 7578d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt else 758d30ac604c9f6da71a0dd7f46d25be05a2a62cfbbDmitry Shmidt wpas_notify_ap_sta_deauthorized(wpa_s, mac_addr, p2p_dev_addr); 7598d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt} 760c55524ad84d13014e8019491c2b17e5dcf13545aDmitry Shmidt 761c55524ad84d13014e8019491c2b17e5dcf13545aDmitry Shmidt 762c55524ad84d13014e8019491c2b17e5dcf13545aDmitry Shmidtvoid wpas_notify_certification(struct wpa_supplicant *wpa_s, int depth, 7632f74e36e84064ffa32f82f3decf36b653c7e4fadDmitry Shmidt const char *subject, const char *altsubject[], 7642f74e36e84064ffa32f82f3decf36b653c7e4fadDmitry Shmidt int num_altsubject, const char *cert_hash, 765c55524ad84d13014e8019491c2b17e5dcf13545aDmitry Shmidt const struct wpabuf *cert) 766c55524ad84d13014e8019491c2b17e5dcf13545aDmitry Shmidt{ 767c55524ad84d13014e8019491c2b17e5dcf13545aDmitry Shmidt wpa_msg(wpa_s, MSG_INFO, WPA_EVENT_EAP_PEER_CERT 768c55524ad84d13014e8019491c2b17e5dcf13545aDmitry Shmidt "depth=%d subject='%s'%s%s", 7692f74e36e84064ffa32f82f3decf36b653c7e4fadDmitry Shmidt depth, subject, cert_hash ? " hash=" : "", 770c55524ad84d13014e8019491c2b17e5dcf13545aDmitry Shmidt cert_hash ? cert_hash : ""); 771c55524ad84d13014e8019491c2b17e5dcf13545aDmitry Shmidt 772c55524ad84d13014e8019491c2b17e5dcf13545aDmitry Shmidt if (cert) { 773c55524ad84d13014e8019491c2b17e5dcf13545aDmitry Shmidt char *cert_hex; 774c55524ad84d13014e8019491c2b17e5dcf13545aDmitry Shmidt size_t len = wpabuf_len(cert) * 2 + 1; 775c55524ad84d13014e8019491c2b17e5dcf13545aDmitry Shmidt cert_hex = os_malloc(len); 776c55524ad84d13014e8019491c2b17e5dcf13545aDmitry Shmidt if (cert_hex) { 777c55524ad84d13014e8019491c2b17e5dcf13545aDmitry Shmidt wpa_snprintf_hex(cert_hex, len, wpabuf_head(cert), 778c55524ad84d13014e8019491c2b17e5dcf13545aDmitry Shmidt wpabuf_len(cert)); 779c55524ad84d13014e8019491c2b17e5dcf13545aDmitry Shmidt wpa_msg_ctrl(wpa_s, MSG_INFO, 780c55524ad84d13014e8019491c2b17e5dcf13545aDmitry Shmidt WPA_EVENT_EAP_PEER_CERT 781c55524ad84d13014e8019491c2b17e5dcf13545aDmitry Shmidt "depth=%d subject='%s' cert=%s", 782c55524ad84d13014e8019491c2b17e5dcf13545aDmitry Shmidt depth, subject, cert_hex); 783c55524ad84d13014e8019491c2b17e5dcf13545aDmitry Shmidt os_free(cert_hex); 784c55524ad84d13014e8019491c2b17e5dcf13545aDmitry Shmidt } 785c55524ad84d13014e8019491c2b17e5dcf13545aDmitry Shmidt } 786c55524ad84d13014e8019491c2b17e5dcf13545aDmitry Shmidt 7872f74e36e84064ffa32f82f3decf36b653c7e4fadDmitry Shmidt if (altsubject) { 7882f74e36e84064ffa32f82f3decf36b653c7e4fadDmitry Shmidt int i; 7892f74e36e84064ffa32f82f3decf36b653c7e4fadDmitry Shmidt 7902f74e36e84064ffa32f82f3decf36b653c7e4fadDmitry Shmidt for (i = 0; i < num_altsubject; i++) 7912f74e36e84064ffa32f82f3decf36b653c7e4fadDmitry Shmidt wpa_msg(wpa_s, MSG_INFO, WPA_EVENT_EAP_PEER_ALT 7922f74e36e84064ffa32f82f3decf36b653c7e4fadDmitry Shmidt "depth=%d %s", depth, altsubject[i]); 7932f74e36e84064ffa32f82f3decf36b653c7e4fadDmitry Shmidt } 7942f74e36e84064ffa32f82f3decf36b653c7e4fadDmitry Shmidt 795c55524ad84d13014e8019491c2b17e5dcf13545aDmitry Shmidt /* notify the old DBus API */ 796c55524ad84d13014e8019491c2b17e5dcf13545aDmitry Shmidt wpa_supplicant_dbus_notify_certification(wpa_s, depth, subject, 797c55524ad84d13014e8019491c2b17e5dcf13545aDmitry Shmidt cert_hash, cert); 798c55524ad84d13014e8019491c2b17e5dcf13545aDmitry Shmidt /* notify the new DBus API */ 7992f74e36e84064ffa32f82f3decf36b653c7e4fadDmitry Shmidt wpas_dbus_signal_certification(wpa_s, depth, subject, altsubject, 8002f74e36e84064ffa32f82f3decf36b653c7e4fadDmitry Shmidt num_altsubject, cert_hash, cert); 801c55524ad84d13014e8019491c2b17e5dcf13545aDmitry Shmidt} 80204949598a23f501be6eec21697465fd46a28840aDmitry Shmidt 80304949598a23f501be6eec21697465fd46a28840aDmitry Shmidt 80404949598a23f501be6eec21697465fd46a28840aDmitry Shmidtvoid wpas_notify_preq(struct wpa_supplicant *wpa_s, 80504949598a23f501be6eec21697465fd46a28840aDmitry Shmidt const u8 *addr, const u8 *dst, const u8 *bssid, 80604949598a23f501be6eec21697465fd46a28840aDmitry Shmidt const u8 *ie, size_t ie_len, u32 ssi_signal) 80704949598a23f501be6eec21697465fd46a28840aDmitry Shmidt{ 80804949598a23f501be6eec21697465fd46a28840aDmitry Shmidt#ifdef CONFIG_AP 80904949598a23f501be6eec21697465fd46a28840aDmitry Shmidt wpas_dbus_signal_preq(wpa_s, addr, dst, bssid, ie, ie_len, ssi_signal); 81004949598a23f501be6eec21697465fd46a28840aDmitry Shmidt#endif /* CONFIG_AP */ 81104949598a23f501be6eec21697465fd46a28840aDmitry Shmidt} 81204949598a23f501be6eec21697465fd46a28840aDmitry Shmidt 81304949598a23f501be6eec21697465fd46a28840aDmitry Shmidt 81404949598a23f501be6eec21697465fd46a28840aDmitry Shmidtvoid wpas_notify_eap_status(struct wpa_supplicant *wpa_s, const char *status, 81504949598a23f501be6eec21697465fd46a28840aDmitry Shmidt const char *parameter) 81604949598a23f501be6eec21697465fd46a28840aDmitry Shmidt{ 81704949598a23f501be6eec21697465fd46a28840aDmitry Shmidt wpas_dbus_signal_eap_status(wpa_s, status, parameter); 8188da800a193fb6f8832218715f82a7b4e2d2ad338Dmitry Shmidt wpa_msg_ctrl(wpa_s, MSG_INFO, WPA_EVENT_EAP_STATUS 8198da800a193fb6f8832218715f82a7b4e2d2ad338Dmitry Shmidt "status='%s' parameter='%s'", 8208da800a193fb6f8832218715f82a7b4e2d2ad338Dmitry Shmidt status, parameter); 82104949598a23f501be6eec21697465fd46a28840aDmitry Shmidt} 822661b4f78e48c697429dc46154a4125892c001718Dmitry Shmidt 823661b4f78e48c697429dc46154a4125892c001718Dmitry Shmidt 824661b4f78e48c697429dc46154a4125892c001718Dmitry Shmidtvoid wpas_notify_network_bssid_set_changed(struct wpa_supplicant *wpa_s, 825661b4f78e48c697429dc46154a4125892c001718Dmitry Shmidt struct wpa_ssid *ssid) 826661b4f78e48c697429dc46154a4125892c001718Dmitry Shmidt{ 827661b4f78e48c697429dc46154a4125892c001718Dmitry Shmidt if (wpa_s->current_ssid != ssid) 828661b4f78e48c697429dc46154a4125892c001718Dmitry Shmidt return; 829661b4f78e48c697429dc46154a4125892c001718Dmitry Shmidt 830661b4f78e48c697429dc46154a4125892c001718Dmitry Shmidt wpa_dbg(wpa_s, MSG_DEBUG, 831661b4f78e48c697429dc46154a4125892c001718Dmitry Shmidt "Network bssid config changed for the current network - within-ESS roaming %s", 832661b4f78e48c697429dc46154a4125892c001718Dmitry Shmidt ssid->bssid_set ? "disabled" : "enabled"); 833661b4f78e48c697429dc46154a4125892c001718Dmitry Shmidt 834661b4f78e48c697429dc46154a4125892c001718Dmitry Shmidt wpa_drv_roaming(wpa_s, !ssid->bssid_set, 835661b4f78e48c697429dc46154a4125892c001718Dmitry Shmidt ssid->bssid_set ? ssid->bssid : NULL); 836661b4f78e48c697429dc46154a4125892c001718Dmitry Shmidt} 8377f65602d49069f96a7bb44da8bd79ffe8d4c6a98Dmitry Shmidt 8387f65602d49069f96a7bb44da8bd79ffe8d4c6a98Dmitry Shmidt 8397f65602d49069f96a7bb44da8bd79ffe8d4c6a98Dmitry Shmidtvoid wpas_notify_network_type_changed(struct wpa_supplicant *wpa_s, 8407f65602d49069f96a7bb44da8bd79ffe8d4c6a98Dmitry Shmidt struct wpa_ssid *ssid) 8417f65602d49069f96a7bb44da8bd79ffe8d4c6a98Dmitry Shmidt{ 8427f65602d49069f96a7bb44da8bd79ffe8d4c6a98Dmitry Shmidt#ifdef CONFIG_P2P 8437f65602d49069f96a7bb44da8bd79ffe8d4c6a98Dmitry Shmidt if (ssid->disabled == 2) { 8447f65602d49069f96a7bb44da8bd79ffe8d4c6a98Dmitry Shmidt /* Changed from normal network profile to persistent group */ 8457f65602d49069f96a7bb44da8bd79ffe8d4c6a98Dmitry Shmidt ssid->disabled = 0; 8467f65602d49069f96a7bb44da8bd79ffe8d4c6a98Dmitry Shmidt wpas_dbus_unregister_network(wpa_s, ssid->id); 8477f65602d49069f96a7bb44da8bd79ffe8d4c6a98Dmitry Shmidt ssid->disabled = 2; 8487a53dbb56693ee9f55c0cab1a8297436511e8613Dmitry Shmidt ssid->p2p_persistent_group = 1; 8497f65602d49069f96a7bb44da8bd79ffe8d4c6a98Dmitry Shmidt wpas_dbus_register_persistent_group(wpa_s, ssid); 8507f65602d49069f96a7bb44da8bd79ffe8d4c6a98Dmitry Shmidt } else { 8517f65602d49069f96a7bb44da8bd79ffe8d4c6a98Dmitry Shmidt /* Changed from persistent group to normal network profile */ 8527f65602d49069f96a7bb44da8bd79ffe8d4c6a98Dmitry Shmidt wpas_dbus_unregister_persistent_group(wpa_s, ssid->id); 8537a53dbb56693ee9f55c0cab1a8297436511e8613Dmitry Shmidt ssid->p2p_persistent_group = 0; 8547f65602d49069f96a7bb44da8bd79ffe8d4c6a98Dmitry Shmidt wpas_dbus_register_network(wpa_s, ssid); 8557f65602d49069f96a7bb44da8bd79ffe8d4c6a98Dmitry Shmidt } 8567f65602d49069f96a7bb44da8bd79ffe8d4c6a98Dmitry Shmidt#endif /* CONFIG_P2P */ 8577f65602d49069f96a7bb44da8bd79ffe8d4c6a98Dmitry Shmidt} 858