notify.c revision d80a401aed31d06f261efd19223cf55d1a2a8228
18d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt/* 28d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt * wpa_supplicant - Event notifications 38d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt * Copyright (c) 2009-2010, Jouni Malinen <j@w1.fi> 48d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt * 5c5ec7f57ead87efa365800228aa0b09a12d9e6c4Dmitry Shmidt * This software may be distributed under the terms of the BSD license. 6c5ec7f57ead87efa365800228aa0b09a12d9e6c4Dmitry Shmidt * See README for more details. 78d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt */ 88d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 98d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt#include "utils/includes.h" 108d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 118d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt#include "utils/common.h" 128d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt#include "common/wpa_ctrl.h" 138d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt#include "config.h" 148d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt#include "wpa_supplicant_i.h" 158d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt#include "wps_supplicant.h" 168d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt#include "dbus/dbus_common.h" 178d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt#include "dbus/dbus_old.h" 188d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt#include "dbus/dbus_new.h" 191f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidt#include "rsn_supp/wpa.h" 20d80a401aed31d06f261efd19223cf55d1a2a8228Dmitry Shmidt#include "fst/fst.h" 218d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt#include "driver_i.h" 228d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt#include "scan.h" 238d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt#include "p2p_supplicant.h" 248d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt#include "sme.h" 258d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt#include "notify.h" 268d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 278d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtint wpas_notify_supplicant_initialized(struct wpa_global *global) 288d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt{ 298d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt#ifdef CONFIG_DBUS 308d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt if (global->params.dbus_ctrl_interface) { 318d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt global->dbus = wpas_dbus_init(global); 328d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt if (global->dbus == NULL) 338d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt return -1; 348d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt } 358d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt#endif /* CONFIG_DBUS */ 368d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 378d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt return 0; 388d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt} 398d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 408d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 418d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtvoid wpas_notify_supplicant_deinitialized(struct wpa_global *global) 428d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt{ 438d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt#ifdef CONFIG_DBUS 448d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt if (global->dbus) 458d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt wpas_dbus_deinit(global->dbus); 468d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt#endif /* CONFIG_DBUS */ 478d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt} 488d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 498d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 508d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtint wpas_notify_iface_added(struct wpa_supplicant *wpa_s) 518d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt{ 526c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt if (wpa_s->p2p_mgmt) 536c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt return 0; 546c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt 558d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt if (wpas_dbus_register_iface(wpa_s)) 568d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt return -1; 578d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 588d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt if (wpas_dbus_register_interface(wpa_s)) 598d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt return -1; 608d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 618d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt return 0; 628d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt} 638d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 648d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 658d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtvoid wpas_notify_iface_removed(struct wpa_supplicant *wpa_s) 668d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt{ 676c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt if (wpa_s->p2p_mgmt) 686c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt return; 696c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt 708d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt /* unregister interface in old DBus ctrl iface */ 718d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt wpas_dbus_unregister_iface(wpa_s); 728d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 738d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt /* unregister interface in new DBus ctrl iface */ 748d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt wpas_dbus_unregister_interface(wpa_s); 758d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt} 768d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 778d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 788d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtvoid wpas_notify_state_changed(struct wpa_supplicant *wpa_s, 798d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt enum wpa_states new_state, 808d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt enum wpa_states old_state) 818d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt{ 826c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt if (wpa_s->p2p_mgmt) 836c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt return; 846c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt 858d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt /* notify the old DBus API */ 868d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt wpa_supplicant_dbus_notify_state_change(wpa_s, new_state, 878d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt old_state); 888d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 898d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt /* notify the new DBus API */ 908d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt wpas_dbus_signal_prop_changed(wpa_s, WPAS_DBUS_PROP_STATE); 918d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 92d80a401aed31d06f261efd19223cf55d1a2a8228Dmitry Shmidt#ifdef CONFIG_FST 93d80a401aed31d06f261efd19223cf55d1a2a8228Dmitry Shmidt if (wpa_s->fst && !is_zero_ether_addr(wpa_s->bssid)) { 94d80a401aed31d06f261efd19223cf55d1a2a8228Dmitry Shmidt if (new_state == WPA_COMPLETED) 95d80a401aed31d06f261efd19223cf55d1a2a8228Dmitry Shmidt fst_notify_peer_connected(wpa_s->fst, wpa_s->bssid); 96d80a401aed31d06f261efd19223cf55d1a2a8228Dmitry Shmidt else if (old_state >= WPA_ASSOCIATED && 97d80a401aed31d06f261efd19223cf55d1a2a8228Dmitry Shmidt new_state < WPA_ASSOCIATED) 98d80a401aed31d06f261efd19223cf55d1a2a8228Dmitry Shmidt fst_notify_peer_disconnected(wpa_s->fst, wpa_s->bssid); 99d80a401aed31d06f261efd19223cf55d1a2a8228Dmitry Shmidt } 100d80a401aed31d06f261efd19223cf55d1a2a8228Dmitry Shmidt#endif /* CONFIG_FST */ 101d80a401aed31d06f261efd19223cf55d1a2a8228Dmitry Shmidt 1028d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt if (new_state == WPA_COMPLETED) 1038d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt wpas_p2p_notif_connected(wpa_s); 10404949598a23f501be6eec21697465fd46a28840aDmitry Shmidt else if (old_state >= WPA_ASSOCIATED && new_state < WPA_ASSOCIATED) 1058d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt wpas_p2p_notif_disconnected(wpa_s); 1068d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 1078d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt sme_state_changed(wpa_s); 1088d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 1098d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt#ifdef ANDROID 1108d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt wpa_msg_ctrl(wpa_s, MSG_INFO, WPA_EVENT_STATE_CHANGE 111f20a4432808cee548326c4b35c83071ca576a239Irfan Sheriff "id=%d state=%d BSSID=" MACSTR " SSID=%s", 1128d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt wpa_s->current_ssid ? wpa_s->current_ssid->id : -1, 113f20a4432808cee548326c4b35c83071ca576a239Irfan Sheriff new_state, 114e78e767aea5576ec0ba7edadfe25fd9dc7dce48fIrfan Sheriff MAC2STR(wpa_s->bssid), 1155b5fb02b225c5c05a4477bef58bdaceede5d68dcandy wpa_s->current_ssid && wpa_s->current_ssid->ssid ? 1165b5fb02b225c5c05a4477bef58bdaceede5d68dcandy wpa_ssid_txt(wpa_s->current_ssid->ssid, 117e0e48dc666fb14a7bb60264ca87463ba7bc1fe0bDmitry Shmidt wpa_s->current_ssid->ssid_len) : ""); 1188d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt#endif /* ANDROID */ 1198d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt} 1208d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 1218d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 12204949598a23f501be6eec21697465fd46a28840aDmitry Shmidtvoid wpas_notify_disconnect_reason(struct wpa_supplicant *wpa_s) 12304949598a23f501be6eec21697465fd46a28840aDmitry Shmidt{ 1246c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt if (wpa_s->p2p_mgmt) 1256c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt return; 1266c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt 12704949598a23f501be6eec21697465fd46a28840aDmitry Shmidt wpas_dbus_signal_prop_changed(wpa_s, WPAS_DBUS_PROP_DISCONNECT_REASON); 12804949598a23f501be6eec21697465fd46a28840aDmitry Shmidt} 12904949598a23f501be6eec21697465fd46a28840aDmitry Shmidt 13004949598a23f501be6eec21697465fd46a28840aDmitry Shmidt 1318d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtvoid wpas_notify_network_changed(struct wpa_supplicant *wpa_s) 1328d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt{ 1336c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt if (wpa_s->p2p_mgmt) 1346c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt return; 1356c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt 1368d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt wpas_dbus_signal_prop_changed(wpa_s, WPAS_DBUS_PROP_CURRENT_NETWORK); 1378d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt} 1388d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 1398d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 1408d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtvoid wpas_notify_ap_scan_changed(struct wpa_supplicant *wpa_s) 1418d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt{ 1426c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt if (wpa_s->p2p_mgmt) 1436c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt return; 1446c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt 1458d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt wpas_dbus_signal_prop_changed(wpa_s, WPAS_DBUS_PROP_AP_SCAN); 1468d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt} 1478d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 1488d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 1498d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtvoid wpas_notify_bssid_changed(struct wpa_supplicant *wpa_s) 1508d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt{ 1516c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt if (wpa_s->p2p_mgmt) 1526c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt return; 1536c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt 1548d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt wpas_dbus_signal_prop_changed(wpa_s, WPAS_DBUS_PROP_CURRENT_BSS); 1558d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt} 1568d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 1578d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 1588d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtvoid wpas_notify_auth_changed(struct wpa_supplicant *wpa_s) 1598d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt{ 1606c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt if (wpa_s->p2p_mgmt) 1616c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt return; 1626c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt 1638d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt wpas_dbus_signal_prop_changed(wpa_s, WPAS_DBUS_PROP_CURRENT_AUTH_MODE); 1648d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt} 1658d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 1668d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 1678d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtvoid wpas_notify_network_enabled_changed(struct wpa_supplicant *wpa_s, 1688d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt struct wpa_ssid *ssid) 1698d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt{ 1706c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt if (wpa_s->p2p_mgmt) 1716c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt return; 1726c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt 1738d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt wpas_dbus_signal_network_enabled_changed(wpa_s, ssid); 1748d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt} 1758d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 1768d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 1778d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtvoid wpas_notify_network_selected(struct wpa_supplicant *wpa_s, 1788d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt struct wpa_ssid *ssid) 1798d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt{ 1806c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt if (wpa_s->p2p_mgmt) 1816c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt return; 1826c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt 1838d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt wpas_dbus_signal_network_selected(wpa_s, ssid->id); 1848d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt} 1858d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 1868d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 1871f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidtvoid wpas_notify_network_request(struct wpa_supplicant *wpa_s, 1881f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidt struct wpa_ssid *ssid, 1891f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidt enum wpa_ctrl_req_type rtype, 1901f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidt const char *default_txt) 1911f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidt{ 1926c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt if (wpa_s->p2p_mgmt) 1936c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt return; 1946c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt 1951f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidt wpas_dbus_signal_network_request(wpa_s, ssid, rtype, default_txt); 1961f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidt} 1971f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidt 1981f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidt 1998d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtvoid wpas_notify_scanning(struct wpa_supplicant *wpa_s) 2008d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt{ 2016c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt if (wpa_s->p2p_mgmt) 2026c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt return; 2036c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt 2048d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt /* notify the old DBus API */ 2058d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt wpa_supplicant_dbus_notify_scanning(wpa_s); 2068d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 2078d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt /* notify the new DBus API */ 2088d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt wpas_dbus_signal_prop_changed(wpa_s, WPAS_DBUS_PROP_SCANNING); 2098d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt} 2108d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 2118d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 2128d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtvoid wpas_notify_scan_done(struct wpa_supplicant *wpa_s, int success) 2138d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt{ 2146c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt if (wpa_s->p2p_mgmt) 2156c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt return; 2166c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt 2178d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt wpas_dbus_signal_scan_done(wpa_s, success); 2188d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt} 2198d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 2208d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 2218d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtvoid wpas_notify_scan_results(struct wpa_supplicant *wpa_s) 2228d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt{ 2236c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt if (wpa_s->p2p_mgmt) 2246c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt return; 2256c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt 2268d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt /* notify the old DBus API */ 2278d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt wpa_supplicant_dbus_notify_scan_results(wpa_s); 2288d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 2298d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt wpas_wps_notify_scan_results(wpa_s); 2308d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt} 2318d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 2328d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 2338d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtvoid wpas_notify_wps_credential(struct wpa_supplicant *wpa_s, 2348d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt const struct wps_credential *cred) 2358d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt{ 2366c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt if (wpa_s->p2p_mgmt) 2376c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt return; 2386c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt 2398d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt#ifdef CONFIG_WPS 2408d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt /* notify the old DBus API */ 2418d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt wpa_supplicant_dbus_notify_wps_cred(wpa_s, cred); 2428d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt /* notify the new DBus API */ 2438d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt wpas_dbus_signal_wps_cred(wpa_s, cred); 2448d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt#endif /* CONFIG_WPS */ 2458d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt} 2468d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 2478d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 2488d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtvoid wpas_notify_wps_event_m2d(struct wpa_supplicant *wpa_s, 2498d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt struct wps_event_m2d *m2d) 2508d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt{ 2516c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt if (wpa_s->p2p_mgmt) 2526c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt return; 2536c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt 2548d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt#ifdef CONFIG_WPS 2558d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt wpas_dbus_signal_wps_event_m2d(wpa_s, m2d); 2568d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt#endif /* CONFIG_WPS */ 2578d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt} 2588d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 2598d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 2608d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtvoid wpas_notify_wps_event_fail(struct wpa_supplicant *wpa_s, 2618d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt struct wps_event_fail *fail) 2628d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt{ 2636c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt if (wpa_s->p2p_mgmt) 2646c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt return; 2656c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt 2668d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt#ifdef CONFIG_WPS 2678d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt wpas_dbus_signal_wps_event_fail(wpa_s, fail); 2688d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt#endif /* CONFIG_WPS */ 2698d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt} 2708d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 2718d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 2728d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtvoid wpas_notify_wps_event_success(struct wpa_supplicant *wpa_s) 2738d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt{ 2746c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt if (wpa_s->p2p_mgmt) 2756c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt return; 2766c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt 2778d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt#ifdef CONFIG_WPS 2788d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt wpas_dbus_signal_wps_event_success(wpa_s); 2798d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt#endif /* CONFIG_WPS */ 2808d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt} 2818d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 2827a53dbb56693ee9f55c0cab1a8297436511e8613Dmitry Shmidtvoid wpas_notify_wps_event_pbc_overlap(struct wpa_supplicant *wpa_s) 2837a53dbb56693ee9f55c0cab1a8297436511e8613Dmitry Shmidt{ 2847a53dbb56693ee9f55c0cab1a8297436511e8613Dmitry Shmidt if (wpa_s->p2p_mgmt) 2857a53dbb56693ee9f55c0cab1a8297436511e8613Dmitry Shmidt return; 2867a53dbb56693ee9f55c0cab1a8297436511e8613Dmitry Shmidt 2877a53dbb56693ee9f55c0cab1a8297436511e8613Dmitry Shmidt#ifdef CONFIG_WPS 2887a53dbb56693ee9f55c0cab1a8297436511e8613Dmitry Shmidt wpas_dbus_signal_wps_event_pbc_overlap(wpa_s); 2897a53dbb56693ee9f55c0cab1a8297436511e8613Dmitry Shmidt#endif /* CONFIG_WPS */ 2907a53dbb56693ee9f55c0cab1a8297436511e8613Dmitry Shmidt} 2917a53dbb56693ee9f55c0cab1a8297436511e8613Dmitry Shmidt 2928d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 2938d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtvoid wpas_notify_network_added(struct wpa_supplicant *wpa_s, 2948d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt struct wpa_ssid *ssid) 2958d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt{ 2966c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt if (wpa_s->p2p_mgmt) 2976c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt return; 2986c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt 29975ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen /* 30075ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen * Networks objects created during any P2P activities should not be 30175ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen * exposed out. They might/will confuse certain non-P2P aware 30275ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen * applications since these network objects won't behave like 30375ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen * regular ones. 30475ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen */ 305391c59f0632df8db1c325da1d31d479b2eedce45Dmitry Shmidt if (!ssid->p2p_group && wpa_s->global->p2p_group_formation != wpa_s) 30675ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen wpas_dbus_register_network(wpa_s, ssid); 30775ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen} 30875ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen 30975ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen 31075ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinenvoid wpas_notify_persistent_group_added(struct wpa_supplicant *wpa_s, 31175ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen struct wpa_ssid *ssid) 31275ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen{ 313c55524ad84d13014e8019491c2b17e5dcf13545aDmitry Shmidt#ifdef CONFIG_P2P 31475ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen wpas_dbus_register_persistent_group(wpa_s, ssid); 315c55524ad84d13014e8019491c2b17e5dcf13545aDmitry Shmidt#endif /* CONFIG_P2P */ 31675ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen} 31775ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen 31875ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen 31975ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinenvoid wpas_notify_persistent_group_removed(struct wpa_supplicant *wpa_s, 32075ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen struct wpa_ssid *ssid) 32175ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen{ 322c55524ad84d13014e8019491c2b17e5dcf13545aDmitry Shmidt#ifdef CONFIG_P2P 32375ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen wpas_dbus_unregister_persistent_group(wpa_s, ssid->id); 324c55524ad84d13014e8019491c2b17e5dcf13545aDmitry Shmidt#endif /* CONFIG_P2P */ 3258d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt} 3268d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 3278d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 3288d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtvoid wpas_notify_network_removed(struct wpa_supplicant *wpa_s, 3298d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt struct wpa_ssid *ssid) 3308d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt{ 331f21452aea786ac056eb01f1cbba4f553bd502747Dmitry Shmidt if (wpa_s->next_ssid == ssid) 332f21452aea786ac056eb01f1cbba4f553bd502747Dmitry Shmidt wpa_s->next_ssid = NULL; 3331f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidt if (wpa_s->wpa) 3341f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidt wpa_sm_pmksa_cache_flush(wpa_s->wpa, ssid); 335cc00d5dc8483e32158b2ba61ea44b0c38d790ed7Dmitry Shmidt if (!ssid->p2p_group && wpa_s->global->p2p_group_formation != wpa_s && 336cc00d5dc8483e32158b2ba61ea44b0c38d790ed7Dmitry Shmidt !wpa_s->p2p_mgmt) 33775ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen wpas_dbus_unregister_network(wpa_s, ssid->id); 3386c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt if (network_is_persistent_group(ssid)) 3396c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt wpas_notify_persistent_group_removed(wpa_s, ssid); 3406c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt 3411f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidt wpas_p2p_network_removed(wpa_s, ssid); 3428d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt} 3438d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 3448d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 3458d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtvoid wpas_notify_bss_added(struct wpa_supplicant *wpa_s, 3468d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt u8 bssid[], unsigned int id) 3478d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt{ 3486c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt if (wpa_s->p2p_mgmt) 3496c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt return; 3506c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt 3518d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt wpas_dbus_register_bss(wpa_s, bssid, id); 3528d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt wpa_msg_ctrl(wpa_s, MSG_INFO, WPA_EVENT_BSS_ADDED "%u " MACSTR, 3538d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt id, MAC2STR(bssid)); 3548d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt} 3558d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 3568d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 3578d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtvoid wpas_notify_bss_removed(struct wpa_supplicant *wpa_s, 3588d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt u8 bssid[], unsigned int id) 3598d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt{ 3606c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt if (wpa_s->p2p_mgmt) 3616c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt return; 3626c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt 3638d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt wpas_dbus_unregister_bss(wpa_s, bssid, id); 3648d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt wpa_msg_ctrl(wpa_s, MSG_INFO, WPA_EVENT_BSS_REMOVED "%u " MACSTR, 3658d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt id, MAC2STR(bssid)); 3668d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt} 3678d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 3688d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 3698d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtvoid wpas_notify_bss_freq_changed(struct wpa_supplicant *wpa_s, 3708d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt unsigned int id) 3718d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt{ 3726c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt if (wpa_s->p2p_mgmt) 3736c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt return; 3746c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt 3758d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt wpas_dbus_bss_signal_prop_changed(wpa_s, WPAS_DBUS_BSS_PROP_FREQ, id); 3768d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt} 3778d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 3788d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 3798d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtvoid wpas_notify_bss_signal_changed(struct wpa_supplicant *wpa_s, 3808d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt unsigned int id) 3818d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt{ 3826c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt if (wpa_s->p2p_mgmt) 3836c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt return; 3846c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt 3858d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt wpas_dbus_bss_signal_prop_changed(wpa_s, WPAS_DBUS_BSS_PROP_SIGNAL, 3868d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt id); 3878d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt} 3888d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 3898d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 3908d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtvoid wpas_notify_bss_privacy_changed(struct wpa_supplicant *wpa_s, 3918d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt unsigned int id) 3928d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt{ 3936c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt if (wpa_s->p2p_mgmt) 3946c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt return; 3956c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt 3968d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt wpas_dbus_bss_signal_prop_changed(wpa_s, WPAS_DBUS_BSS_PROP_PRIVACY, 3978d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt id); 3988d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt} 3998d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 4008d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 4018d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtvoid wpas_notify_bss_mode_changed(struct wpa_supplicant *wpa_s, 4028d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt unsigned int id) 4038d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt{ 4046c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt if (wpa_s->p2p_mgmt) 4056c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt return; 4066c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt 4078d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt wpas_dbus_bss_signal_prop_changed(wpa_s, WPAS_DBUS_BSS_PROP_MODE, id); 4088d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt} 4098d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 4108d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 4118d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtvoid wpas_notify_bss_wpaie_changed(struct wpa_supplicant *wpa_s, 4128d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt unsigned int id) 4138d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt{ 4146c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt if (wpa_s->p2p_mgmt) 4156c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt return; 4166c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt 4178d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt wpas_dbus_bss_signal_prop_changed(wpa_s, WPAS_DBUS_BSS_PROP_WPA, id); 4188d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt} 4198d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 4208d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 4218d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtvoid wpas_notify_bss_rsnie_changed(struct wpa_supplicant *wpa_s, 4228d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt unsigned int id) 4238d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt{ 4246c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt if (wpa_s->p2p_mgmt) 4256c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt return; 4266c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt 4278d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt wpas_dbus_bss_signal_prop_changed(wpa_s, WPAS_DBUS_BSS_PROP_RSN, id); 4288d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt} 4298d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 4308d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 4318d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtvoid wpas_notify_bss_wps_changed(struct wpa_supplicant *wpa_s, 4328d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt unsigned int id) 4338d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt{ 4346c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt if (wpa_s->p2p_mgmt) 4356c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt return; 4366c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt 437d5e4923d04122f81300fa68fb07d64ede28fd44dDmitry Shmidt#ifdef CONFIG_WPS 438d5e4923d04122f81300fa68fb07d64ede28fd44dDmitry Shmidt wpas_dbus_bss_signal_prop_changed(wpa_s, WPAS_DBUS_BSS_PROP_WPS, id); 439d5e4923d04122f81300fa68fb07d64ede28fd44dDmitry Shmidt#endif /* CONFIG_WPS */ 4408d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt} 4418d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 4428d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 4438d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtvoid wpas_notify_bss_ies_changed(struct wpa_supplicant *wpa_s, 4448d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt unsigned int id) 4458d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt{ 4466c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt if (wpa_s->p2p_mgmt) 4476c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt return; 4486c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt 4498d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt wpas_dbus_bss_signal_prop_changed(wpa_s, WPAS_DBUS_BSS_PROP_IES, id); 4508d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt} 4518d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 4528d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 4538d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtvoid wpas_notify_bss_rates_changed(struct wpa_supplicant *wpa_s, 4548d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt unsigned int id) 4558d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt{ 4566c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt if (wpa_s->p2p_mgmt) 4576c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt return; 4586c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt 4598d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt wpas_dbus_bss_signal_prop_changed(wpa_s, WPAS_DBUS_BSS_PROP_RATES, id); 4608d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt} 4618d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 4628d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 463661b4f78e48c697429dc46154a4125892c001718Dmitry Shmidtvoid wpas_notify_bss_seen(struct wpa_supplicant *wpa_s, unsigned int id) 464661b4f78e48c697429dc46154a4125892c001718Dmitry Shmidt{ 4656c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt if (wpa_s->p2p_mgmt) 4666c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt return; 4676c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt 468661b4f78e48c697429dc46154a4125892c001718Dmitry Shmidt wpas_dbus_bss_signal_prop_changed(wpa_s, WPAS_DBUS_BSS_PROP_AGE, id); 469661b4f78e48c697429dc46154a4125892c001718Dmitry Shmidt} 470661b4f78e48c697429dc46154a4125892c001718Dmitry Shmidt 471661b4f78e48c697429dc46154a4125892c001718Dmitry Shmidt 4728d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtvoid wpas_notify_blob_added(struct wpa_supplicant *wpa_s, const char *name) 4738d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt{ 4746c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt if (wpa_s->p2p_mgmt) 4756c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt return; 4766c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt 4778d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt wpas_dbus_signal_blob_added(wpa_s, name); 4788d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt} 4798d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 4808d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 4818d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtvoid wpas_notify_blob_removed(struct wpa_supplicant *wpa_s, const char *name) 4828d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt{ 4836c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt if (wpa_s->p2p_mgmt) 4846c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt return; 4856c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt 4868d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt wpas_dbus_signal_blob_removed(wpa_s, name); 4878d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt} 4888d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 4898d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 4908d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtvoid wpas_notify_debug_level_changed(struct wpa_global *global) 4918d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt{ 4928d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt wpas_dbus_signal_debug_level_changed(global); 4938d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt} 4948d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 4958d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 4968d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtvoid wpas_notify_debug_timestamp_changed(struct wpa_global *global) 4978d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt{ 4988d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt wpas_dbus_signal_debug_timestamp_changed(global); 4998d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt} 5008d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 5018d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 5028d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtvoid wpas_notify_debug_show_keys_changed(struct wpa_global *global) 5038d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt{ 5048d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt wpas_dbus_signal_debug_show_keys_changed(global); 5058d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt} 5068d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 5078d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 5088d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtvoid wpas_notify_suspend(struct wpa_global *global) 5098d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt{ 5108d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt struct wpa_supplicant *wpa_s; 5118d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 5128d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt os_get_time(&global->suspend_time); 5138d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt wpa_printf(MSG_DEBUG, "System suspend notification"); 5148d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt for (wpa_s = global->ifaces; wpa_s; wpa_s = wpa_s->next) 5158d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt wpa_drv_suspend(wpa_s); 5168d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt} 5178d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 5188d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 5198d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtvoid wpas_notify_resume(struct wpa_global *global) 5208d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt{ 5218d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt struct os_time now; 5228d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt int slept; 5238d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt struct wpa_supplicant *wpa_s; 5248d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 5258d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt if (global->suspend_time.sec == 0) 5268d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt slept = -1; 5278d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt else { 5288d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt os_get_time(&now); 5298d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt slept = now.sec - global->suspend_time.sec; 5308d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt } 5318d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt wpa_printf(MSG_DEBUG, "System resume notification (slept %d seconds)", 5328d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt slept); 5338d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 5348d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt for (wpa_s = global->ifaces; wpa_s; wpa_s = wpa_s->next) { 5358d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt wpa_drv_resume(wpa_s); 5368d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt if (wpa_s->wpa_state == WPA_DISCONNECTED) 5378d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt wpa_supplicant_req_scan(wpa_s, 0, 100000); 5388d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt } 5398d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt} 5408d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 5418d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 5428d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt#ifdef CONFIG_P2P 5438d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 5448bd70b7d6ba220544ee2f0e201e5df23e277fa1dDmitry Shmidtvoid wpas_notify_p2p_find_stopped(struct wpa_supplicant *wpa_s) 5458bd70b7d6ba220544ee2f0e201e5df23e277fa1dDmitry Shmidt{ 5468bd70b7d6ba220544ee2f0e201e5df23e277fa1dDmitry Shmidt /* Notify P2P find has stopped */ 5478bd70b7d6ba220544ee2f0e201e5df23e277fa1dDmitry Shmidt wpas_dbus_signal_p2p_find_stopped(wpa_s); 5488bd70b7d6ba220544ee2f0e201e5df23e277fa1dDmitry Shmidt} 5498bd70b7d6ba220544ee2f0e201e5df23e277fa1dDmitry Shmidt 5508bd70b7d6ba220544ee2f0e201e5df23e277fa1dDmitry Shmidt 5518d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtvoid wpas_notify_p2p_device_found(struct wpa_supplicant *wpa_s, 5528d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt const u8 *dev_addr, int new_device) 5538d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt{ 55475ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen if (new_device) { 55575ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen /* Create the new peer object */ 55675ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen wpas_dbus_register_peer(wpa_s, dev_addr); 55775ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen } 55875ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen 55975ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen /* Notify a new peer has been detected*/ 56075ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen wpas_dbus_signal_peer_device_found(wpa_s, dev_addr); 5618d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt} 5628d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 5638d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 5648d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtvoid wpas_notify_p2p_device_lost(struct wpa_supplicant *wpa_s, 5658d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt const u8 *dev_addr) 5668d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt{ 56775ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen wpas_dbus_unregister_peer(wpa_s, dev_addr); 56875ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen 56975ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen /* Create signal on interface object*/ 57075ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen wpas_dbus_signal_peer_device_lost(wpa_s, dev_addr); 5718d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt} 5728d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 5738d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 5748d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtvoid wpas_notify_p2p_group_removed(struct wpa_supplicant *wpa_s, 5758d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt const struct wpa_ssid *ssid, 5768d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt const char *role) 5778d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt{ 57875ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen wpas_dbus_signal_p2p_group_removed(wpa_s, role); 57903658834c33748b9ad86f3d4cdf0c7be9c6887d1Dmitry Shmidt 58003658834c33748b9ad86f3d4cdf0c7be9c6887d1Dmitry Shmidt wpas_dbus_unregister_p2p_group(wpa_s, ssid); 5818d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt} 5828d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 5838d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 5848d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtvoid wpas_notify_p2p_go_neg_req(struct wpa_supplicant *wpa_s, 5857a53dbb56693ee9f55c0cab1a8297436511e8613Dmitry Shmidt const u8 *src, u16 dev_passwd_id, u8 go_intent) 5868d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt{ 5877a53dbb56693ee9f55c0cab1a8297436511e8613Dmitry Shmidt wpas_dbus_signal_p2p_go_neg_req(wpa_s, src, dev_passwd_id, go_intent); 5888d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt} 5898d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 5908d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 5911f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidtvoid wpas_notify_p2p_go_neg_completed(struct wpa_supplicant *wpa_s, 5921f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidt struct p2p_go_neg_results *res) 5938d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt{ 5941f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidt wpas_dbus_signal_p2p_go_neg_resp(wpa_s, res); 5958d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt} 5968d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 5978d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 5988d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtvoid wpas_notify_p2p_invitation_result(struct wpa_supplicant *wpa_s, 5998d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt int status, const u8 *bssid) 6008d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt{ 60175ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen wpas_dbus_signal_p2p_invitation_result(wpa_s, status, bssid); 6028d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt} 6038d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 6048d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 6058d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtvoid wpas_notify_p2p_sd_request(struct wpa_supplicant *wpa_s, 6068d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt int freq, const u8 *sa, u8 dialog_token, 6078d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt u16 update_indic, const u8 *tlvs, 6088d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt size_t tlvs_len) 6098d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt{ 61075ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen wpas_dbus_signal_p2p_sd_request(wpa_s, freq, sa, dialog_token, 61175ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen update_indic, tlvs, tlvs_len); 6128d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt} 6138d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 6148d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 6158d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtvoid wpas_notify_p2p_sd_response(struct wpa_supplicant *wpa_s, 6168d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt const u8 *sa, u16 update_indic, 6178d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt const u8 *tlvs, size_t tlvs_len) 6188d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt{ 61975ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen wpas_dbus_signal_p2p_sd_response(wpa_s, sa, update_indic, 62075ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen tlvs, tlvs_len); 62175ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen} 62275ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen 62375ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen 62475ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen/** 62575ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen * wpas_notify_p2p_provision_discovery - Notification of provision discovery 62675ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen * @dev_addr: Who sent the request or responded to our request. 62775ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen * @request: Will be 1 if request, 0 for response. 62875ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen * @status: Valid only in case of response (0 in case of success) 62975ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen * @config_methods: WPS config methods 63075ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen * @generated_pin: PIN to be displayed in case of WPS_CONFIG_DISPLAY method 63175ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen * 63275ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen * This can be used to notify: 63375ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen * - Requests or responses 63475ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen * - Various config methods 63575ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen * - Failure condition in case of response 63675ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen */ 63775ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinenvoid wpas_notify_p2p_provision_discovery(struct wpa_supplicant *wpa_s, 63875ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen const u8 *dev_addr, int request, 63975ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen enum p2p_prov_disc_status status, 64075ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen u16 config_methods, 64175ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen unsigned int generated_pin) 64275ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen{ 64375ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen wpas_dbus_signal_p2p_provision_discovery(wpa_s, dev_addr, request, 64475ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen status, config_methods, 64575ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen generated_pin); 64675ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen} 64775ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen 64875ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen 64975ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinenvoid wpas_notify_p2p_group_started(struct wpa_supplicant *wpa_s, 65075ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen struct wpa_ssid *ssid, int network_id, 65175ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen int client) 65275ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen{ 65375ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen /* Notify a group has been started */ 65475ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen wpas_dbus_register_p2p_group(wpa_s, ssid); 65575ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen 65675ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen wpas_dbus_signal_p2p_group_started(wpa_s, ssid, client, network_id); 65775ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen} 65875ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen 65975ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen 660d80a401aed31d06f261efd19223cf55d1a2a8228Dmitry Shmidtvoid wpas_notify_p2p_group_formation_failure(struct wpa_supplicant *wpa_s, 661d80a401aed31d06f261efd19223cf55d1a2a8228Dmitry Shmidt const char *reason) 662d80a401aed31d06f261efd19223cf55d1a2a8228Dmitry Shmidt{ 663d80a401aed31d06f261efd19223cf55d1a2a8228Dmitry Shmidt /* Notify a group formation failed */ 664d80a401aed31d06f261efd19223cf55d1a2a8228Dmitry Shmidt wpas_dbus_signal_p2p_group_formation_failure(wpa_s, reason); 665d80a401aed31d06f261efd19223cf55d1a2a8228Dmitry Shmidt} 666d80a401aed31d06f261efd19223cf55d1a2a8228Dmitry Shmidt 667d80a401aed31d06f261efd19223cf55d1a2a8228Dmitry Shmidt 66875ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinenvoid wpas_notify_p2p_wps_failed(struct wpa_supplicant *wpa_s, 66975ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen struct wps_event_fail *fail) 67075ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen{ 67175ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen wpas_dbus_signal_p2p_wps_failed(wpa_s, fail); 6728d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt} 6738d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 674d80a401aed31d06f261efd19223cf55d1a2a8228Dmitry Shmidt 675d80a401aed31d06f261efd19223cf55d1a2a8228Dmitry Shmidtvoid wpas_notify_p2p_invitation_received(struct wpa_supplicant *wpa_s, 676d80a401aed31d06f261efd19223cf55d1a2a8228Dmitry Shmidt const u8 *sa, const u8 *go_dev_addr, 677d80a401aed31d06f261efd19223cf55d1a2a8228Dmitry Shmidt const u8 *bssid, int id, int op_freq) 678d80a401aed31d06f261efd19223cf55d1a2a8228Dmitry Shmidt{ 679d80a401aed31d06f261efd19223cf55d1a2a8228Dmitry Shmidt /* Notify a P2P Invitation Request */ 680d80a401aed31d06f261efd19223cf55d1a2a8228Dmitry Shmidt wpas_dbus_signal_p2p_invitation_received(wpa_s, sa, go_dev_addr, bssid, 681d80a401aed31d06f261efd19223cf55d1a2a8228Dmitry Shmidt id, op_freq); 682d80a401aed31d06f261efd19223cf55d1a2a8228Dmitry Shmidt} 683d80a401aed31d06f261efd19223cf55d1a2a8228Dmitry Shmidt 6848d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt#endif /* CONFIG_P2P */ 6858d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 6868d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 6878d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtstatic void wpas_notify_ap_sta_authorized(struct wpa_supplicant *wpa_s, 6881f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidt const u8 *sta, 6891f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidt const u8 *p2p_dev_addr) 6908d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt{ 69175ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen#ifdef CONFIG_P2P 6921f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidt wpas_p2p_notify_ap_sta_authorized(wpa_s, p2p_dev_addr); 6931f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidt 69475ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen /* 69575ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen * Create 'peer-joined' signal on group object -- will also 69675ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen * check P2P itself. 69775ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen */ 6986c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt if (p2p_dev_addr) 6996c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt wpas_dbus_signal_p2p_peer_joined(wpa_s, p2p_dev_addr); 70075ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen#endif /* CONFIG_P2P */ 70134af306c42b7ccf956508e7cd23f0ba90606e360Dmitry Shmidt 70234af306c42b7ccf956508e7cd23f0ba90606e360Dmitry Shmidt /* Notify listeners a new station has been authorized */ 70334af306c42b7ccf956508e7cd23f0ba90606e360Dmitry Shmidt wpas_dbus_signal_sta_authorized(wpa_s, sta); 7048d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt} 7058d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 7068d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 7078d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtstatic void wpas_notify_ap_sta_deauthorized(struct wpa_supplicant *wpa_s, 708d30ac604c9f6da71a0dd7f46d25be05a2a62cfbbDmitry Shmidt const u8 *sta, 709d30ac604c9f6da71a0dd7f46d25be05a2a62cfbbDmitry Shmidt const u8 *p2p_dev_addr) 7108d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt{ 71175ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen#ifdef CONFIG_P2P 71275ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen /* 71375ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen * Create 'peer-disconnected' signal on group object if this 71475ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen * is a P2P group. 71575ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen */ 7166c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt if (p2p_dev_addr) 7176c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt wpas_dbus_signal_p2p_peer_disconnected(wpa_s, p2p_dev_addr); 71875ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen#endif /* CONFIG_P2P */ 71934af306c42b7ccf956508e7cd23f0ba90606e360Dmitry Shmidt 72034af306c42b7ccf956508e7cd23f0ba90606e360Dmitry Shmidt /* Notify listeners a station has been deauthorized */ 72134af306c42b7ccf956508e7cd23f0ba90606e360Dmitry Shmidt wpas_dbus_signal_sta_deauthorized(wpa_s, sta); 7228d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt} 7238d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 7248d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 7258d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtvoid wpas_notify_sta_authorized(struct wpa_supplicant *wpa_s, 7261f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidt const u8 *mac_addr, int authorized, 7271f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidt const u8 *p2p_dev_addr) 7288d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt{ 7298d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt if (authorized) 7301f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidt wpas_notify_ap_sta_authorized(wpa_s, mac_addr, p2p_dev_addr); 7318d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt else 732d30ac604c9f6da71a0dd7f46d25be05a2a62cfbbDmitry Shmidt wpas_notify_ap_sta_deauthorized(wpa_s, mac_addr, p2p_dev_addr); 7338d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt} 734c55524ad84d13014e8019491c2b17e5dcf13545aDmitry Shmidt 735c55524ad84d13014e8019491c2b17e5dcf13545aDmitry Shmidt 736c55524ad84d13014e8019491c2b17e5dcf13545aDmitry Shmidtvoid wpas_notify_certification(struct wpa_supplicant *wpa_s, int depth, 7372f74e36e84064ffa32f82f3decf36b653c7e4fadDmitry Shmidt const char *subject, const char *altsubject[], 7382f74e36e84064ffa32f82f3decf36b653c7e4fadDmitry Shmidt int num_altsubject, const char *cert_hash, 739c55524ad84d13014e8019491c2b17e5dcf13545aDmitry Shmidt const struct wpabuf *cert) 740c55524ad84d13014e8019491c2b17e5dcf13545aDmitry Shmidt{ 741c55524ad84d13014e8019491c2b17e5dcf13545aDmitry Shmidt wpa_msg(wpa_s, MSG_INFO, WPA_EVENT_EAP_PEER_CERT 742c55524ad84d13014e8019491c2b17e5dcf13545aDmitry Shmidt "depth=%d subject='%s'%s%s", 7432f74e36e84064ffa32f82f3decf36b653c7e4fadDmitry Shmidt depth, subject, cert_hash ? " hash=" : "", 744c55524ad84d13014e8019491c2b17e5dcf13545aDmitry Shmidt cert_hash ? cert_hash : ""); 745c55524ad84d13014e8019491c2b17e5dcf13545aDmitry Shmidt 746c55524ad84d13014e8019491c2b17e5dcf13545aDmitry Shmidt if (cert) { 747c55524ad84d13014e8019491c2b17e5dcf13545aDmitry Shmidt char *cert_hex; 748c55524ad84d13014e8019491c2b17e5dcf13545aDmitry Shmidt size_t len = wpabuf_len(cert) * 2 + 1; 749c55524ad84d13014e8019491c2b17e5dcf13545aDmitry Shmidt cert_hex = os_malloc(len); 750c55524ad84d13014e8019491c2b17e5dcf13545aDmitry Shmidt if (cert_hex) { 751c55524ad84d13014e8019491c2b17e5dcf13545aDmitry Shmidt wpa_snprintf_hex(cert_hex, len, wpabuf_head(cert), 752c55524ad84d13014e8019491c2b17e5dcf13545aDmitry Shmidt wpabuf_len(cert)); 753c55524ad84d13014e8019491c2b17e5dcf13545aDmitry Shmidt wpa_msg_ctrl(wpa_s, MSG_INFO, 754c55524ad84d13014e8019491c2b17e5dcf13545aDmitry Shmidt WPA_EVENT_EAP_PEER_CERT 755c55524ad84d13014e8019491c2b17e5dcf13545aDmitry Shmidt "depth=%d subject='%s' cert=%s", 756c55524ad84d13014e8019491c2b17e5dcf13545aDmitry Shmidt depth, subject, cert_hex); 757c55524ad84d13014e8019491c2b17e5dcf13545aDmitry Shmidt os_free(cert_hex); 758c55524ad84d13014e8019491c2b17e5dcf13545aDmitry Shmidt } 759c55524ad84d13014e8019491c2b17e5dcf13545aDmitry Shmidt } 760c55524ad84d13014e8019491c2b17e5dcf13545aDmitry Shmidt 7612f74e36e84064ffa32f82f3decf36b653c7e4fadDmitry Shmidt if (altsubject) { 7622f74e36e84064ffa32f82f3decf36b653c7e4fadDmitry Shmidt int i; 7632f74e36e84064ffa32f82f3decf36b653c7e4fadDmitry Shmidt 7642f74e36e84064ffa32f82f3decf36b653c7e4fadDmitry Shmidt for (i = 0; i < num_altsubject; i++) 7652f74e36e84064ffa32f82f3decf36b653c7e4fadDmitry Shmidt wpa_msg(wpa_s, MSG_INFO, WPA_EVENT_EAP_PEER_ALT 7662f74e36e84064ffa32f82f3decf36b653c7e4fadDmitry Shmidt "depth=%d %s", depth, altsubject[i]); 7672f74e36e84064ffa32f82f3decf36b653c7e4fadDmitry Shmidt } 7682f74e36e84064ffa32f82f3decf36b653c7e4fadDmitry Shmidt 769c55524ad84d13014e8019491c2b17e5dcf13545aDmitry Shmidt /* notify the old DBus API */ 770c55524ad84d13014e8019491c2b17e5dcf13545aDmitry Shmidt wpa_supplicant_dbus_notify_certification(wpa_s, depth, subject, 771c55524ad84d13014e8019491c2b17e5dcf13545aDmitry Shmidt cert_hash, cert); 772c55524ad84d13014e8019491c2b17e5dcf13545aDmitry Shmidt /* notify the new DBus API */ 7732f74e36e84064ffa32f82f3decf36b653c7e4fadDmitry Shmidt wpas_dbus_signal_certification(wpa_s, depth, subject, altsubject, 7742f74e36e84064ffa32f82f3decf36b653c7e4fadDmitry Shmidt num_altsubject, cert_hash, cert); 775c55524ad84d13014e8019491c2b17e5dcf13545aDmitry Shmidt} 77604949598a23f501be6eec21697465fd46a28840aDmitry Shmidt 77704949598a23f501be6eec21697465fd46a28840aDmitry Shmidt 77804949598a23f501be6eec21697465fd46a28840aDmitry Shmidtvoid wpas_notify_preq(struct wpa_supplicant *wpa_s, 77904949598a23f501be6eec21697465fd46a28840aDmitry Shmidt const u8 *addr, const u8 *dst, const u8 *bssid, 78004949598a23f501be6eec21697465fd46a28840aDmitry Shmidt const u8 *ie, size_t ie_len, u32 ssi_signal) 78104949598a23f501be6eec21697465fd46a28840aDmitry Shmidt{ 78204949598a23f501be6eec21697465fd46a28840aDmitry Shmidt#ifdef CONFIG_AP 78304949598a23f501be6eec21697465fd46a28840aDmitry Shmidt wpas_dbus_signal_preq(wpa_s, addr, dst, bssid, ie, ie_len, ssi_signal); 78404949598a23f501be6eec21697465fd46a28840aDmitry Shmidt#endif /* CONFIG_AP */ 78504949598a23f501be6eec21697465fd46a28840aDmitry Shmidt} 78604949598a23f501be6eec21697465fd46a28840aDmitry Shmidt 78704949598a23f501be6eec21697465fd46a28840aDmitry Shmidt 78804949598a23f501be6eec21697465fd46a28840aDmitry Shmidtvoid wpas_notify_eap_status(struct wpa_supplicant *wpa_s, const char *status, 78904949598a23f501be6eec21697465fd46a28840aDmitry Shmidt const char *parameter) 79004949598a23f501be6eec21697465fd46a28840aDmitry Shmidt{ 79104949598a23f501be6eec21697465fd46a28840aDmitry Shmidt wpas_dbus_signal_eap_status(wpa_s, status, parameter); 7928da800a193fb6f8832218715f82a7b4e2d2ad338Dmitry Shmidt wpa_msg_ctrl(wpa_s, MSG_INFO, WPA_EVENT_EAP_STATUS 7938da800a193fb6f8832218715f82a7b4e2d2ad338Dmitry Shmidt "status='%s' parameter='%s'", 7948da800a193fb6f8832218715f82a7b4e2d2ad338Dmitry Shmidt status, parameter); 79504949598a23f501be6eec21697465fd46a28840aDmitry Shmidt} 796661b4f78e48c697429dc46154a4125892c001718Dmitry Shmidt 797661b4f78e48c697429dc46154a4125892c001718Dmitry Shmidt 798661b4f78e48c697429dc46154a4125892c001718Dmitry Shmidtvoid wpas_notify_network_bssid_set_changed(struct wpa_supplicant *wpa_s, 799661b4f78e48c697429dc46154a4125892c001718Dmitry Shmidt struct wpa_ssid *ssid) 800661b4f78e48c697429dc46154a4125892c001718Dmitry Shmidt{ 801661b4f78e48c697429dc46154a4125892c001718Dmitry Shmidt if (wpa_s->current_ssid != ssid) 802661b4f78e48c697429dc46154a4125892c001718Dmitry Shmidt return; 803661b4f78e48c697429dc46154a4125892c001718Dmitry Shmidt 804661b4f78e48c697429dc46154a4125892c001718Dmitry Shmidt wpa_dbg(wpa_s, MSG_DEBUG, 805661b4f78e48c697429dc46154a4125892c001718Dmitry Shmidt "Network bssid config changed for the current network - within-ESS roaming %s", 806661b4f78e48c697429dc46154a4125892c001718Dmitry Shmidt ssid->bssid_set ? "disabled" : "enabled"); 807661b4f78e48c697429dc46154a4125892c001718Dmitry Shmidt 808661b4f78e48c697429dc46154a4125892c001718Dmitry Shmidt wpa_drv_roaming(wpa_s, !ssid->bssid_set, 809661b4f78e48c697429dc46154a4125892c001718Dmitry Shmidt ssid->bssid_set ? ssid->bssid : NULL); 810661b4f78e48c697429dc46154a4125892c001718Dmitry Shmidt} 8117f65602d49069f96a7bb44da8bd79ffe8d4c6a98Dmitry Shmidt 8127f65602d49069f96a7bb44da8bd79ffe8d4c6a98Dmitry Shmidt 8137f65602d49069f96a7bb44da8bd79ffe8d4c6a98Dmitry Shmidtvoid wpas_notify_network_type_changed(struct wpa_supplicant *wpa_s, 8147f65602d49069f96a7bb44da8bd79ffe8d4c6a98Dmitry Shmidt struct wpa_ssid *ssid) 8157f65602d49069f96a7bb44da8bd79ffe8d4c6a98Dmitry Shmidt{ 8167f65602d49069f96a7bb44da8bd79ffe8d4c6a98Dmitry Shmidt#ifdef CONFIG_P2P 8177f65602d49069f96a7bb44da8bd79ffe8d4c6a98Dmitry Shmidt if (ssid->disabled == 2) { 8187f65602d49069f96a7bb44da8bd79ffe8d4c6a98Dmitry Shmidt /* Changed from normal network profile to persistent group */ 8197f65602d49069f96a7bb44da8bd79ffe8d4c6a98Dmitry Shmidt ssid->disabled = 0; 8207f65602d49069f96a7bb44da8bd79ffe8d4c6a98Dmitry Shmidt wpas_dbus_unregister_network(wpa_s, ssid->id); 8217f65602d49069f96a7bb44da8bd79ffe8d4c6a98Dmitry Shmidt ssid->disabled = 2; 8227a53dbb56693ee9f55c0cab1a8297436511e8613Dmitry Shmidt ssid->p2p_persistent_group = 1; 8237f65602d49069f96a7bb44da8bd79ffe8d4c6a98Dmitry Shmidt wpas_dbus_register_persistent_group(wpa_s, ssid); 8247f65602d49069f96a7bb44da8bd79ffe8d4c6a98Dmitry Shmidt } else { 8257f65602d49069f96a7bb44da8bd79ffe8d4c6a98Dmitry Shmidt /* Changed from persistent group to normal network profile */ 8267f65602d49069f96a7bb44da8bd79ffe8d4c6a98Dmitry Shmidt wpas_dbus_unregister_persistent_group(wpa_s, ssid->id); 8277a53dbb56693ee9f55c0cab1a8297436511e8613Dmitry Shmidt ssid->p2p_persistent_group = 0; 8287f65602d49069f96a7bb44da8bd79ffe8d4c6a98Dmitry Shmidt wpas_dbus_register_network(wpa_s, ssid); 8297f65602d49069f96a7bb44da8bd79ffe8d4c6a98Dmitry Shmidt } 8307f65602d49069f96a7bb44da8bd79ffe8d4c6a98Dmitry Shmidt#endif /* CONFIG_P2P */ 8317f65602d49069f96a7bb44da8bd79ffe8d4c6a98Dmitry Shmidt} 832