notify.c revision 7f65602d49069f96a7bb44da8bd79ffe8d4c6a98
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" 208d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt#include "driver_i.h" 218d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt#include "scan.h" 228d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt#include "p2p_supplicant.h" 238d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt#include "sme.h" 248d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt#include "notify.h" 258d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 268d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtint wpas_notify_supplicant_initialized(struct wpa_global *global) 278d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt{ 288d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt#ifdef CONFIG_DBUS 298d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt if (global->params.dbus_ctrl_interface) { 308d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt global->dbus = wpas_dbus_init(global); 318d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt if (global->dbus == NULL) 328d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt return -1; 338d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt } 348d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt#endif /* CONFIG_DBUS */ 358d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 368d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt return 0; 378d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt} 388d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 398d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 408d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtvoid wpas_notify_supplicant_deinitialized(struct wpa_global *global) 418d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt{ 428d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt#ifdef CONFIG_DBUS 438d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt if (global->dbus) 448d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt wpas_dbus_deinit(global->dbus); 458d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt#endif /* CONFIG_DBUS */ 468d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt} 478d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 488d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 498d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtint wpas_notify_iface_added(struct wpa_supplicant *wpa_s) 508d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt{ 516c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt if (wpa_s->p2p_mgmt) 526c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt return 0; 536c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt 548d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt if (wpas_dbus_register_iface(wpa_s)) 558d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt return -1; 568d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 578d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt if (wpas_dbus_register_interface(wpa_s)) 588d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt return -1; 598d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 608d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt return 0; 618d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt} 628d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 638d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 648d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtvoid wpas_notify_iface_removed(struct wpa_supplicant *wpa_s) 658d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt{ 666c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt if (wpa_s->p2p_mgmt) 676c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt return; 686c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt 698d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt /* unregister interface in old DBus ctrl iface */ 708d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt wpas_dbus_unregister_iface(wpa_s); 718d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 728d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt /* unregister interface in new DBus ctrl iface */ 738d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt wpas_dbus_unregister_interface(wpa_s); 748d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt} 758d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 768d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 778d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtvoid wpas_notify_state_changed(struct wpa_supplicant *wpa_s, 788d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt enum wpa_states new_state, 798d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt enum wpa_states old_state) 808d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt{ 816c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt if (wpa_s->p2p_mgmt) 826c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt return; 836c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt 848d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt /* notify the old DBus API */ 858d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt wpa_supplicant_dbus_notify_state_change(wpa_s, new_state, 868d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt old_state); 878d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 888d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt /* notify the new DBus API */ 898d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt wpas_dbus_signal_prop_changed(wpa_s, WPAS_DBUS_PROP_STATE); 908d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 918d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt if (new_state == WPA_COMPLETED) 928d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt wpas_p2p_notif_connected(wpa_s); 9304949598a23f501be6eec21697465fd46a28840aDmitry Shmidt else if (old_state >= WPA_ASSOCIATED && new_state < WPA_ASSOCIATED) 948d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt wpas_p2p_notif_disconnected(wpa_s); 958d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 968d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt sme_state_changed(wpa_s); 978d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 988d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt#ifdef ANDROID 998d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt wpa_msg_ctrl(wpa_s, MSG_INFO, WPA_EVENT_STATE_CHANGE 100f20a4432808cee548326c4b35c83071ca576a239Irfan Sheriff "id=%d state=%d BSSID=" MACSTR " SSID=%s", 1018d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt wpa_s->current_ssid ? wpa_s->current_ssid->id : -1, 102f20a4432808cee548326c4b35c83071ca576a239Irfan Sheriff new_state, 103e78e767aea5576ec0ba7edadfe25fd9dc7dce48fIrfan Sheriff MAC2STR(wpa_s->bssid), 1045b5fb02b225c5c05a4477bef58bdaceede5d68dcandy wpa_s->current_ssid && wpa_s->current_ssid->ssid ? 1055b5fb02b225c5c05a4477bef58bdaceede5d68dcandy wpa_ssid_txt(wpa_s->current_ssid->ssid, 106e0e48dc666fb14a7bb60264ca87463ba7bc1fe0bDmitry Shmidt wpa_s->current_ssid->ssid_len) : ""); 1078d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt#endif /* ANDROID */ 1088d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt} 1098d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 1108d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 11104949598a23f501be6eec21697465fd46a28840aDmitry Shmidtvoid wpas_notify_disconnect_reason(struct wpa_supplicant *wpa_s) 11204949598a23f501be6eec21697465fd46a28840aDmitry Shmidt{ 1136c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt if (wpa_s->p2p_mgmt) 1146c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt return; 1156c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt 11604949598a23f501be6eec21697465fd46a28840aDmitry Shmidt wpas_dbus_signal_prop_changed(wpa_s, WPAS_DBUS_PROP_DISCONNECT_REASON); 11704949598a23f501be6eec21697465fd46a28840aDmitry Shmidt} 11804949598a23f501be6eec21697465fd46a28840aDmitry Shmidt 11904949598a23f501be6eec21697465fd46a28840aDmitry Shmidt 1208d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtvoid wpas_notify_network_changed(struct wpa_supplicant *wpa_s) 1218d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt{ 1226c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt if (wpa_s->p2p_mgmt) 1236c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt return; 1246c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt 1258d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt wpas_dbus_signal_prop_changed(wpa_s, WPAS_DBUS_PROP_CURRENT_NETWORK); 1268d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt} 1278d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 1288d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 1298d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtvoid wpas_notify_ap_scan_changed(struct wpa_supplicant *wpa_s) 1308d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt{ 1316c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt if (wpa_s->p2p_mgmt) 1326c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt return; 1336c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt 1348d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt wpas_dbus_signal_prop_changed(wpa_s, WPAS_DBUS_PROP_AP_SCAN); 1358d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt} 1368d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 1378d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 1388d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtvoid wpas_notify_bssid_changed(struct wpa_supplicant *wpa_s) 1398d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt{ 1406c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt if (wpa_s->p2p_mgmt) 1416c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt return; 1426c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt 1438d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt wpas_dbus_signal_prop_changed(wpa_s, WPAS_DBUS_PROP_CURRENT_BSS); 1448d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt} 1458d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 1468d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 1478d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtvoid wpas_notify_auth_changed(struct wpa_supplicant *wpa_s) 1488d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt{ 1496c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt if (wpa_s->p2p_mgmt) 1506c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt return; 1516c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt 1528d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt wpas_dbus_signal_prop_changed(wpa_s, WPAS_DBUS_PROP_CURRENT_AUTH_MODE); 1538d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt} 1548d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 1558d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 1568d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtvoid wpas_notify_network_enabled_changed(struct wpa_supplicant *wpa_s, 1578d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt struct wpa_ssid *ssid) 1588d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt{ 1596c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt if (wpa_s->p2p_mgmt) 1606c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt return; 1616c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt 1628d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt wpas_dbus_signal_network_enabled_changed(wpa_s, ssid); 1638d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt} 1648d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 1658d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 1668d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtvoid wpas_notify_network_selected(struct wpa_supplicant *wpa_s, 1678d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt struct wpa_ssid *ssid) 1688d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt{ 1696c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt if (wpa_s->p2p_mgmt) 1706c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt return; 1716c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt 1728d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt wpas_dbus_signal_network_selected(wpa_s, ssid->id); 1738d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt} 1748d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 1758d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 1761f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidtvoid wpas_notify_network_request(struct wpa_supplicant *wpa_s, 1771f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidt struct wpa_ssid *ssid, 1781f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidt enum wpa_ctrl_req_type rtype, 1791f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidt const char *default_txt) 1801f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidt{ 1816c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt if (wpa_s->p2p_mgmt) 1826c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt return; 1836c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt 1841f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidt wpas_dbus_signal_network_request(wpa_s, ssid, rtype, default_txt); 1851f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidt} 1861f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidt 1871f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidt 1888d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtvoid wpas_notify_scanning(struct wpa_supplicant *wpa_s) 1898d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt{ 1906c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt if (wpa_s->p2p_mgmt) 1916c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt return; 1926c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt 1938d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt /* notify the old DBus API */ 1948d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt wpa_supplicant_dbus_notify_scanning(wpa_s); 1958d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 1968d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt /* notify the new DBus API */ 1978d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt wpas_dbus_signal_prop_changed(wpa_s, WPAS_DBUS_PROP_SCANNING); 1988d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt} 1998d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 2008d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 2018d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtvoid wpas_notify_scan_done(struct wpa_supplicant *wpa_s, int success) 2028d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt{ 2036c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt if (wpa_s->p2p_mgmt) 2046c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt return; 2056c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt 2068d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt wpas_dbus_signal_scan_done(wpa_s, success); 2078d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt} 2088d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 2098d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 2108d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtvoid wpas_notify_scan_results(struct wpa_supplicant *wpa_s) 2118d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt{ 2126c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt if (wpa_s->p2p_mgmt) 2136c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt return; 2146c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt 2158d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt /* notify the old DBus API */ 2168d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt wpa_supplicant_dbus_notify_scan_results(wpa_s); 2178d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 2188d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt wpas_wps_notify_scan_results(wpa_s); 2198d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt} 2208d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 2218d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 2228d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtvoid wpas_notify_wps_credential(struct wpa_supplicant *wpa_s, 2238d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt const struct wps_credential *cred) 2248d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt{ 2256c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt if (wpa_s->p2p_mgmt) 2266c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt return; 2276c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt 2288d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt#ifdef CONFIG_WPS 2298d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt /* notify the old DBus API */ 2308d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt wpa_supplicant_dbus_notify_wps_cred(wpa_s, cred); 2318d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt /* notify the new DBus API */ 2328d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt wpas_dbus_signal_wps_cred(wpa_s, cred); 2338d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt#endif /* CONFIG_WPS */ 2348d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt} 2358d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 2368d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 2378d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtvoid wpas_notify_wps_event_m2d(struct wpa_supplicant *wpa_s, 2388d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt struct wps_event_m2d *m2d) 2398d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt{ 2406c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt if (wpa_s->p2p_mgmt) 2416c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt return; 2426c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt 2438d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt#ifdef CONFIG_WPS 2448d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt wpas_dbus_signal_wps_event_m2d(wpa_s, m2d); 2458d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt#endif /* CONFIG_WPS */ 2468d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt} 2478d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 2488d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 2498d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtvoid wpas_notify_wps_event_fail(struct wpa_supplicant *wpa_s, 2508d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt struct wps_event_fail *fail) 2518d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt{ 2526c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt if (wpa_s->p2p_mgmt) 2536c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt return; 2546c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt 2558d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt#ifdef CONFIG_WPS 2568d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt wpas_dbus_signal_wps_event_fail(wpa_s, fail); 2578d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt#endif /* CONFIG_WPS */ 2588d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt} 2598d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 2608d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 2618d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtvoid wpas_notify_wps_event_success(struct wpa_supplicant *wpa_s) 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_success(wpa_s); 2688d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt#endif /* CONFIG_WPS */ 2698d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt} 2708d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 2718d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 2728d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtvoid wpas_notify_network_added(struct wpa_supplicant *wpa_s, 2738d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt struct wpa_ssid *ssid) 2748d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt{ 2756c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt if (wpa_s->p2p_mgmt) 2766c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt return; 2776c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt 27875ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen /* 27975ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen * Networks objects created during any P2P activities should not be 28075ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen * exposed out. They might/will confuse certain non-P2P aware 28175ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen * applications since these network objects won't behave like 28275ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen * regular ones. 28375ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen */ 284391c59f0632df8db1c325da1d31d479b2eedce45Dmitry Shmidt if (!ssid->p2p_group && wpa_s->global->p2p_group_formation != wpa_s) 28575ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen wpas_dbus_register_network(wpa_s, ssid); 28675ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen} 28775ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen 28875ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen 28975ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinenvoid wpas_notify_persistent_group_added(struct wpa_supplicant *wpa_s, 29075ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen struct wpa_ssid *ssid) 29175ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen{ 292c55524ad84d13014e8019491c2b17e5dcf13545aDmitry Shmidt#ifdef CONFIG_P2P 29375ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen wpas_dbus_register_persistent_group(wpa_s, ssid); 294c55524ad84d13014e8019491c2b17e5dcf13545aDmitry Shmidt#endif /* CONFIG_P2P */ 29575ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen} 29675ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen 29775ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen 29875ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinenvoid wpas_notify_persistent_group_removed(struct wpa_supplicant *wpa_s, 29975ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen struct wpa_ssid *ssid) 30075ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen{ 301c55524ad84d13014e8019491c2b17e5dcf13545aDmitry Shmidt#ifdef CONFIG_P2P 30275ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen wpas_dbus_unregister_persistent_group(wpa_s, ssid->id); 303c55524ad84d13014e8019491c2b17e5dcf13545aDmitry Shmidt#endif /* CONFIG_P2P */ 3048d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt} 3058d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 3068d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 3078d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtvoid wpas_notify_network_removed(struct wpa_supplicant *wpa_s, 3088d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt struct wpa_ssid *ssid) 3098d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt{ 3106c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt if (wpa_s->p2p_mgmt) 3116c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt return; 3126c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt 313f21452aea786ac056eb01f1cbba4f553bd502747Dmitry Shmidt if (wpa_s->next_ssid == ssid) 314f21452aea786ac056eb01f1cbba4f553bd502747Dmitry Shmidt wpa_s->next_ssid = NULL; 3151f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidt if (wpa_s->wpa) 3161f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidt wpa_sm_pmksa_cache_flush(wpa_s->wpa, ssid); 317391c59f0632df8db1c325da1d31d479b2eedce45Dmitry Shmidt if (!ssid->p2p_group && wpa_s->global->p2p_group_formation != wpa_s) 31875ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen wpas_dbus_unregister_network(wpa_s, ssid->id); 3196c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt if (network_is_persistent_group(ssid)) 3206c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt wpas_notify_persistent_group_removed(wpa_s, ssid); 3216c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt 3221f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidt wpas_p2p_network_removed(wpa_s, ssid); 3238d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt} 3248d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 3258d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 3268d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtvoid wpas_notify_bss_added(struct wpa_supplicant *wpa_s, 3278d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt u8 bssid[], unsigned int id) 3288d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt{ 3296c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt if (wpa_s->p2p_mgmt) 3306c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt return; 3316c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt 3328d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt wpas_dbus_register_bss(wpa_s, bssid, id); 3338d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt wpa_msg_ctrl(wpa_s, MSG_INFO, WPA_EVENT_BSS_ADDED "%u " MACSTR, 3348d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt id, MAC2STR(bssid)); 3358d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt} 3368d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 3378d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 3388d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtvoid wpas_notify_bss_removed(struct wpa_supplicant *wpa_s, 3398d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt u8 bssid[], unsigned int id) 3408d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt{ 3416c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt if (wpa_s->p2p_mgmt) 3426c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt return; 3436c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt 3448d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt wpas_dbus_unregister_bss(wpa_s, bssid, id); 3458d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt wpa_msg_ctrl(wpa_s, MSG_INFO, WPA_EVENT_BSS_REMOVED "%u " MACSTR, 3468d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt id, MAC2STR(bssid)); 3478d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt} 3488d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 3498d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 3508d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtvoid wpas_notify_bss_freq_changed(struct wpa_supplicant *wpa_s, 3518d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt unsigned int id) 3528d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt{ 3536c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt if (wpa_s->p2p_mgmt) 3546c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt return; 3556c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt 3568d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt wpas_dbus_bss_signal_prop_changed(wpa_s, WPAS_DBUS_BSS_PROP_FREQ, id); 3578d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt} 3588d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 3598d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 3608d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtvoid wpas_notify_bss_signal_changed(struct wpa_supplicant *wpa_s, 3618d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt unsigned int id) 3628d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt{ 3636c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt if (wpa_s->p2p_mgmt) 3646c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt return; 3656c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt 3668d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt wpas_dbus_bss_signal_prop_changed(wpa_s, WPAS_DBUS_BSS_PROP_SIGNAL, 3678d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt id); 3688d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt} 3698d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 3708d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 3718d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtvoid wpas_notify_bss_privacy_changed(struct wpa_supplicant *wpa_s, 3728d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt unsigned int id) 3738d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt{ 3746c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt if (wpa_s->p2p_mgmt) 3756c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt return; 3766c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt 3778d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt wpas_dbus_bss_signal_prop_changed(wpa_s, WPAS_DBUS_BSS_PROP_PRIVACY, 3788d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt id); 3798d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt} 3808d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 3818d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 3828d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtvoid wpas_notify_bss_mode_changed(struct wpa_supplicant *wpa_s, 3838d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt unsigned int id) 3848d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt{ 3856c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt if (wpa_s->p2p_mgmt) 3866c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt return; 3876c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt 3888d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt wpas_dbus_bss_signal_prop_changed(wpa_s, WPAS_DBUS_BSS_PROP_MODE, id); 3898d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt} 3908d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 3918d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 3928d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtvoid wpas_notify_bss_wpaie_changed(struct wpa_supplicant *wpa_s, 3938d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt unsigned int id) 3948d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt{ 3956c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt if (wpa_s->p2p_mgmt) 3966c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt return; 3976c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt 3988d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt wpas_dbus_bss_signal_prop_changed(wpa_s, WPAS_DBUS_BSS_PROP_WPA, id); 3998d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt} 4008d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 4018d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 4028d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtvoid wpas_notify_bss_rsnie_changed(struct wpa_supplicant *wpa_s, 4038d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt unsigned int id) 4048d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt{ 4056c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt if (wpa_s->p2p_mgmt) 4066c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt return; 4076c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt 4088d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt wpas_dbus_bss_signal_prop_changed(wpa_s, WPAS_DBUS_BSS_PROP_RSN, id); 4098d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt} 4108d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 4118d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 4128d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtvoid wpas_notify_bss_wps_changed(struct wpa_supplicant *wpa_s, 4138d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt unsigned int id) 4148d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt{ 4156c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt if (wpa_s->p2p_mgmt) 4166c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt return; 4176c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt 418d5e4923d04122f81300fa68fb07d64ede28fd44dDmitry Shmidt#ifdef CONFIG_WPS 419d5e4923d04122f81300fa68fb07d64ede28fd44dDmitry Shmidt wpas_dbus_bss_signal_prop_changed(wpa_s, WPAS_DBUS_BSS_PROP_WPS, id); 420d5e4923d04122f81300fa68fb07d64ede28fd44dDmitry Shmidt#endif /* CONFIG_WPS */ 4218d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt} 4228d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 4238d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 4248d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtvoid wpas_notify_bss_ies_changed(struct wpa_supplicant *wpa_s, 4258d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt unsigned int id) 4268d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt{ 4276c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt if (wpa_s->p2p_mgmt) 4286c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt return; 4296c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt 4308d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt wpas_dbus_bss_signal_prop_changed(wpa_s, WPAS_DBUS_BSS_PROP_IES, id); 4318d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt} 4328d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 4338d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 4348d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtvoid wpas_notify_bss_rates_changed(struct wpa_supplicant *wpa_s, 4358d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt unsigned int id) 4368d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt{ 4376c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt if (wpa_s->p2p_mgmt) 4386c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt return; 4396c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt 4408d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt wpas_dbus_bss_signal_prop_changed(wpa_s, WPAS_DBUS_BSS_PROP_RATES, id); 4418d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt} 4428d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 4438d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 444661b4f78e48c697429dc46154a4125892c001718Dmitry Shmidtvoid wpas_notify_bss_seen(struct wpa_supplicant *wpa_s, unsigned int id) 445661b4f78e48c697429dc46154a4125892c001718Dmitry Shmidt{ 4466c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt if (wpa_s->p2p_mgmt) 4476c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt return; 4486c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt 449661b4f78e48c697429dc46154a4125892c001718Dmitry Shmidt wpas_dbus_bss_signal_prop_changed(wpa_s, WPAS_DBUS_BSS_PROP_AGE, id); 450661b4f78e48c697429dc46154a4125892c001718Dmitry Shmidt} 451661b4f78e48c697429dc46154a4125892c001718Dmitry Shmidt 452661b4f78e48c697429dc46154a4125892c001718Dmitry Shmidt 4538d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtvoid wpas_notify_blob_added(struct wpa_supplicant *wpa_s, const char *name) 4548d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt{ 4556c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt if (wpa_s->p2p_mgmt) 4566c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt return; 4576c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt 4588d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt wpas_dbus_signal_blob_added(wpa_s, name); 4598d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt} 4608d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 4618d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 4628d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtvoid wpas_notify_blob_removed(struct wpa_supplicant *wpa_s, const char *name) 4638d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt{ 4646c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt if (wpa_s->p2p_mgmt) 4656c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt return; 4666c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt 4678d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt wpas_dbus_signal_blob_removed(wpa_s, name); 4688d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt} 4698d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 4708d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 4718d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtvoid wpas_notify_debug_level_changed(struct wpa_global *global) 4728d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt{ 4738d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt wpas_dbus_signal_debug_level_changed(global); 4748d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt} 4758d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 4768d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 4778d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtvoid wpas_notify_debug_timestamp_changed(struct wpa_global *global) 4788d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt{ 4798d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt wpas_dbus_signal_debug_timestamp_changed(global); 4808d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt} 4818d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 4828d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 4838d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtvoid wpas_notify_debug_show_keys_changed(struct wpa_global *global) 4848d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt{ 4858d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt wpas_dbus_signal_debug_show_keys_changed(global); 4868d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt} 4878d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 4888d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 4898d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtvoid wpas_notify_suspend(struct wpa_global *global) 4908d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt{ 4918d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt struct wpa_supplicant *wpa_s; 4928d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 4938d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt os_get_time(&global->suspend_time); 4948d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt wpa_printf(MSG_DEBUG, "System suspend notification"); 4958d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt for (wpa_s = global->ifaces; wpa_s; wpa_s = wpa_s->next) 4968d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt wpa_drv_suspend(wpa_s); 4978d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt} 4988d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 4998d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 5008d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtvoid wpas_notify_resume(struct wpa_global *global) 5018d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt{ 5028d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt struct os_time now; 5038d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt int slept; 5048d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt struct wpa_supplicant *wpa_s; 5058d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 5068d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt if (global->suspend_time.sec == 0) 5078d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt slept = -1; 5088d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt else { 5098d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt os_get_time(&now); 5108d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt slept = now.sec - global->suspend_time.sec; 5118d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt } 5128d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt wpa_printf(MSG_DEBUG, "System resume notification (slept %d seconds)", 5138d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt slept); 5148d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 5158d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt for (wpa_s = global->ifaces; wpa_s; wpa_s = wpa_s->next) { 5168d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt wpa_drv_resume(wpa_s); 5178d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt if (wpa_s->wpa_state == WPA_DISCONNECTED) 5188d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt wpa_supplicant_req_scan(wpa_s, 0, 100000); 5198d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt } 5208d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt} 5218d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 5228d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 5238d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt#ifdef CONFIG_P2P 5248d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 5258d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtvoid wpas_notify_p2p_device_found(struct wpa_supplicant *wpa_s, 5268d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt const u8 *dev_addr, int new_device) 5278d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt{ 52875ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen if (new_device) { 52975ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen /* Create the new peer object */ 53075ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen wpas_dbus_register_peer(wpa_s, dev_addr); 53175ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen } 53275ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen 53375ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen /* Notify a new peer has been detected*/ 53475ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen wpas_dbus_signal_peer_device_found(wpa_s, dev_addr); 5358d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt} 5368d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 5378d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 5388d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtvoid wpas_notify_p2p_device_lost(struct wpa_supplicant *wpa_s, 5398d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt const u8 *dev_addr) 5408d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt{ 54175ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen wpas_dbus_unregister_peer(wpa_s, dev_addr); 54275ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen 54375ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen /* Create signal on interface object*/ 54475ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen wpas_dbus_signal_peer_device_lost(wpa_s, dev_addr); 5458d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt} 5468d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 5478d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 5488d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtvoid wpas_notify_p2p_group_removed(struct wpa_supplicant *wpa_s, 5498d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt const struct wpa_ssid *ssid, 5508d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt const char *role) 5518d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt{ 55275ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen wpas_dbus_signal_p2p_group_removed(wpa_s, role); 55303658834c33748b9ad86f3d4cdf0c7be9c6887d1Dmitry Shmidt 55403658834c33748b9ad86f3d4cdf0c7be9c6887d1Dmitry Shmidt wpas_dbus_unregister_p2p_group(wpa_s, ssid); 5558d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt} 5568d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 5578d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 5588d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtvoid wpas_notify_p2p_go_neg_req(struct wpa_supplicant *wpa_s, 5598d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt const u8 *src, u16 dev_passwd_id) 5608d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt{ 56175ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen wpas_dbus_signal_p2p_go_neg_req(wpa_s, src, dev_passwd_id); 5628d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt} 5638d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 5648d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 5651f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidtvoid wpas_notify_p2p_go_neg_completed(struct wpa_supplicant *wpa_s, 5661f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidt struct p2p_go_neg_results *res) 5678d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt{ 5681f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidt wpas_dbus_signal_p2p_go_neg_resp(wpa_s, res); 5698d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt} 5708d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 5718d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 5728d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtvoid wpas_notify_p2p_invitation_result(struct wpa_supplicant *wpa_s, 5738d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt int status, const u8 *bssid) 5748d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt{ 57575ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen wpas_dbus_signal_p2p_invitation_result(wpa_s, status, bssid); 5768d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt} 5778d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 5788d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 5798d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtvoid wpas_notify_p2p_sd_request(struct wpa_supplicant *wpa_s, 5808d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt int freq, const u8 *sa, u8 dialog_token, 5818d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt u16 update_indic, const u8 *tlvs, 5828d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt size_t tlvs_len) 5838d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt{ 58475ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen wpas_dbus_signal_p2p_sd_request(wpa_s, freq, sa, dialog_token, 58575ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen update_indic, tlvs, tlvs_len); 5868d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt} 5878d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 5888d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 5898d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtvoid wpas_notify_p2p_sd_response(struct wpa_supplicant *wpa_s, 5908d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt const u8 *sa, u16 update_indic, 5918d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt const u8 *tlvs, size_t tlvs_len) 5928d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt{ 59375ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen wpas_dbus_signal_p2p_sd_response(wpa_s, sa, update_indic, 59475ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen tlvs, tlvs_len); 59575ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen} 59675ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen 59775ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen 59875ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen/** 59975ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen * wpas_notify_p2p_provision_discovery - Notification of provision discovery 60075ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen * @dev_addr: Who sent the request or responded to our request. 60175ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen * @request: Will be 1 if request, 0 for response. 60275ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen * @status: Valid only in case of response (0 in case of success) 60375ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen * @config_methods: WPS config methods 60475ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen * @generated_pin: PIN to be displayed in case of WPS_CONFIG_DISPLAY method 60575ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen * 60675ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen * This can be used to notify: 60775ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen * - Requests or responses 60875ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen * - Various config methods 60975ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen * - Failure condition in case of response 61075ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen */ 61175ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinenvoid wpas_notify_p2p_provision_discovery(struct wpa_supplicant *wpa_s, 61275ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen const u8 *dev_addr, int request, 61375ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen enum p2p_prov_disc_status status, 61475ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen u16 config_methods, 61575ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen unsigned int generated_pin) 61675ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen{ 61775ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen wpas_dbus_signal_p2p_provision_discovery(wpa_s, dev_addr, request, 61875ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen status, config_methods, 61975ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen generated_pin); 62075ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen} 62175ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen 62275ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen 62375ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinenvoid wpas_notify_p2p_group_started(struct wpa_supplicant *wpa_s, 62475ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen struct wpa_ssid *ssid, int network_id, 62575ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen int client) 62675ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen{ 62775ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen /* Notify a group has been started */ 62875ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen wpas_dbus_register_p2p_group(wpa_s, ssid); 62975ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen 63075ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen wpas_dbus_signal_p2p_group_started(wpa_s, ssid, client, network_id); 63175ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen} 63275ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen 63375ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen 63475ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinenvoid wpas_notify_p2p_wps_failed(struct wpa_supplicant *wpa_s, 63575ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen struct wps_event_fail *fail) 63675ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen{ 63775ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen wpas_dbus_signal_p2p_wps_failed(wpa_s, fail); 6388d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt} 6398d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 6408d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt#endif /* CONFIG_P2P */ 6418d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 6428d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 6438d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtstatic void wpas_notify_ap_sta_authorized(struct wpa_supplicant *wpa_s, 6441f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidt const u8 *sta, 6451f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidt const u8 *p2p_dev_addr) 6468d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt{ 64775ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen#ifdef CONFIG_P2P 6481f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidt wpas_p2p_notify_ap_sta_authorized(wpa_s, p2p_dev_addr); 6491f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidt 65075ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen /* 65175ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen * Create 'peer-joined' signal on group object -- will also 65275ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen * check P2P itself. 65375ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen */ 6546c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt if (p2p_dev_addr) 6556c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt wpas_dbus_signal_p2p_peer_joined(wpa_s, p2p_dev_addr); 65675ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen#endif /* CONFIG_P2P */ 65734af306c42b7ccf956508e7cd23f0ba90606e360Dmitry Shmidt 65834af306c42b7ccf956508e7cd23f0ba90606e360Dmitry Shmidt /* Notify listeners a new station has been authorized */ 65934af306c42b7ccf956508e7cd23f0ba90606e360Dmitry Shmidt wpas_dbus_signal_sta_authorized(wpa_s, sta); 6608d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt} 6618d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 6628d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 6638d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtstatic void wpas_notify_ap_sta_deauthorized(struct wpa_supplicant *wpa_s, 664d30ac604c9f6da71a0dd7f46d25be05a2a62cfbbDmitry Shmidt const u8 *sta, 665d30ac604c9f6da71a0dd7f46d25be05a2a62cfbbDmitry Shmidt const u8 *p2p_dev_addr) 6668d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt{ 66775ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen#ifdef CONFIG_P2P 66875ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen /* 66975ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen * Create 'peer-disconnected' signal on group object if this 67075ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen * is a P2P group. 67175ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen */ 6726c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt if (p2p_dev_addr) 6736c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt wpas_dbus_signal_p2p_peer_disconnected(wpa_s, p2p_dev_addr); 67475ecf5267604f166b85a7ee2cf0d9cb682966680Jouni Malinen#endif /* CONFIG_P2P */ 67534af306c42b7ccf956508e7cd23f0ba90606e360Dmitry Shmidt 67634af306c42b7ccf956508e7cd23f0ba90606e360Dmitry Shmidt /* Notify listeners a station has been deauthorized */ 67734af306c42b7ccf956508e7cd23f0ba90606e360Dmitry Shmidt wpas_dbus_signal_sta_deauthorized(wpa_s, sta); 6788d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt} 6798d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 6808d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 6818d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtvoid wpas_notify_sta_authorized(struct wpa_supplicant *wpa_s, 6821f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidt const u8 *mac_addr, int authorized, 6831f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidt const u8 *p2p_dev_addr) 6848d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt{ 6858d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt if (authorized) 6861f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidt wpas_notify_ap_sta_authorized(wpa_s, mac_addr, p2p_dev_addr); 6878d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt else 688d30ac604c9f6da71a0dd7f46d25be05a2a62cfbbDmitry Shmidt wpas_notify_ap_sta_deauthorized(wpa_s, mac_addr, p2p_dev_addr); 6898d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt} 690c55524ad84d13014e8019491c2b17e5dcf13545aDmitry Shmidt 691c55524ad84d13014e8019491c2b17e5dcf13545aDmitry Shmidt 692c55524ad84d13014e8019491c2b17e5dcf13545aDmitry Shmidtvoid wpas_notify_certification(struct wpa_supplicant *wpa_s, int depth, 6932f74e36e84064ffa32f82f3decf36b653c7e4fadDmitry Shmidt const char *subject, const char *altsubject[], 6942f74e36e84064ffa32f82f3decf36b653c7e4fadDmitry Shmidt int num_altsubject, const char *cert_hash, 695c55524ad84d13014e8019491c2b17e5dcf13545aDmitry Shmidt const struct wpabuf *cert) 696c55524ad84d13014e8019491c2b17e5dcf13545aDmitry Shmidt{ 697c55524ad84d13014e8019491c2b17e5dcf13545aDmitry Shmidt wpa_msg(wpa_s, MSG_INFO, WPA_EVENT_EAP_PEER_CERT 698c55524ad84d13014e8019491c2b17e5dcf13545aDmitry Shmidt "depth=%d subject='%s'%s%s", 6992f74e36e84064ffa32f82f3decf36b653c7e4fadDmitry Shmidt depth, subject, cert_hash ? " hash=" : "", 700c55524ad84d13014e8019491c2b17e5dcf13545aDmitry Shmidt cert_hash ? cert_hash : ""); 701c55524ad84d13014e8019491c2b17e5dcf13545aDmitry Shmidt 702c55524ad84d13014e8019491c2b17e5dcf13545aDmitry Shmidt if (cert) { 703c55524ad84d13014e8019491c2b17e5dcf13545aDmitry Shmidt char *cert_hex; 704c55524ad84d13014e8019491c2b17e5dcf13545aDmitry Shmidt size_t len = wpabuf_len(cert) * 2 + 1; 705c55524ad84d13014e8019491c2b17e5dcf13545aDmitry Shmidt cert_hex = os_malloc(len); 706c55524ad84d13014e8019491c2b17e5dcf13545aDmitry Shmidt if (cert_hex) { 707c55524ad84d13014e8019491c2b17e5dcf13545aDmitry Shmidt wpa_snprintf_hex(cert_hex, len, wpabuf_head(cert), 708c55524ad84d13014e8019491c2b17e5dcf13545aDmitry Shmidt wpabuf_len(cert)); 709c55524ad84d13014e8019491c2b17e5dcf13545aDmitry Shmidt wpa_msg_ctrl(wpa_s, MSG_INFO, 710c55524ad84d13014e8019491c2b17e5dcf13545aDmitry Shmidt WPA_EVENT_EAP_PEER_CERT 711c55524ad84d13014e8019491c2b17e5dcf13545aDmitry Shmidt "depth=%d subject='%s' cert=%s", 712c55524ad84d13014e8019491c2b17e5dcf13545aDmitry Shmidt depth, subject, cert_hex); 713c55524ad84d13014e8019491c2b17e5dcf13545aDmitry Shmidt os_free(cert_hex); 714c55524ad84d13014e8019491c2b17e5dcf13545aDmitry Shmidt } 715c55524ad84d13014e8019491c2b17e5dcf13545aDmitry Shmidt } 716c55524ad84d13014e8019491c2b17e5dcf13545aDmitry Shmidt 7172f74e36e84064ffa32f82f3decf36b653c7e4fadDmitry Shmidt if (altsubject) { 7182f74e36e84064ffa32f82f3decf36b653c7e4fadDmitry Shmidt int i; 7192f74e36e84064ffa32f82f3decf36b653c7e4fadDmitry Shmidt 7202f74e36e84064ffa32f82f3decf36b653c7e4fadDmitry Shmidt for (i = 0; i < num_altsubject; i++) 7212f74e36e84064ffa32f82f3decf36b653c7e4fadDmitry Shmidt wpa_msg(wpa_s, MSG_INFO, WPA_EVENT_EAP_PEER_ALT 7222f74e36e84064ffa32f82f3decf36b653c7e4fadDmitry Shmidt "depth=%d %s", depth, altsubject[i]); 7232f74e36e84064ffa32f82f3decf36b653c7e4fadDmitry Shmidt } 7242f74e36e84064ffa32f82f3decf36b653c7e4fadDmitry Shmidt 725c55524ad84d13014e8019491c2b17e5dcf13545aDmitry Shmidt /* notify the old DBus API */ 726c55524ad84d13014e8019491c2b17e5dcf13545aDmitry Shmidt wpa_supplicant_dbus_notify_certification(wpa_s, depth, subject, 727c55524ad84d13014e8019491c2b17e5dcf13545aDmitry Shmidt cert_hash, cert); 728c55524ad84d13014e8019491c2b17e5dcf13545aDmitry Shmidt /* notify the new DBus API */ 7292f74e36e84064ffa32f82f3decf36b653c7e4fadDmitry Shmidt wpas_dbus_signal_certification(wpa_s, depth, subject, altsubject, 7302f74e36e84064ffa32f82f3decf36b653c7e4fadDmitry Shmidt num_altsubject, cert_hash, cert); 731c55524ad84d13014e8019491c2b17e5dcf13545aDmitry Shmidt} 73204949598a23f501be6eec21697465fd46a28840aDmitry Shmidt 73304949598a23f501be6eec21697465fd46a28840aDmitry Shmidt 73404949598a23f501be6eec21697465fd46a28840aDmitry Shmidtvoid wpas_notify_preq(struct wpa_supplicant *wpa_s, 73504949598a23f501be6eec21697465fd46a28840aDmitry Shmidt const u8 *addr, const u8 *dst, const u8 *bssid, 73604949598a23f501be6eec21697465fd46a28840aDmitry Shmidt const u8 *ie, size_t ie_len, u32 ssi_signal) 73704949598a23f501be6eec21697465fd46a28840aDmitry Shmidt{ 73804949598a23f501be6eec21697465fd46a28840aDmitry Shmidt#ifdef CONFIG_AP 73904949598a23f501be6eec21697465fd46a28840aDmitry Shmidt wpas_dbus_signal_preq(wpa_s, addr, dst, bssid, ie, ie_len, ssi_signal); 74004949598a23f501be6eec21697465fd46a28840aDmitry Shmidt#endif /* CONFIG_AP */ 74104949598a23f501be6eec21697465fd46a28840aDmitry Shmidt} 74204949598a23f501be6eec21697465fd46a28840aDmitry Shmidt 74304949598a23f501be6eec21697465fd46a28840aDmitry Shmidt 74404949598a23f501be6eec21697465fd46a28840aDmitry Shmidtvoid wpas_notify_eap_status(struct wpa_supplicant *wpa_s, const char *status, 74504949598a23f501be6eec21697465fd46a28840aDmitry Shmidt const char *parameter) 74604949598a23f501be6eec21697465fd46a28840aDmitry Shmidt{ 74704949598a23f501be6eec21697465fd46a28840aDmitry Shmidt wpas_dbus_signal_eap_status(wpa_s, status, parameter); 7488da800a193fb6f8832218715f82a7b4e2d2ad338Dmitry Shmidt wpa_msg_ctrl(wpa_s, MSG_INFO, WPA_EVENT_EAP_STATUS 7498da800a193fb6f8832218715f82a7b4e2d2ad338Dmitry Shmidt "status='%s' parameter='%s'", 7508da800a193fb6f8832218715f82a7b4e2d2ad338Dmitry Shmidt status, parameter); 75104949598a23f501be6eec21697465fd46a28840aDmitry Shmidt} 752661b4f78e48c697429dc46154a4125892c001718Dmitry Shmidt 753661b4f78e48c697429dc46154a4125892c001718Dmitry Shmidt 754661b4f78e48c697429dc46154a4125892c001718Dmitry Shmidtvoid wpas_notify_network_bssid_set_changed(struct wpa_supplicant *wpa_s, 755661b4f78e48c697429dc46154a4125892c001718Dmitry Shmidt struct wpa_ssid *ssid) 756661b4f78e48c697429dc46154a4125892c001718Dmitry Shmidt{ 757661b4f78e48c697429dc46154a4125892c001718Dmitry Shmidt if (wpa_s->current_ssid != ssid) 758661b4f78e48c697429dc46154a4125892c001718Dmitry Shmidt return; 759661b4f78e48c697429dc46154a4125892c001718Dmitry Shmidt 760661b4f78e48c697429dc46154a4125892c001718Dmitry Shmidt wpa_dbg(wpa_s, MSG_DEBUG, 761661b4f78e48c697429dc46154a4125892c001718Dmitry Shmidt "Network bssid config changed for the current network - within-ESS roaming %s", 762661b4f78e48c697429dc46154a4125892c001718Dmitry Shmidt ssid->bssid_set ? "disabled" : "enabled"); 763661b4f78e48c697429dc46154a4125892c001718Dmitry Shmidt 764661b4f78e48c697429dc46154a4125892c001718Dmitry Shmidt wpa_drv_roaming(wpa_s, !ssid->bssid_set, 765661b4f78e48c697429dc46154a4125892c001718Dmitry Shmidt ssid->bssid_set ? ssid->bssid : NULL); 766661b4f78e48c697429dc46154a4125892c001718Dmitry Shmidt} 7677f65602d49069f96a7bb44da8bd79ffe8d4c6a98Dmitry Shmidt 7687f65602d49069f96a7bb44da8bd79ffe8d4c6a98Dmitry Shmidt 7697f65602d49069f96a7bb44da8bd79ffe8d4c6a98Dmitry Shmidtvoid wpas_notify_network_type_changed(struct wpa_supplicant *wpa_s, 7707f65602d49069f96a7bb44da8bd79ffe8d4c6a98Dmitry Shmidt struct wpa_ssid *ssid) 7717f65602d49069f96a7bb44da8bd79ffe8d4c6a98Dmitry Shmidt{ 7727f65602d49069f96a7bb44da8bd79ffe8d4c6a98Dmitry Shmidt#ifdef CONFIG_P2P 7737f65602d49069f96a7bb44da8bd79ffe8d4c6a98Dmitry Shmidt if (ssid->disabled == 2) { 7747f65602d49069f96a7bb44da8bd79ffe8d4c6a98Dmitry Shmidt /* Changed from normal network profile to persistent group */ 7757f65602d49069f96a7bb44da8bd79ffe8d4c6a98Dmitry Shmidt ssid->disabled = 0; 7767f65602d49069f96a7bb44da8bd79ffe8d4c6a98Dmitry Shmidt wpas_dbus_unregister_network(wpa_s, ssid->id); 7777f65602d49069f96a7bb44da8bd79ffe8d4c6a98Dmitry Shmidt ssid->disabled = 2; 7787f65602d49069f96a7bb44da8bd79ffe8d4c6a98Dmitry Shmidt wpas_dbus_register_persistent_group(wpa_s, ssid); 7797f65602d49069f96a7bb44da8bd79ffe8d4c6a98Dmitry Shmidt } else { 7807f65602d49069f96a7bb44da8bd79ffe8d4c6a98Dmitry Shmidt /* Changed from persistent group to normal network profile */ 7817f65602d49069f96a7bb44da8bd79ffe8d4c6a98Dmitry Shmidt wpas_dbus_unregister_persistent_group(wpa_s, ssid->id); 7827f65602d49069f96a7bb44da8bd79ffe8d4c6a98Dmitry Shmidt wpas_dbus_register_network(wpa_s, ssid); 7837f65602d49069f96a7bb44da8bd79ffe8d4c6a98Dmitry Shmidt } 7847f65602d49069f96a7bb44da8bd79ffe8d4c6a98Dmitry Shmidt#endif /* CONFIG_P2P */ 7857f65602d49069f96a7bb44da8bd79ffe8d4c6a98Dmitry Shmidt} 786