xref: /aosp_15_r20/external/wpa_supplicant_8/wpa_supplicant/notify.c (revision 03f9172ca588f91df233974f4258bab95191f931)
1*03f9172cSAndroid Build Coastguard Worker /*
2*03f9172cSAndroid Build Coastguard Worker  * wpa_supplicant - Event notifications
3*03f9172cSAndroid Build Coastguard Worker  * Copyright (c) 2009-2010, Jouni Malinen <[email protected]>
4*03f9172cSAndroid Build Coastguard Worker  *
5*03f9172cSAndroid Build Coastguard Worker  * This software may be distributed under the terms of the BSD license.
6*03f9172cSAndroid Build Coastguard Worker  * See README for more details.
7*03f9172cSAndroid Build Coastguard Worker  */
8*03f9172cSAndroid Build Coastguard Worker 
9*03f9172cSAndroid Build Coastguard Worker #include "utils/includes.h"
10*03f9172cSAndroid Build Coastguard Worker 
11*03f9172cSAndroid Build Coastguard Worker #include "utils/common.h"
12*03f9172cSAndroid Build Coastguard Worker #include "common/wpa_ctrl.h"
13*03f9172cSAndroid Build Coastguard Worker #include "common/nan_de.h"
14*03f9172cSAndroid Build Coastguard Worker #include "config.h"
15*03f9172cSAndroid Build Coastguard Worker #include "wpa_supplicant_i.h"
16*03f9172cSAndroid Build Coastguard Worker #include "wps_supplicant.h"
17*03f9172cSAndroid Build Coastguard Worker #include "dbus/dbus_common.h"
18*03f9172cSAndroid Build Coastguard Worker #include "dbus/dbus_new.h"
19*03f9172cSAndroid Build Coastguard Worker #include "rsn_supp/wpa.h"
20*03f9172cSAndroid Build Coastguard Worker #include "rsn_supp/pmksa_cache.h"
21*03f9172cSAndroid Build Coastguard Worker #include "fst/fst.h"
22*03f9172cSAndroid Build Coastguard Worker #include "crypto/tls.h"
23*03f9172cSAndroid Build Coastguard Worker #include "bss.h"
24*03f9172cSAndroid Build Coastguard Worker #include "driver_i.h"
25*03f9172cSAndroid Build Coastguard Worker #include "scan.h"
26*03f9172cSAndroid Build Coastguard Worker #include "p2p_supplicant.h"
27*03f9172cSAndroid Build Coastguard Worker #include "sme.h"
28*03f9172cSAndroid Build Coastguard Worker #include "notify.h"
29*03f9172cSAndroid Build Coastguard Worker #include "aidl/vendor/aidl.h"
30*03f9172cSAndroid Build Coastguard Worker 
31*03f9172cSAndroid Build Coastguard Worker #ifdef MAINLINE_SUPPLICANT
32*03f9172cSAndroid Build Coastguard Worker #include "aidl/mainline/service.h"
33*03f9172cSAndroid Build Coastguard Worker #endif
34*03f9172cSAndroid Build Coastguard Worker 
wpas_notify_supplicant_initialized(struct wpa_global * global)35*03f9172cSAndroid Build Coastguard Worker int wpas_notify_supplicant_initialized(struct wpa_global *global)
36*03f9172cSAndroid Build Coastguard Worker {
37*03f9172cSAndroid Build Coastguard Worker #ifdef CONFIG_CTRL_IFACE_DBUS_NEW
38*03f9172cSAndroid Build Coastguard Worker 	if (global->params.dbus_ctrl_interface) {
39*03f9172cSAndroid Build Coastguard Worker 		global->dbus = wpas_dbus_init(global);
40*03f9172cSAndroid Build Coastguard Worker 		if (global->dbus == NULL)
41*03f9172cSAndroid Build Coastguard Worker 			return -1;
42*03f9172cSAndroid Build Coastguard Worker 	}
43*03f9172cSAndroid Build Coastguard Worker #endif /* CONFIG_CTRL_IFACE_DBUS_NEW */
44*03f9172cSAndroid Build Coastguard Worker 
45*03f9172cSAndroid Build Coastguard Worker #ifdef CONFIG_AIDL
46*03f9172cSAndroid Build Coastguard Worker 	// Initialize AIDL here if daemonize is disabled.
47*03f9172cSAndroid Build Coastguard Worker 	// Otherwise initialize it later.
48*03f9172cSAndroid Build Coastguard Worker 	if (!global->params.daemonize) {
49*03f9172cSAndroid Build Coastguard Worker 		global->aidl = wpas_aidl_init(global);
50*03f9172cSAndroid Build Coastguard Worker 		if (!global->aidl)
51*03f9172cSAndroid Build Coastguard Worker 			return -1;
52*03f9172cSAndroid Build Coastguard Worker 	}
53*03f9172cSAndroid Build Coastguard Worker #endif /* CONFIG_AIDL */
54*03f9172cSAndroid Build Coastguard Worker 
55*03f9172cSAndroid Build Coastguard Worker #ifdef MAINLINE_SUPPLICANT
56*03f9172cSAndroid Build Coastguard Worker 	global->aidl = mainline_aidl_init(global);
57*03f9172cSAndroid Build Coastguard Worker 	if (!global->aidl)
58*03f9172cSAndroid Build Coastguard Worker 		return -1;
59*03f9172cSAndroid Build Coastguard Worker #endif /* MAINLINE_SUPPLICANT */
60*03f9172cSAndroid Build Coastguard Worker 
61*03f9172cSAndroid Build Coastguard Worker 	return 0;
62*03f9172cSAndroid Build Coastguard Worker }
63*03f9172cSAndroid Build Coastguard Worker 
64*03f9172cSAndroid Build Coastguard Worker 
wpas_notify_supplicant_deinitialized(struct wpa_global * global)65*03f9172cSAndroid Build Coastguard Worker void wpas_notify_supplicant_deinitialized(struct wpa_global *global)
66*03f9172cSAndroid Build Coastguard Worker {
67*03f9172cSAndroid Build Coastguard Worker #ifdef CONFIG_CTRL_IFACE_DBUS_NEW
68*03f9172cSAndroid Build Coastguard Worker 	if (global->dbus)
69*03f9172cSAndroid Build Coastguard Worker 		wpas_dbus_deinit(global->dbus);
70*03f9172cSAndroid Build Coastguard Worker #endif /* CONFIG_CTRL_IFACE_DBUS_NEW */
71*03f9172cSAndroid Build Coastguard Worker 
72*03f9172cSAndroid Build Coastguard Worker #ifdef CONFIG_AIDL
73*03f9172cSAndroid Build Coastguard Worker 	if (global->aidl)
74*03f9172cSAndroid Build Coastguard Worker 		wpas_aidl_deinit(global->aidl);
75*03f9172cSAndroid Build Coastguard Worker #endif /* CONFIG_AIDL */
76*03f9172cSAndroid Build Coastguard Worker 
77*03f9172cSAndroid Build Coastguard Worker #ifdef MAINLINE_SUPPLICANT
78*03f9172cSAndroid Build Coastguard Worker 	if (global->aidl)
79*03f9172cSAndroid Build Coastguard Worker 		mainline_aidl_deinit(global->aidl);
80*03f9172cSAndroid Build Coastguard Worker #endif /* MAINLINE_SUPPLICANT */
81*03f9172cSAndroid Build Coastguard Worker 
82*03f9172cSAndroid Build Coastguard Worker }
83*03f9172cSAndroid Build Coastguard Worker 
84*03f9172cSAndroid Build Coastguard Worker 
wpas_notify_iface_added(struct wpa_supplicant * wpa_s)85*03f9172cSAndroid Build Coastguard Worker int wpas_notify_iface_added(struct wpa_supplicant *wpa_s)
86*03f9172cSAndroid Build Coastguard Worker {
87*03f9172cSAndroid Build Coastguard Worker 	if (!wpa_s->p2p_mgmt) {
88*03f9172cSAndroid Build Coastguard Worker 		if (wpas_dbus_register_interface(wpa_s))
89*03f9172cSAndroid Build Coastguard Worker 			return -1;
90*03f9172cSAndroid Build Coastguard Worker 	}
91*03f9172cSAndroid Build Coastguard Worker 
92*03f9172cSAndroid Build Coastguard Worker #ifdef CONFIG_AIDL
93*03f9172cSAndroid Build Coastguard Worker 	/*
94*03f9172cSAndroid Build Coastguard Worker 	 * AIDL initialization may not be complete here if daemonize is enabled.
95*03f9172cSAndroid Build Coastguard Worker 	 * Initialization is done after daemonizing in order to avoid
96*03f9172cSAndroid Build Coastguard Worker 	 * issues with the file descriptor.
97*03f9172cSAndroid Build Coastguard Worker 	 */
98*03f9172cSAndroid Build Coastguard Worker 	if (!wpa_s->global->aidl)
99*03f9172cSAndroid Build Coastguard Worker 		return 0;
100*03f9172cSAndroid Build Coastguard Worker 	/* AIDL interface wants to keep track of the P2P mgmt iface. */
101*03f9172cSAndroid Build Coastguard Worker 	if (wpas_aidl_register_interface(wpa_s))
102*03f9172cSAndroid Build Coastguard Worker 		return -1;
103*03f9172cSAndroid Build Coastguard Worker #endif
104*03f9172cSAndroid Build Coastguard Worker 
105*03f9172cSAndroid Build Coastguard Worker 	return 0;
106*03f9172cSAndroid Build Coastguard Worker }
107*03f9172cSAndroid Build Coastguard Worker 
108*03f9172cSAndroid Build Coastguard Worker 
wpas_notify_iface_removed(struct wpa_supplicant * wpa_s)109*03f9172cSAndroid Build Coastguard Worker void wpas_notify_iface_removed(struct wpa_supplicant *wpa_s)
110*03f9172cSAndroid Build Coastguard Worker {
111*03f9172cSAndroid Build Coastguard Worker 	if (!wpa_s->p2p_mgmt) {
112*03f9172cSAndroid Build Coastguard Worker 		/* unregister interface in new DBus ctrl iface */
113*03f9172cSAndroid Build Coastguard Worker 		wpas_dbus_unregister_interface(wpa_s);
114*03f9172cSAndroid Build Coastguard Worker 	}
115*03f9172cSAndroid Build Coastguard Worker 
116*03f9172cSAndroid Build Coastguard Worker 	/* AIDL interface wants to keep track of the P2P mgmt iface. */
117*03f9172cSAndroid Build Coastguard Worker 	wpas_aidl_unregister_interface(wpa_s);
118*03f9172cSAndroid Build Coastguard Worker }
119*03f9172cSAndroid Build Coastguard Worker 
120*03f9172cSAndroid Build Coastguard Worker 
wpas_notify_state_changed(struct wpa_supplicant * wpa_s,enum wpa_states new_state,enum wpa_states old_state)121*03f9172cSAndroid Build Coastguard Worker void wpas_notify_state_changed(struct wpa_supplicant *wpa_s,
122*03f9172cSAndroid Build Coastguard Worker 			       enum wpa_states new_state,
123*03f9172cSAndroid Build Coastguard Worker 			       enum wpa_states old_state)
124*03f9172cSAndroid Build Coastguard Worker {
125*03f9172cSAndroid Build Coastguard Worker 	if (wpa_s->p2p_mgmt)
126*03f9172cSAndroid Build Coastguard Worker 		return;
127*03f9172cSAndroid Build Coastguard Worker 
128*03f9172cSAndroid Build Coastguard Worker 	/* notify the new DBus API */
129*03f9172cSAndroid Build Coastguard Worker 	wpas_dbus_signal_prop_changed(wpa_s, WPAS_DBUS_PROP_STATE);
130*03f9172cSAndroid Build Coastguard Worker 
131*03f9172cSAndroid Build Coastguard Worker #ifdef CONFIG_FST
132*03f9172cSAndroid Build Coastguard Worker 	if (wpa_s->fst && !is_zero_ether_addr(wpa_s->bssid)) {
133*03f9172cSAndroid Build Coastguard Worker 		if (new_state == WPA_COMPLETED)
134*03f9172cSAndroid Build Coastguard Worker 			fst_notify_peer_connected(wpa_s->fst, wpa_s->bssid);
135*03f9172cSAndroid Build Coastguard Worker 		else if (old_state >= WPA_ASSOCIATED &&
136*03f9172cSAndroid Build Coastguard Worker 			 new_state < WPA_ASSOCIATED)
137*03f9172cSAndroid Build Coastguard Worker 			fst_notify_peer_disconnected(wpa_s->fst, wpa_s->bssid);
138*03f9172cSAndroid Build Coastguard Worker 	}
139*03f9172cSAndroid Build Coastguard Worker #endif /* CONFIG_FST */
140*03f9172cSAndroid Build Coastguard Worker 
141*03f9172cSAndroid Build Coastguard Worker 	if (new_state == WPA_COMPLETED)
142*03f9172cSAndroid Build Coastguard Worker 		wpas_p2p_notif_connected(wpa_s);
143*03f9172cSAndroid Build Coastguard Worker 	else if (old_state >= WPA_ASSOCIATED && new_state < WPA_ASSOCIATED)
144*03f9172cSAndroid Build Coastguard Worker 		wpas_p2p_notif_disconnected(wpa_s);
145*03f9172cSAndroid Build Coastguard Worker 
146*03f9172cSAndroid Build Coastguard Worker 	sme_state_changed(wpa_s);
147*03f9172cSAndroid Build Coastguard Worker 
148*03f9172cSAndroid Build Coastguard Worker #ifdef ANDROID
149*03f9172cSAndroid Build Coastguard Worker 	wpa_msg_ctrl(wpa_s, MSG_INFO, WPA_EVENT_STATE_CHANGE
150*03f9172cSAndroid Build Coastguard Worker 		     "id=%d state=%d BSSID=" MACSTR " SSID=%s",
151*03f9172cSAndroid Build Coastguard Worker 		     wpa_s->current_ssid ? wpa_s->current_ssid->id : -1,
152*03f9172cSAndroid Build Coastguard Worker 		     new_state,
153*03f9172cSAndroid Build Coastguard Worker 		     MAC2STR(wpa_s->bssid),
154*03f9172cSAndroid Build Coastguard Worker 		     wpa_s->current_ssid && wpa_s->current_ssid->ssid ?
155*03f9172cSAndroid Build Coastguard Worker 		     wpa_ssid_txt(wpa_s->current_ssid->ssid,
156*03f9172cSAndroid Build Coastguard Worker 				  wpa_s->current_ssid->ssid_len) : "");
157*03f9172cSAndroid Build Coastguard Worker #endif /* ANDROID */
158*03f9172cSAndroid Build Coastguard Worker 
159*03f9172cSAndroid Build Coastguard Worker 	wpas_aidl_notify_state_changed(wpa_s);
160*03f9172cSAndroid Build Coastguard Worker }
161*03f9172cSAndroid Build Coastguard Worker 
162*03f9172cSAndroid Build Coastguard Worker 
wpas_notify_disconnect_reason(struct wpa_supplicant * wpa_s)163*03f9172cSAndroid Build Coastguard Worker void wpas_notify_disconnect_reason(struct wpa_supplicant *wpa_s)
164*03f9172cSAndroid Build Coastguard Worker {
165*03f9172cSAndroid Build Coastguard Worker 	if (wpa_s->p2p_mgmt)
166*03f9172cSAndroid Build Coastguard Worker 		return;
167*03f9172cSAndroid Build Coastguard Worker 
168*03f9172cSAndroid Build Coastguard Worker 	wpas_dbus_signal_prop_changed(wpa_s, WPAS_DBUS_PROP_DISCONNECT_REASON);
169*03f9172cSAndroid Build Coastguard Worker 
170*03f9172cSAndroid Build Coastguard Worker 	wpas_aidl_notify_disconnect_reason(wpa_s);
171*03f9172cSAndroid Build Coastguard Worker }
172*03f9172cSAndroid Build Coastguard Worker 
173*03f9172cSAndroid Build Coastguard Worker 
wpas_notify_mlo_info_change_reason(struct wpa_supplicant * wpa_s,enum mlo_info_change_reason reason)174*03f9172cSAndroid Build Coastguard Worker void wpas_notify_mlo_info_change_reason(struct wpa_supplicant *wpa_s,
175*03f9172cSAndroid Build Coastguard Worker 					enum mlo_info_change_reason reason)
176*03f9172cSAndroid Build Coastguard Worker {
177*03f9172cSAndroid Build Coastguard Worker 	if (wpa_s->p2p_mgmt)
178*03f9172cSAndroid Build Coastguard Worker 		return;
179*03f9172cSAndroid Build Coastguard Worker 
180*03f9172cSAndroid Build Coastguard Worker 	wpas_aidl_notify_mlo_info_change_reason(wpa_s, reason);
181*03f9172cSAndroid Build Coastguard Worker }
182*03f9172cSAndroid Build Coastguard Worker 
183*03f9172cSAndroid Build Coastguard Worker 
wpas_notify_auth_status_code(struct wpa_supplicant * wpa_s)184*03f9172cSAndroid Build Coastguard Worker void wpas_notify_auth_status_code(struct wpa_supplicant *wpa_s)
185*03f9172cSAndroid Build Coastguard Worker {
186*03f9172cSAndroid Build Coastguard Worker 	if (wpa_s->p2p_mgmt)
187*03f9172cSAndroid Build Coastguard Worker 		return;
188*03f9172cSAndroid Build Coastguard Worker 
189*03f9172cSAndroid Build Coastguard Worker 	wpas_dbus_signal_prop_changed(wpa_s, WPAS_DBUS_PROP_AUTH_STATUS_CODE);
190*03f9172cSAndroid Build Coastguard Worker }
191*03f9172cSAndroid Build Coastguard Worker 
192*03f9172cSAndroid Build Coastguard Worker 
wpas_notify_assoc_status_code(struct wpa_supplicant * wpa_s,const u8 * bssid,u8 timed_out,const u8 * assoc_resp_ie,size_t assoc_resp_ie_len)193*03f9172cSAndroid Build Coastguard Worker void wpas_notify_assoc_status_code(struct wpa_supplicant *wpa_s,
194*03f9172cSAndroid Build Coastguard Worker 				   const u8 *bssid, u8 timed_out,
195*03f9172cSAndroid Build Coastguard Worker 				   const u8 *assoc_resp_ie, size_t assoc_resp_ie_len)
196*03f9172cSAndroid Build Coastguard Worker {
197*03f9172cSAndroid Build Coastguard Worker 	if (wpa_s->p2p_mgmt)
198*03f9172cSAndroid Build Coastguard Worker 		return;
199*03f9172cSAndroid Build Coastguard Worker 
200*03f9172cSAndroid Build Coastguard Worker 	wpas_dbus_signal_prop_changed(wpa_s, WPAS_DBUS_PROP_ASSOC_STATUS_CODE);
201*03f9172cSAndroid Build Coastguard Worker 
202*03f9172cSAndroid Build Coastguard Worker 	wpas_aidl_notify_assoc_reject(wpa_s, bssid, timed_out, assoc_resp_ie, assoc_resp_ie_len);
203*03f9172cSAndroid Build Coastguard Worker }
204*03f9172cSAndroid Build Coastguard Worker 
wpas_notify_auth_timeout(struct wpa_supplicant * wpa_s)205*03f9172cSAndroid Build Coastguard Worker void wpas_notify_auth_timeout(struct wpa_supplicant *wpa_s) {
206*03f9172cSAndroid Build Coastguard Worker 	if (wpa_s->p2p_mgmt)
207*03f9172cSAndroid Build Coastguard Worker 		return;
208*03f9172cSAndroid Build Coastguard Worker 
209*03f9172cSAndroid Build Coastguard Worker 	wpas_aidl_notify_auth_timeout(wpa_s);
210*03f9172cSAndroid Build Coastguard Worker }
211*03f9172cSAndroid Build Coastguard Worker 
wpas_notify_roam_time(struct wpa_supplicant * wpa_s)212*03f9172cSAndroid Build Coastguard Worker void wpas_notify_roam_time(struct wpa_supplicant *wpa_s)
213*03f9172cSAndroid Build Coastguard Worker {
214*03f9172cSAndroid Build Coastguard Worker 	if (wpa_s->p2p_mgmt)
215*03f9172cSAndroid Build Coastguard Worker 		return;
216*03f9172cSAndroid Build Coastguard Worker 
217*03f9172cSAndroid Build Coastguard Worker 	wpas_dbus_signal_prop_changed(wpa_s, WPAS_DBUS_PROP_ROAM_TIME);
218*03f9172cSAndroid Build Coastguard Worker }
219*03f9172cSAndroid Build Coastguard Worker 
220*03f9172cSAndroid Build Coastguard Worker 
wpas_notify_roam_complete(struct wpa_supplicant * wpa_s)221*03f9172cSAndroid Build Coastguard Worker void wpas_notify_roam_complete(struct wpa_supplicant *wpa_s)
222*03f9172cSAndroid Build Coastguard Worker {
223*03f9172cSAndroid Build Coastguard Worker 	if (wpa_s->p2p_mgmt)
224*03f9172cSAndroid Build Coastguard Worker 		return;
225*03f9172cSAndroid Build Coastguard Worker 
226*03f9172cSAndroid Build Coastguard Worker 	wpas_dbus_signal_prop_changed(wpa_s, WPAS_DBUS_PROP_ROAM_COMPLETE);
227*03f9172cSAndroid Build Coastguard Worker }
228*03f9172cSAndroid Build Coastguard Worker 
229*03f9172cSAndroid Build Coastguard Worker 
wpas_notify_scan_in_progress_6ghz(struct wpa_supplicant * wpa_s)230*03f9172cSAndroid Build Coastguard Worker void wpas_notify_scan_in_progress_6ghz(struct wpa_supplicant *wpa_s)
231*03f9172cSAndroid Build Coastguard Worker {
232*03f9172cSAndroid Build Coastguard Worker 	if (wpa_s->p2p_mgmt)
233*03f9172cSAndroid Build Coastguard Worker 		return;
234*03f9172cSAndroid Build Coastguard Worker 
235*03f9172cSAndroid Build Coastguard Worker 	wpas_dbus_signal_prop_changed(wpa_s,
236*03f9172cSAndroid Build Coastguard Worker 				      WPAS_DBUS_PROP_SCAN_IN_PROGRESS_6GHZ);
237*03f9172cSAndroid Build Coastguard Worker }
238*03f9172cSAndroid Build Coastguard Worker 
239*03f9172cSAndroid Build Coastguard Worker 
wpas_notify_session_length(struct wpa_supplicant * wpa_s)240*03f9172cSAndroid Build Coastguard Worker void wpas_notify_session_length(struct wpa_supplicant *wpa_s)
241*03f9172cSAndroid Build Coastguard Worker {
242*03f9172cSAndroid Build Coastguard Worker 	if (wpa_s->p2p_mgmt)
243*03f9172cSAndroid Build Coastguard Worker 		return;
244*03f9172cSAndroid Build Coastguard Worker 
245*03f9172cSAndroid Build Coastguard Worker 	wpas_dbus_signal_prop_changed(wpa_s, WPAS_DBUS_PROP_SESSION_LENGTH);
246*03f9172cSAndroid Build Coastguard Worker }
247*03f9172cSAndroid Build Coastguard Worker 
248*03f9172cSAndroid Build Coastguard Worker 
wpas_notify_bss_tm_status(struct wpa_supplicant * wpa_s)249*03f9172cSAndroid Build Coastguard Worker void wpas_notify_bss_tm_status(struct wpa_supplicant *wpa_s)
250*03f9172cSAndroid Build Coastguard Worker {
251*03f9172cSAndroid Build Coastguard Worker 	if (wpa_s->p2p_mgmt)
252*03f9172cSAndroid Build Coastguard Worker 		return;
253*03f9172cSAndroid Build Coastguard Worker 
254*03f9172cSAndroid Build Coastguard Worker 	wpas_dbus_signal_prop_changed(wpa_s, WPAS_DBUS_PROP_BSS_TM_STATUS);
255*03f9172cSAndroid Build Coastguard Worker 
256*03f9172cSAndroid Build Coastguard Worker #ifdef CONFIG_WNM
257*03f9172cSAndroid Build Coastguard Worker 	wpas_aidl_notify_bss_tm_status(wpa_s);
258*03f9172cSAndroid Build Coastguard Worker #endif
259*03f9172cSAndroid Build Coastguard Worker }
260*03f9172cSAndroid Build Coastguard Worker 
261*03f9172cSAndroid Build Coastguard Worker 
wpas_notify_network_changed(struct wpa_supplicant * wpa_s)262*03f9172cSAndroid Build Coastguard Worker void wpas_notify_network_changed(struct wpa_supplicant *wpa_s)
263*03f9172cSAndroid Build Coastguard Worker {
264*03f9172cSAndroid Build Coastguard Worker 	if (wpa_s->p2p_mgmt)
265*03f9172cSAndroid Build Coastguard Worker 		return;
266*03f9172cSAndroid Build Coastguard Worker 
267*03f9172cSAndroid Build Coastguard Worker 	wpas_dbus_signal_prop_changed(wpa_s, WPAS_DBUS_PROP_CURRENT_NETWORK);
268*03f9172cSAndroid Build Coastguard Worker }
269*03f9172cSAndroid Build Coastguard Worker 
270*03f9172cSAndroid Build Coastguard Worker 
wpas_notify_ap_scan_changed(struct wpa_supplicant * wpa_s)271*03f9172cSAndroid Build Coastguard Worker void wpas_notify_ap_scan_changed(struct wpa_supplicant *wpa_s)
272*03f9172cSAndroid Build Coastguard Worker {
273*03f9172cSAndroid Build Coastguard Worker 	if (wpa_s->p2p_mgmt)
274*03f9172cSAndroid Build Coastguard Worker 		return;
275*03f9172cSAndroid Build Coastguard Worker 
276*03f9172cSAndroid Build Coastguard Worker 	wpas_dbus_signal_prop_changed(wpa_s, WPAS_DBUS_PROP_AP_SCAN);
277*03f9172cSAndroid Build Coastguard Worker }
278*03f9172cSAndroid Build Coastguard Worker 
279*03f9172cSAndroid Build Coastguard Worker 
wpas_notify_bssid_changed(struct wpa_supplicant * wpa_s)280*03f9172cSAndroid Build Coastguard Worker void wpas_notify_bssid_changed(struct wpa_supplicant *wpa_s)
281*03f9172cSAndroid Build Coastguard Worker {
282*03f9172cSAndroid Build Coastguard Worker 	if (wpa_s->p2p_mgmt)
283*03f9172cSAndroid Build Coastguard Worker 		return;
284*03f9172cSAndroid Build Coastguard Worker 
285*03f9172cSAndroid Build Coastguard Worker 	wpas_dbus_signal_prop_changed(wpa_s, WPAS_DBUS_PROP_CURRENT_BSS);
286*03f9172cSAndroid Build Coastguard Worker 
287*03f9172cSAndroid Build Coastguard Worker 	wpas_aidl_notify_bssid_changed(wpa_s);
288*03f9172cSAndroid Build Coastguard Worker }
289*03f9172cSAndroid Build Coastguard Worker 
290*03f9172cSAndroid Build Coastguard Worker 
wpas_notify_mac_address_changed(struct wpa_supplicant * wpa_s)291*03f9172cSAndroid Build Coastguard Worker void wpas_notify_mac_address_changed(struct wpa_supplicant *wpa_s)
292*03f9172cSAndroid Build Coastguard Worker {
293*03f9172cSAndroid Build Coastguard Worker 	if (wpa_s->p2p_mgmt)
294*03f9172cSAndroid Build Coastguard Worker 		return;
295*03f9172cSAndroid Build Coastguard Worker 
296*03f9172cSAndroid Build Coastguard Worker 	wpas_dbus_signal_prop_changed(wpa_s, WPAS_DBUS_PROP_MAC_ADDRESS);
297*03f9172cSAndroid Build Coastguard Worker }
298*03f9172cSAndroid Build Coastguard Worker 
299*03f9172cSAndroid Build Coastguard Worker 
wpas_notify_auth_changed(struct wpa_supplicant * wpa_s)300*03f9172cSAndroid Build Coastguard Worker void wpas_notify_auth_changed(struct wpa_supplicant *wpa_s)
301*03f9172cSAndroid Build Coastguard Worker {
302*03f9172cSAndroid Build Coastguard Worker 	if (wpa_s->p2p_mgmt)
303*03f9172cSAndroid Build Coastguard Worker 		return;
304*03f9172cSAndroid Build Coastguard Worker 
305*03f9172cSAndroid Build Coastguard Worker 	wpas_dbus_signal_prop_changed(wpa_s, WPAS_DBUS_PROP_CURRENT_AUTH_MODE);
306*03f9172cSAndroid Build Coastguard Worker }
307*03f9172cSAndroid Build Coastguard Worker 
308*03f9172cSAndroid Build Coastguard Worker 
wpas_notify_network_enabled_changed(struct wpa_supplicant * wpa_s,struct wpa_ssid * ssid)309*03f9172cSAndroid Build Coastguard Worker void wpas_notify_network_enabled_changed(struct wpa_supplicant *wpa_s,
310*03f9172cSAndroid Build Coastguard Worker 					 struct wpa_ssid *ssid)
311*03f9172cSAndroid Build Coastguard Worker {
312*03f9172cSAndroid Build Coastguard Worker 	if (wpa_s->p2p_mgmt)
313*03f9172cSAndroid Build Coastguard Worker 		return;
314*03f9172cSAndroid Build Coastguard Worker 
315*03f9172cSAndroid Build Coastguard Worker 	wpas_dbus_signal_network_enabled_changed(wpa_s, ssid);
316*03f9172cSAndroid Build Coastguard Worker }
317*03f9172cSAndroid Build Coastguard Worker 
318*03f9172cSAndroid Build Coastguard Worker 
wpas_notify_network_selected(struct wpa_supplicant * wpa_s,struct wpa_ssid * ssid)319*03f9172cSAndroid Build Coastguard Worker void wpas_notify_network_selected(struct wpa_supplicant *wpa_s,
320*03f9172cSAndroid Build Coastguard Worker 				  struct wpa_ssid *ssid)
321*03f9172cSAndroid Build Coastguard Worker {
322*03f9172cSAndroid Build Coastguard Worker 	if (wpa_s->p2p_mgmt)
323*03f9172cSAndroid Build Coastguard Worker 		return;
324*03f9172cSAndroid Build Coastguard Worker 
325*03f9172cSAndroid Build Coastguard Worker 	wpas_dbus_signal_network_selected(wpa_s, ssid->id);
326*03f9172cSAndroid Build Coastguard Worker }
327*03f9172cSAndroid Build Coastguard Worker 
328*03f9172cSAndroid Build Coastguard Worker 
wpas_notify_network_request(struct wpa_supplicant * wpa_s,struct wpa_ssid * ssid,enum wpa_ctrl_req_type rtype,const char * default_txt)329*03f9172cSAndroid Build Coastguard Worker void wpas_notify_network_request(struct wpa_supplicant *wpa_s,
330*03f9172cSAndroid Build Coastguard Worker 				 struct wpa_ssid *ssid,
331*03f9172cSAndroid Build Coastguard Worker 				 enum wpa_ctrl_req_type rtype,
332*03f9172cSAndroid Build Coastguard Worker 				 const char *default_txt)
333*03f9172cSAndroid Build Coastguard Worker {
334*03f9172cSAndroid Build Coastguard Worker 	if (wpa_s->p2p_mgmt)
335*03f9172cSAndroid Build Coastguard Worker 		return;
336*03f9172cSAndroid Build Coastguard Worker 
337*03f9172cSAndroid Build Coastguard Worker 	wpas_dbus_signal_network_request(wpa_s, ssid, rtype, default_txt);
338*03f9172cSAndroid Build Coastguard Worker 
339*03f9172cSAndroid Build Coastguard Worker 	wpas_aidl_notify_network_request(wpa_s, ssid, rtype, default_txt);
340*03f9172cSAndroid Build Coastguard Worker }
341*03f9172cSAndroid Build Coastguard Worker 
342*03f9172cSAndroid Build Coastguard Worker 
wpas_notify_permanent_id_req_denied(struct wpa_supplicant * wpa_s)343*03f9172cSAndroid Build Coastguard Worker void wpas_notify_permanent_id_req_denied(struct wpa_supplicant *wpa_s)
344*03f9172cSAndroid Build Coastguard Worker {
345*03f9172cSAndroid Build Coastguard Worker 	wpas_aidl_notify_permanent_id_req_denied(wpa_s);
346*03f9172cSAndroid Build Coastguard Worker }
347*03f9172cSAndroid Build Coastguard Worker 
348*03f9172cSAndroid Build Coastguard Worker 
wpas_notify_scanning(struct wpa_supplicant * wpa_s)349*03f9172cSAndroid Build Coastguard Worker void wpas_notify_scanning(struct wpa_supplicant *wpa_s)
350*03f9172cSAndroid Build Coastguard Worker {
351*03f9172cSAndroid Build Coastguard Worker 	if (wpa_s->p2p_mgmt)
352*03f9172cSAndroid Build Coastguard Worker 		return;
353*03f9172cSAndroid Build Coastguard Worker 
354*03f9172cSAndroid Build Coastguard Worker 	/* notify the new DBus API */
355*03f9172cSAndroid Build Coastguard Worker 	wpas_dbus_signal_prop_changed(wpa_s, WPAS_DBUS_PROP_SCANNING);
356*03f9172cSAndroid Build Coastguard Worker }
357*03f9172cSAndroid Build Coastguard Worker 
358*03f9172cSAndroid Build Coastguard Worker 
wpas_notify_scan_done(struct wpa_supplicant * wpa_s,int success)359*03f9172cSAndroid Build Coastguard Worker void wpas_notify_scan_done(struct wpa_supplicant *wpa_s, int success)
360*03f9172cSAndroid Build Coastguard Worker {
361*03f9172cSAndroid Build Coastguard Worker 	if (wpa_s->p2p_mgmt)
362*03f9172cSAndroid Build Coastguard Worker 		return;
363*03f9172cSAndroid Build Coastguard Worker 
364*03f9172cSAndroid Build Coastguard Worker 	wpas_dbus_signal_scan_done(wpa_s, success);
365*03f9172cSAndroid Build Coastguard Worker }
366*03f9172cSAndroid Build Coastguard Worker 
367*03f9172cSAndroid Build Coastguard Worker 
wpas_notify_scan_results(struct wpa_supplicant * wpa_s)368*03f9172cSAndroid Build Coastguard Worker void wpas_notify_scan_results(struct wpa_supplicant *wpa_s)
369*03f9172cSAndroid Build Coastguard Worker {
370*03f9172cSAndroid Build Coastguard Worker 	if (wpa_s->p2p_mgmt)
371*03f9172cSAndroid Build Coastguard Worker 		return;
372*03f9172cSAndroid Build Coastguard Worker 
373*03f9172cSAndroid Build Coastguard Worker 	wpas_wps_notify_scan_results(wpa_s);
374*03f9172cSAndroid Build Coastguard Worker }
375*03f9172cSAndroid Build Coastguard Worker 
376*03f9172cSAndroid Build Coastguard Worker 
wpas_notify_wps_credential(struct wpa_supplicant * wpa_s,const struct wps_credential * cred)377*03f9172cSAndroid Build Coastguard Worker void wpas_notify_wps_credential(struct wpa_supplicant *wpa_s,
378*03f9172cSAndroid Build Coastguard Worker 				const struct wps_credential *cred)
379*03f9172cSAndroid Build Coastguard Worker {
380*03f9172cSAndroid Build Coastguard Worker 	if (wpa_s->p2p_mgmt)
381*03f9172cSAndroid Build Coastguard Worker 		return;
382*03f9172cSAndroid Build Coastguard Worker 
383*03f9172cSAndroid Build Coastguard Worker #ifdef CONFIG_WPS
384*03f9172cSAndroid Build Coastguard Worker 	/* notify the new DBus API */
385*03f9172cSAndroid Build Coastguard Worker 	wpas_dbus_signal_wps_cred(wpa_s, cred);
386*03f9172cSAndroid Build Coastguard Worker #endif /* CONFIG_WPS */
387*03f9172cSAndroid Build Coastguard Worker }
388*03f9172cSAndroid Build Coastguard Worker 
389*03f9172cSAndroid Build Coastguard Worker 
wpas_notify_wps_event_m2d(struct wpa_supplicant * wpa_s,struct wps_event_m2d * m2d)390*03f9172cSAndroid Build Coastguard Worker void wpas_notify_wps_event_m2d(struct wpa_supplicant *wpa_s,
391*03f9172cSAndroid Build Coastguard Worker 			       struct wps_event_m2d *m2d)
392*03f9172cSAndroid Build Coastguard Worker {
393*03f9172cSAndroid Build Coastguard Worker 	if (wpa_s->p2p_mgmt)
394*03f9172cSAndroid Build Coastguard Worker 		return;
395*03f9172cSAndroid Build Coastguard Worker 
396*03f9172cSAndroid Build Coastguard Worker #ifdef CONFIG_WPS
397*03f9172cSAndroid Build Coastguard Worker 	wpas_dbus_signal_wps_event_m2d(wpa_s, m2d);
398*03f9172cSAndroid Build Coastguard Worker #endif /* CONFIG_WPS */
399*03f9172cSAndroid Build Coastguard Worker }
400*03f9172cSAndroid Build Coastguard Worker 
401*03f9172cSAndroid Build Coastguard Worker 
wpas_notify_wps_event_fail(struct wpa_supplicant * wpa_s,struct wps_event_fail * fail)402*03f9172cSAndroid Build Coastguard Worker void wpas_notify_wps_event_fail(struct wpa_supplicant *wpa_s,
403*03f9172cSAndroid Build Coastguard Worker 				struct wps_event_fail *fail)
404*03f9172cSAndroid Build Coastguard Worker {
405*03f9172cSAndroid Build Coastguard Worker 	if (wpa_s->p2p_mgmt)
406*03f9172cSAndroid Build Coastguard Worker 		return;
407*03f9172cSAndroid Build Coastguard Worker 
408*03f9172cSAndroid Build Coastguard Worker #ifdef CONFIG_WPS
409*03f9172cSAndroid Build Coastguard Worker 	wpas_dbus_signal_wps_event_fail(wpa_s, fail);
410*03f9172cSAndroid Build Coastguard Worker 
411*03f9172cSAndroid Build Coastguard Worker 	wpas_aidl_notify_wps_event_fail(wpa_s, fail->peer_macaddr,
412*03f9172cSAndroid Build Coastguard Worker 					fail->config_error,
413*03f9172cSAndroid Build Coastguard Worker 					fail->error_indication);
414*03f9172cSAndroid Build Coastguard Worker #endif /* CONFIG_WPS */
415*03f9172cSAndroid Build Coastguard Worker }
416*03f9172cSAndroid Build Coastguard Worker 
417*03f9172cSAndroid Build Coastguard Worker 
wpas_notify_wps_event_success(struct wpa_supplicant * wpa_s)418*03f9172cSAndroid Build Coastguard Worker void wpas_notify_wps_event_success(struct wpa_supplicant *wpa_s)
419*03f9172cSAndroid Build Coastguard Worker {
420*03f9172cSAndroid Build Coastguard Worker 	if (wpa_s->p2p_mgmt)
421*03f9172cSAndroid Build Coastguard Worker 		return;
422*03f9172cSAndroid Build Coastguard Worker 
423*03f9172cSAndroid Build Coastguard Worker #ifdef CONFIG_WPS
424*03f9172cSAndroid Build Coastguard Worker 	wpas_dbus_signal_wps_event_success(wpa_s);
425*03f9172cSAndroid Build Coastguard Worker 
426*03f9172cSAndroid Build Coastguard Worker 	wpas_aidl_notify_wps_event_success(wpa_s);
427*03f9172cSAndroid Build Coastguard Worker #endif /* CONFIG_WPS */
428*03f9172cSAndroid Build Coastguard Worker }
429*03f9172cSAndroid Build Coastguard Worker 
wpas_notify_wps_event_pbc_overlap(struct wpa_supplicant * wpa_s)430*03f9172cSAndroid Build Coastguard Worker void wpas_notify_wps_event_pbc_overlap(struct wpa_supplicant *wpa_s)
431*03f9172cSAndroid Build Coastguard Worker {
432*03f9172cSAndroid Build Coastguard Worker 	if (wpa_s->p2p_mgmt)
433*03f9172cSAndroid Build Coastguard Worker 		return;
434*03f9172cSAndroid Build Coastguard Worker 
435*03f9172cSAndroid Build Coastguard Worker #ifdef CONFIG_WPS
436*03f9172cSAndroid Build Coastguard Worker 	wpas_dbus_signal_wps_event_pbc_overlap(wpa_s);
437*03f9172cSAndroid Build Coastguard Worker 
438*03f9172cSAndroid Build Coastguard Worker 	wpas_aidl_notify_wps_event_pbc_overlap(wpa_s);
439*03f9172cSAndroid Build Coastguard Worker #endif /* CONFIG_WPS */
440*03f9172cSAndroid Build Coastguard Worker }
441*03f9172cSAndroid Build Coastguard Worker 
442*03f9172cSAndroid Build Coastguard Worker 
wpas_notify_network_added(struct wpa_supplicant * wpa_s,struct wpa_ssid * ssid)443*03f9172cSAndroid Build Coastguard Worker void wpas_notify_network_added(struct wpa_supplicant *wpa_s,
444*03f9172cSAndroid Build Coastguard Worker 			       struct wpa_ssid *ssid)
445*03f9172cSAndroid Build Coastguard Worker {
446*03f9172cSAndroid Build Coastguard Worker 	if (wpa_s->p2p_mgmt)
447*03f9172cSAndroid Build Coastguard Worker 		return;
448*03f9172cSAndroid Build Coastguard Worker 
449*03f9172cSAndroid Build Coastguard Worker 	/*
450*03f9172cSAndroid Build Coastguard Worker 	 * Networks objects created during any P2P activities should not be
451*03f9172cSAndroid Build Coastguard Worker 	 * exposed out. They might/will confuse certain non-P2P aware
452*03f9172cSAndroid Build Coastguard Worker 	 * applications since these network objects won't behave like
453*03f9172cSAndroid Build Coastguard Worker 	 * regular ones.
454*03f9172cSAndroid Build Coastguard Worker 	 */
455*03f9172cSAndroid Build Coastguard Worker 	if (!ssid->p2p_group && wpa_s->global->p2p_group_formation != wpa_s) {
456*03f9172cSAndroid Build Coastguard Worker 		wpas_dbus_register_network(wpa_s, ssid);
457*03f9172cSAndroid Build Coastguard Worker 		wpas_aidl_register_network(wpa_s, ssid);
458*03f9172cSAndroid Build Coastguard Worker 		wpa_msg_ctrl(wpa_s, MSG_INFO, WPA_EVENT_NETWORK_ADDED "%d",
459*03f9172cSAndroid Build Coastguard Worker 			     ssid->id);
460*03f9172cSAndroid Build Coastguard Worker 	}
461*03f9172cSAndroid Build Coastguard Worker }
462*03f9172cSAndroid Build Coastguard Worker 
463*03f9172cSAndroid Build Coastguard Worker 
wpas_notify_persistent_group_added(struct wpa_supplicant * wpa_s,struct wpa_ssid * ssid)464*03f9172cSAndroid Build Coastguard Worker void wpas_notify_persistent_group_added(struct wpa_supplicant *wpa_s,
465*03f9172cSAndroid Build Coastguard Worker 					struct wpa_ssid *ssid)
466*03f9172cSAndroid Build Coastguard Worker {
467*03f9172cSAndroid Build Coastguard Worker #ifdef CONFIG_P2P
468*03f9172cSAndroid Build Coastguard Worker 	wpas_dbus_register_persistent_group(wpa_s, ssid);
469*03f9172cSAndroid Build Coastguard Worker 	wpas_aidl_register_network(wpa_s, ssid);
470*03f9172cSAndroid Build Coastguard Worker #endif /* CONFIG_P2P */
471*03f9172cSAndroid Build Coastguard Worker }
472*03f9172cSAndroid Build Coastguard Worker 
473*03f9172cSAndroid Build Coastguard Worker 
wpas_notify_persistent_group_removed(struct wpa_supplicant * wpa_s,struct wpa_ssid * ssid)474*03f9172cSAndroid Build Coastguard Worker void wpas_notify_persistent_group_removed(struct wpa_supplicant *wpa_s,
475*03f9172cSAndroid Build Coastguard Worker 					  struct wpa_ssid *ssid)
476*03f9172cSAndroid Build Coastguard Worker {
477*03f9172cSAndroid Build Coastguard Worker #ifdef CONFIG_P2P
478*03f9172cSAndroid Build Coastguard Worker 	wpas_dbus_unregister_persistent_group(wpa_s, ssid->id);
479*03f9172cSAndroid Build Coastguard Worker 	wpas_aidl_unregister_network(wpa_s, ssid);
480*03f9172cSAndroid Build Coastguard Worker #endif /* CONFIG_P2P */
481*03f9172cSAndroid Build Coastguard Worker }
482*03f9172cSAndroid Build Coastguard Worker 
483*03f9172cSAndroid Build Coastguard Worker 
wpas_notify_network_removed(struct wpa_supplicant * wpa_s,struct wpa_ssid * ssid)484*03f9172cSAndroid Build Coastguard Worker void wpas_notify_network_removed(struct wpa_supplicant *wpa_s,
485*03f9172cSAndroid Build Coastguard Worker 				 struct wpa_ssid *ssid)
486*03f9172cSAndroid Build Coastguard Worker {
487*03f9172cSAndroid Build Coastguard Worker 	if (wpa_s->next_ssid == ssid)
488*03f9172cSAndroid Build Coastguard Worker 		wpa_s->next_ssid = NULL;
489*03f9172cSAndroid Build Coastguard Worker 	if (wpa_s->last_ssid == ssid)
490*03f9172cSAndroid Build Coastguard Worker 		wpa_s->last_ssid = NULL;
491*03f9172cSAndroid Build Coastguard Worker 	if (wpa_s->current_ssid == ssid)
492*03f9172cSAndroid Build Coastguard Worker 		wpa_s->current_ssid = NULL;
493*03f9172cSAndroid Build Coastguard Worker 	if (wpa_s->ml_connect_probe_ssid == ssid) {
494*03f9172cSAndroid Build Coastguard Worker 		wpa_s->ml_connect_probe_ssid = NULL;
495*03f9172cSAndroid Build Coastguard Worker 		wpa_s->ml_connect_probe_bss = NULL;
496*03f9172cSAndroid Build Coastguard Worker 	}
497*03f9172cSAndroid Build Coastguard Worker 	if (wpa_s->connect_without_scan == ssid)
498*03f9172cSAndroid Build Coastguard Worker 		wpa_s->connect_without_scan = NULL;
499*03f9172cSAndroid Build Coastguard Worker #if defined(CONFIG_SME) && defined(CONFIG_SAE)
500*03f9172cSAndroid Build Coastguard Worker 	if (wpa_s->sme.ext_auth_wpa_ssid == ssid)
501*03f9172cSAndroid Build Coastguard Worker 		wpa_s->sme.ext_auth_wpa_ssid = NULL;
502*03f9172cSAndroid Build Coastguard Worker #endif /* CONFIG_SME && CONFIG_SAE */
503*03f9172cSAndroid Build Coastguard Worker 	if (wpa_s->wpa) {
504*03f9172cSAndroid Build Coastguard Worker 		if ((wpa_key_mgmt_sae(ssid->key_mgmt) &&
505*03f9172cSAndroid Build Coastguard Worker 		     (wpa_s->drv_flags2 & WPA_DRIVER_FLAGS2_SAE_OFFLOAD_STA)) ||
506*03f9172cSAndroid Build Coastguard Worker 		    ((ssid->key_mgmt & WPA_KEY_MGMT_OWE) &&
507*03f9172cSAndroid Build Coastguard Worker 		     (wpa_s->drv_flags2 & WPA_DRIVER_FLAGS2_OWE_OFFLOAD_STA))) {
508*03f9172cSAndroid Build Coastguard Worker 			/* For cases when PMK is generated at the driver */
509*03f9172cSAndroid Build Coastguard Worker 			struct wpa_pmkid_params params;
510*03f9172cSAndroid Build Coastguard Worker 
511*03f9172cSAndroid Build Coastguard Worker 			os_memset(&params, 0, sizeof(params));
512*03f9172cSAndroid Build Coastguard Worker 			params.ssid = ssid->ssid;
513*03f9172cSAndroid Build Coastguard Worker 			params.ssid_len = ssid->ssid_len;
514*03f9172cSAndroid Build Coastguard Worker 			wpa_drv_remove_pmkid(wpa_s, &params);
515*03f9172cSAndroid Build Coastguard Worker 		}
516*03f9172cSAndroid Build Coastguard Worker 		wpa_sm_pmksa_cache_flush(wpa_s->wpa, ssid);
517*03f9172cSAndroid Build Coastguard Worker 	}
518*03f9172cSAndroid Build Coastguard Worker 	if (!ssid->p2p_group && wpa_s->global->p2p_group_formation != wpa_s &&
519*03f9172cSAndroid Build Coastguard Worker 	    !wpa_s->p2p_mgmt) {
520*03f9172cSAndroid Build Coastguard Worker 		wpas_dbus_unregister_network(wpa_s, ssid->id);
521*03f9172cSAndroid Build Coastguard Worker 		wpas_aidl_unregister_network(wpa_s, ssid);
522*03f9172cSAndroid Build Coastguard Worker 		wpa_msg_ctrl(wpa_s, MSG_INFO, WPA_EVENT_NETWORK_REMOVED "%d",
523*03f9172cSAndroid Build Coastguard Worker 			     ssid->id);
524*03f9172cSAndroid Build Coastguard Worker 	}
525*03f9172cSAndroid Build Coastguard Worker 	if (network_is_persistent_group(ssid))
526*03f9172cSAndroid Build Coastguard Worker 		wpas_notify_persistent_group_removed(wpa_s, ssid);
527*03f9172cSAndroid Build Coastguard Worker 
528*03f9172cSAndroid Build Coastguard Worker 	wpas_p2p_network_removed(wpa_s, ssid);
529*03f9172cSAndroid Build Coastguard Worker }
530*03f9172cSAndroid Build Coastguard Worker 
531*03f9172cSAndroid Build Coastguard Worker 
wpas_notify_bss_added(struct wpa_supplicant * wpa_s,u8 bssid[],unsigned int id)532*03f9172cSAndroid Build Coastguard Worker void wpas_notify_bss_added(struct wpa_supplicant *wpa_s,
533*03f9172cSAndroid Build Coastguard Worker 			   u8 bssid[], unsigned int id)
534*03f9172cSAndroid Build Coastguard Worker {
535*03f9172cSAndroid Build Coastguard Worker 	if (wpa_s->p2p_mgmt)
536*03f9172cSAndroid Build Coastguard Worker 		return;
537*03f9172cSAndroid Build Coastguard Worker 
538*03f9172cSAndroid Build Coastguard Worker 	wpas_dbus_register_bss(wpa_s, bssid, id);
539*03f9172cSAndroid Build Coastguard Worker 	wpa_msg_ctrl(wpa_s, MSG_INFO, WPA_EVENT_BSS_ADDED "%u " MACSTR,
540*03f9172cSAndroid Build Coastguard Worker 		     id, MAC2STR(bssid));
541*03f9172cSAndroid Build Coastguard Worker }
542*03f9172cSAndroid Build Coastguard Worker 
543*03f9172cSAndroid Build Coastguard Worker 
wpas_notify_bss_removed(struct wpa_supplicant * wpa_s,u8 bssid[],unsigned int id)544*03f9172cSAndroid Build Coastguard Worker void wpas_notify_bss_removed(struct wpa_supplicant *wpa_s,
545*03f9172cSAndroid Build Coastguard Worker 			     u8 bssid[], unsigned int id)
546*03f9172cSAndroid Build Coastguard Worker {
547*03f9172cSAndroid Build Coastguard Worker 	if (wpa_s->p2p_mgmt)
548*03f9172cSAndroid Build Coastguard Worker 		return;
549*03f9172cSAndroid Build Coastguard Worker 
550*03f9172cSAndroid Build Coastguard Worker 	wpas_dbus_unregister_bss(wpa_s, bssid, id);
551*03f9172cSAndroid Build Coastguard Worker 	wpa_msg_ctrl(wpa_s, MSG_INFO, WPA_EVENT_BSS_REMOVED "%u " MACSTR,
552*03f9172cSAndroid Build Coastguard Worker 		     id, MAC2STR(bssid));
553*03f9172cSAndroid Build Coastguard Worker }
554*03f9172cSAndroid Build Coastguard Worker 
555*03f9172cSAndroid Build Coastguard Worker 
wpas_notify_bss_freq_changed(struct wpa_supplicant * wpa_s,unsigned int id)556*03f9172cSAndroid Build Coastguard Worker void wpas_notify_bss_freq_changed(struct wpa_supplicant *wpa_s,
557*03f9172cSAndroid Build Coastguard Worker 				  unsigned int id)
558*03f9172cSAndroid Build Coastguard Worker {
559*03f9172cSAndroid Build Coastguard Worker 	if (wpa_s->p2p_mgmt)
560*03f9172cSAndroid Build Coastguard Worker 		return;
561*03f9172cSAndroid Build Coastguard Worker 
562*03f9172cSAndroid Build Coastguard Worker 	wpas_dbus_bss_signal_prop_changed(wpa_s, WPAS_DBUS_BSS_PROP_FREQ, id);
563*03f9172cSAndroid Build Coastguard Worker }
564*03f9172cSAndroid Build Coastguard Worker 
565*03f9172cSAndroid Build Coastguard Worker 
wpas_notify_bss_signal_changed(struct wpa_supplicant * wpa_s,unsigned int id)566*03f9172cSAndroid Build Coastguard Worker void wpas_notify_bss_signal_changed(struct wpa_supplicant *wpa_s,
567*03f9172cSAndroid Build Coastguard Worker 				    unsigned int id)
568*03f9172cSAndroid Build Coastguard Worker {
569*03f9172cSAndroid Build Coastguard Worker 	if (wpa_s->p2p_mgmt)
570*03f9172cSAndroid Build Coastguard Worker 		return;
571*03f9172cSAndroid Build Coastguard Worker 
572*03f9172cSAndroid Build Coastguard Worker 	wpas_dbus_bss_signal_prop_changed(wpa_s, WPAS_DBUS_BSS_PROP_SIGNAL,
573*03f9172cSAndroid Build Coastguard Worker 					  id);
574*03f9172cSAndroid Build Coastguard Worker }
575*03f9172cSAndroid Build Coastguard Worker 
576*03f9172cSAndroid Build Coastguard Worker 
wpas_notify_bss_privacy_changed(struct wpa_supplicant * wpa_s,unsigned int id)577*03f9172cSAndroid Build Coastguard Worker void wpas_notify_bss_privacy_changed(struct wpa_supplicant *wpa_s,
578*03f9172cSAndroid Build Coastguard Worker 				     unsigned int id)
579*03f9172cSAndroid Build Coastguard Worker {
580*03f9172cSAndroid Build Coastguard Worker 	if (wpa_s->p2p_mgmt)
581*03f9172cSAndroid Build Coastguard Worker 		return;
582*03f9172cSAndroid Build Coastguard Worker 
583*03f9172cSAndroid Build Coastguard Worker 	wpas_dbus_bss_signal_prop_changed(wpa_s, WPAS_DBUS_BSS_PROP_PRIVACY,
584*03f9172cSAndroid Build Coastguard Worker 					  id);
585*03f9172cSAndroid Build Coastguard Worker }
586*03f9172cSAndroid Build Coastguard Worker 
587*03f9172cSAndroid Build Coastguard Worker 
wpas_notify_bss_mode_changed(struct wpa_supplicant * wpa_s,unsigned int id)588*03f9172cSAndroid Build Coastguard Worker void wpas_notify_bss_mode_changed(struct wpa_supplicant *wpa_s,
589*03f9172cSAndroid Build Coastguard Worker 				  unsigned int id)
590*03f9172cSAndroid Build Coastguard Worker {
591*03f9172cSAndroid Build Coastguard Worker 	if (wpa_s->p2p_mgmt)
592*03f9172cSAndroid Build Coastguard Worker 		return;
593*03f9172cSAndroid Build Coastguard Worker 
594*03f9172cSAndroid Build Coastguard Worker 	wpas_dbus_bss_signal_prop_changed(wpa_s, WPAS_DBUS_BSS_PROP_MODE, id);
595*03f9172cSAndroid Build Coastguard Worker }
596*03f9172cSAndroid Build Coastguard Worker 
597*03f9172cSAndroid Build Coastguard Worker 
wpas_notify_bss_wpaie_changed(struct wpa_supplicant * wpa_s,unsigned int id)598*03f9172cSAndroid Build Coastguard Worker void wpas_notify_bss_wpaie_changed(struct wpa_supplicant *wpa_s,
599*03f9172cSAndroid Build Coastguard Worker 				   unsigned int id)
600*03f9172cSAndroid Build Coastguard Worker {
601*03f9172cSAndroid Build Coastguard Worker 	if (wpa_s->p2p_mgmt)
602*03f9172cSAndroid Build Coastguard Worker 		return;
603*03f9172cSAndroid Build Coastguard Worker 
604*03f9172cSAndroid Build Coastguard Worker 	wpas_dbus_bss_signal_prop_changed(wpa_s, WPAS_DBUS_BSS_PROP_WPA, id);
605*03f9172cSAndroid Build Coastguard Worker }
606*03f9172cSAndroid Build Coastguard Worker 
607*03f9172cSAndroid Build Coastguard Worker 
wpas_notify_bss_rsnie_changed(struct wpa_supplicant * wpa_s,unsigned int id)608*03f9172cSAndroid Build Coastguard Worker void wpas_notify_bss_rsnie_changed(struct wpa_supplicant *wpa_s,
609*03f9172cSAndroid Build Coastguard Worker 				   unsigned int id)
610*03f9172cSAndroid Build Coastguard Worker {
611*03f9172cSAndroid Build Coastguard Worker 	if (wpa_s->p2p_mgmt)
612*03f9172cSAndroid Build Coastguard Worker 		return;
613*03f9172cSAndroid Build Coastguard Worker 
614*03f9172cSAndroid Build Coastguard Worker 	wpas_dbus_bss_signal_prop_changed(wpa_s, WPAS_DBUS_BSS_PROP_RSN, id);
615*03f9172cSAndroid Build Coastguard Worker }
616*03f9172cSAndroid Build Coastguard Worker 
617*03f9172cSAndroid Build Coastguard Worker 
wpas_notify_bss_wps_changed(struct wpa_supplicant * wpa_s,unsigned int id)618*03f9172cSAndroid Build Coastguard Worker void wpas_notify_bss_wps_changed(struct wpa_supplicant *wpa_s,
619*03f9172cSAndroid Build Coastguard Worker 				 unsigned int id)
620*03f9172cSAndroid Build Coastguard Worker {
621*03f9172cSAndroid Build Coastguard Worker 	if (wpa_s->p2p_mgmt)
622*03f9172cSAndroid Build Coastguard Worker 		return;
623*03f9172cSAndroid Build Coastguard Worker 
624*03f9172cSAndroid Build Coastguard Worker #ifdef CONFIG_WPS
625*03f9172cSAndroid Build Coastguard Worker 	wpas_dbus_bss_signal_prop_changed(wpa_s, WPAS_DBUS_BSS_PROP_WPS, id);
626*03f9172cSAndroid Build Coastguard Worker #endif /* CONFIG_WPS */
627*03f9172cSAndroid Build Coastguard Worker }
628*03f9172cSAndroid Build Coastguard Worker 
629*03f9172cSAndroid Build Coastguard Worker 
wpas_notify_bss_ies_changed(struct wpa_supplicant * wpa_s,unsigned int id)630*03f9172cSAndroid Build Coastguard Worker void wpas_notify_bss_ies_changed(struct wpa_supplicant *wpa_s,
631*03f9172cSAndroid Build Coastguard Worker 				   unsigned int id)
632*03f9172cSAndroid Build Coastguard Worker {
633*03f9172cSAndroid Build Coastguard Worker 	if (wpa_s->p2p_mgmt)
634*03f9172cSAndroid Build Coastguard Worker 		return;
635*03f9172cSAndroid Build Coastguard Worker 
636*03f9172cSAndroid Build Coastguard Worker 	wpas_dbus_bss_signal_prop_changed(wpa_s, WPAS_DBUS_BSS_PROP_IES, id);
637*03f9172cSAndroid Build Coastguard Worker }
638*03f9172cSAndroid Build Coastguard Worker 
639*03f9172cSAndroid Build Coastguard Worker 
wpas_notify_bss_rates_changed(struct wpa_supplicant * wpa_s,unsigned int id)640*03f9172cSAndroid Build Coastguard Worker void wpas_notify_bss_rates_changed(struct wpa_supplicant *wpa_s,
641*03f9172cSAndroid Build Coastguard Worker 				   unsigned int id)
642*03f9172cSAndroid Build Coastguard Worker {
643*03f9172cSAndroid Build Coastguard Worker 	if (wpa_s->p2p_mgmt)
644*03f9172cSAndroid Build Coastguard Worker 		return;
645*03f9172cSAndroid Build Coastguard Worker 
646*03f9172cSAndroid Build Coastguard Worker 	wpas_dbus_bss_signal_prop_changed(wpa_s, WPAS_DBUS_BSS_PROP_RATES, id);
647*03f9172cSAndroid Build Coastguard Worker }
648*03f9172cSAndroid Build Coastguard Worker 
649*03f9172cSAndroid Build Coastguard Worker 
wpas_notify_bss_seen(struct wpa_supplicant * wpa_s,unsigned int id)650*03f9172cSAndroid Build Coastguard Worker void wpas_notify_bss_seen(struct wpa_supplicant *wpa_s, unsigned int id)
651*03f9172cSAndroid Build Coastguard Worker {
652*03f9172cSAndroid Build Coastguard Worker 	if (wpa_s->p2p_mgmt)
653*03f9172cSAndroid Build Coastguard Worker 		return;
654*03f9172cSAndroid Build Coastguard Worker 
655*03f9172cSAndroid Build Coastguard Worker 	wpas_dbus_bss_signal_prop_changed(wpa_s, WPAS_DBUS_BSS_PROP_AGE, id);
656*03f9172cSAndroid Build Coastguard Worker }
657*03f9172cSAndroid Build Coastguard Worker 
658*03f9172cSAndroid Build Coastguard Worker 
wpas_notify_bss_anqp_changed(struct wpa_supplicant * wpa_s,unsigned int id)659*03f9172cSAndroid Build Coastguard Worker void wpas_notify_bss_anqp_changed(struct wpa_supplicant *wpa_s, unsigned int id)
660*03f9172cSAndroid Build Coastguard Worker {
661*03f9172cSAndroid Build Coastguard Worker 	if (wpa_s->p2p_mgmt)
662*03f9172cSAndroid Build Coastguard Worker 		return;
663*03f9172cSAndroid Build Coastguard Worker 
664*03f9172cSAndroid Build Coastguard Worker 	wpas_dbus_bss_signal_prop_changed(wpa_s, WPAS_DBUS_BSS_PROP_ANQP, id);
665*03f9172cSAndroid Build Coastguard Worker }
666*03f9172cSAndroid Build Coastguard Worker 
667*03f9172cSAndroid Build Coastguard Worker 
wpas_notify_blob_added(struct wpa_supplicant * wpa_s,const char * name)668*03f9172cSAndroid Build Coastguard Worker void wpas_notify_blob_added(struct wpa_supplicant *wpa_s, const char *name)
669*03f9172cSAndroid Build Coastguard Worker {
670*03f9172cSAndroid Build Coastguard Worker 	if (wpa_s->p2p_mgmt)
671*03f9172cSAndroid Build Coastguard Worker 		return;
672*03f9172cSAndroid Build Coastguard Worker 
673*03f9172cSAndroid Build Coastguard Worker 	wpas_dbus_signal_blob_added(wpa_s, name);
674*03f9172cSAndroid Build Coastguard Worker }
675*03f9172cSAndroid Build Coastguard Worker 
676*03f9172cSAndroid Build Coastguard Worker 
wpas_notify_blob_removed(struct wpa_supplicant * wpa_s,const char * name)677*03f9172cSAndroid Build Coastguard Worker void wpas_notify_blob_removed(struct wpa_supplicant *wpa_s, const char *name)
678*03f9172cSAndroid Build Coastguard Worker {
679*03f9172cSAndroid Build Coastguard Worker 	if (wpa_s->p2p_mgmt)
680*03f9172cSAndroid Build Coastguard Worker 		return;
681*03f9172cSAndroid Build Coastguard Worker 
682*03f9172cSAndroid Build Coastguard Worker 	wpas_dbus_signal_blob_removed(wpa_s, name);
683*03f9172cSAndroid Build Coastguard Worker }
684*03f9172cSAndroid Build Coastguard Worker 
685*03f9172cSAndroid Build Coastguard Worker 
wpas_notify_debug_level_changed(struct wpa_global * global)686*03f9172cSAndroid Build Coastguard Worker void wpas_notify_debug_level_changed(struct wpa_global *global)
687*03f9172cSAndroid Build Coastguard Worker {
688*03f9172cSAndroid Build Coastguard Worker 	wpas_dbus_signal_debug_level_changed(global);
689*03f9172cSAndroid Build Coastguard Worker }
690*03f9172cSAndroid Build Coastguard Worker 
691*03f9172cSAndroid Build Coastguard Worker 
wpas_notify_debug_timestamp_changed(struct wpa_global * global)692*03f9172cSAndroid Build Coastguard Worker void wpas_notify_debug_timestamp_changed(struct wpa_global *global)
693*03f9172cSAndroid Build Coastguard Worker {
694*03f9172cSAndroid Build Coastguard Worker 	wpas_dbus_signal_debug_timestamp_changed(global);
695*03f9172cSAndroid Build Coastguard Worker }
696*03f9172cSAndroid Build Coastguard Worker 
697*03f9172cSAndroid Build Coastguard Worker 
wpas_notify_debug_show_keys_changed(struct wpa_global * global)698*03f9172cSAndroid Build Coastguard Worker void wpas_notify_debug_show_keys_changed(struct wpa_global *global)
699*03f9172cSAndroid Build Coastguard Worker {
700*03f9172cSAndroid Build Coastguard Worker 	wpas_dbus_signal_debug_show_keys_changed(global);
701*03f9172cSAndroid Build Coastguard Worker }
702*03f9172cSAndroid Build Coastguard Worker 
703*03f9172cSAndroid Build Coastguard Worker 
wpas_notify_suspend(struct wpa_global * global)704*03f9172cSAndroid Build Coastguard Worker void wpas_notify_suspend(struct wpa_global *global)
705*03f9172cSAndroid Build Coastguard Worker {
706*03f9172cSAndroid Build Coastguard Worker 	struct wpa_supplicant *wpa_s;
707*03f9172cSAndroid Build Coastguard Worker 
708*03f9172cSAndroid Build Coastguard Worker 	os_get_time(&global->suspend_time);
709*03f9172cSAndroid Build Coastguard Worker 	wpa_printf(MSG_DEBUG, "System suspend notification");
710*03f9172cSAndroid Build Coastguard Worker 	for (wpa_s = global->ifaces; wpa_s; wpa_s = wpa_s->next)
711*03f9172cSAndroid Build Coastguard Worker 		wpa_drv_suspend(wpa_s);
712*03f9172cSAndroid Build Coastguard Worker }
713*03f9172cSAndroid Build Coastguard Worker 
714*03f9172cSAndroid Build Coastguard Worker 
wpas_notify_resume(struct wpa_global * global)715*03f9172cSAndroid Build Coastguard Worker void wpas_notify_resume(struct wpa_global *global)
716*03f9172cSAndroid Build Coastguard Worker {
717*03f9172cSAndroid Build Coastguard Worker 	struct os_time now;
718*03f9172cSAndroid Build Coastguard Worker 	int slept;
719*03f9172cSAndroid Build Coastguard Worker 	struct wpa_supplicant *wpa_s;
720*03f9172cSAndroid Build Coastguard Worker 
721*03f9172cSAndroid Build Coastguard Worker 	if (global->suspend_time.sec == 0)
722*03f9172cSAndroid Build Coastguard Worker 		slept = -1;
723*03f9172cSAndroid Build Coastguard Worker 	else {
724*03f9172cSAndroid Build Coastguard Worker 		os_get_time(&now);
725*03f9172cSAndroid Build Coastguard Worker 		slept = now.sec - global->suspend_time.sec;
726*03f9172cSAndroid Build Coastguard Worker 	}
727*03f9172cSAndroid Build Coastguard Worker 	wpa_printf(MSG_DEBUG, "System resume notification (slept %d seconds)",
728*03f9172cSAndroid Build Coastguard Worker 		   slept);
729*03f9172cSAndroid Build Coastguard Worker 
730*03f9172cSAndroid Build Coastguard Worker 	for (wpa_s = global->ifaces; wpa_s; wpa_s = wpa_s->next) {
731*03f9172cSAndroid Build Coastguard Worker 		wpa_drv_resume(wpa_s);
732*03f9172cSAndroid Build Coastguard Worker 		if (wpa_s->wpa_state == WPA_DISCONNECTED)
733*03f9172cSAndroid Build Coastguard Worker 			wpa_supplicant_req_scan(wpa_s, 0, 100000);
734*03f9172cSAndroid Build Coastguard Worker 	}
735*03f9172cSAndroid Build Coastguard Worker }
736*03f9172cSAndroid Build Coastguard Worker 
737*03f9172cSAndroid Build Coastguard Worker 
738*03f9172cSAndroid Build Coastguard Worker #ifdef CONFIG_P2P
739*03f9172cSAndroid Build Coastguard Worker 
wpas_notify_p2p_find_stopped(struct wpa_supplicant * wpa_s)740*03f9172cSAndroid Build Coastguard Worker void wpas_notify_p2p_find_stopped(struct wpa_supplicant *wpa_s)
741*03f9172cSAndroid Build Coastguard Worker {
742*03f9172cSAndroid Build Coastguard Worker 	/* Notify P2P find has stopped */
743*03f9172cSAndroid Build Coastguard Worker 	wpas_dbus_signal_p2p_find_stopped(wpa_s);
744*03f9172cSAndroid Build Coastguard Worker 
745*03f9172cSAndroid Build Coastguard Worker 	wpas_aidl_notify_p2p_find_stopped(wpa_s);
746*03f9172cSAndroid Build Coastguard Worker }
747*03f9172cSAndroid Build Coastguard Worker 
748*03f9172cSAndroid Build Coastguard Worker 
wpas_notify_p2p_device_found(struct wpa_supplicant * wpa_s,const u8 * addr,const struct p2p_peer_info * info,const u8 * peer_wfd_device_info,u8 peer_wfd_device_info_len,const u8 * peer_wfd_r2_device_info,u8 peer_wfd_r2_device_info_len,int new_device)749*03f9172cSAndroid Build Coastguard Worker void wpas_notify_p2p_device_found(struct wpa_supplicant *wpa_s,
750*03f9172cSAndroid Build Coastguard Worker 				  const u8 *addr, const struct p2p_peer_info *info,
751*03f9172cSAndroid Build Coastguard Worker 				  const u8* peer_wfd_device_info, u8 peer_wfd_device_info_len,
752*03f9172cSAndroid Build Coastguard Worker 				  const u8* peer_wfd_r2_device_info, u8 peer_wfd_r2_device_info_len,
753*03f9172cSAndroid Build Coastguard Worker 				  int new_device)
754*03f9172cSAndroid Build Coastguard Worker {
755*03f9172cSAndroid Build Coastguard Worker 	if (new_device) {
756*03f9172cSAndroid Build Coastguard Worker 		/* Create the new peer object */
757*03f9172cSAndroid Build Coastguard Worker 		wpas_dbus_register_peer(wpa_s, info->p2p_device_addr);
758*03f9172cSAndroid Build Coastguard Worker 	}
759*03f9172cSAndroid Build Coastguard Worker 
760*03f9172cSAndroid Build Coastguard Worker 	/* Notify a new peer has been detected*/
761*03f9172cSAndroid Build Coastguard Worker 	wpas_dbus_signal_peer_device_found(wpa_s, info->p2p_device_addr);
762*03f9172cSAndroid Build Coastguard Worker 
763*03f9172cSAndroid Build Coastguard Worker 	wpas_aidl_notify_p2p_device_found(wpa_s, addr, info,
764*03f9172cSAndroid Build Coastguard Worker 					  peer_wfd_device_info,
765*03f9172cSAndroid Build Coastguard Worker 					  peer_wfd_device_info_len,
766*03f9172cSAndroid Build Coastguard Worker 					  peer_wfd_r2_device_info,
767*03f9172cSAndroid Build Coastguard Worker 					  peer_wfd_r2_device_info_len);
768*03f9172cSAndroid Build Coastguard Worker }
769*03f9172cSAndroid Build Coastguard Worker 
770*03f9172cSAndroid Build Coastguard Worker 
wpas_notify_p2p_device_lost(struct wpa_supplicant * wpa_s,const u8 * dev_addr)771*03f9172cSAndroid Build Coastguard Worker void wpas_notify_p2p_device_lost(struct wpa_supplicant *wpa_s,
772*03f9172cSAndroid Build Coastguard Worker 				 const u8 *dev_addr)
773*03f9172cSAndroid Build Coastguard Worker {
774*03f9172cSAndroid Build Coastguard Worker 	wpas_dbus_unregister_peer(wpa_s, dev_addr);
775*03f9172cSAndroid Build Coastguard Worker 
776*03f9172cSAndroid Build Coastguard Worker 	/* Create signal on interface object*/
777*03f9172cSAndroid Build Coastguard Worker 	wpas_dbus_signal_peer_device_lost(wpa_s, dev_addr);
778*03f9172cSAndroid Build Coastguard Worker 
779*03f9172cSAndroid Build Coastguard Worker 	wpas_aidl_notify_p2p_device_lost(wpa_s, dev_addr);
780*03f9172cSAndroid Build Coastguard Worker }
781*03f9172cSAndroid Build Coastguard Worker 
782*03f9172cSAndroid Build Coastguard Worker 
wpas_notify_p2p_group_removed(struct wpa_supplicant * wpa_s,const struct wpa_ssid * ssid,const char * role)783*03f9172cSAndroid Build Coastguard Worker void wpas_notify_p2p_group_removed(struct wpa_supplicant *wpa_s,
784*03f9172cSAndroid Build Coastguard Worker 				   const struct wpa_ssid *ssid,
785*03f9172cSAndroid Build Coastguard Worker 				   const char *role)
786*03f9172cSAndroid Build Coastguard Worker {
787*03f9172cSAndroid Build Coastguard Worker 	wpas_dbus_signal_p2p_group_removed(wpa_s, role);
788*03f9172cSAndroid Build Coastguard Worker 
789*03f9172cSAndroid Build Coastguard Worker 	wpas_dbus_unregister_p2p_group(wpa_s, ssid);
790*03f9172cSAndroid Build Coastguard Worker 
791*03f9172cSAndroid Build Coastguard Worker 	wpas_aidl_notify_p2p_group_removed(wpa_s, ssid, role);
792*03f9172cSAndroid Build Coastguard Worker }
793*03f9172cSAndroid Build Coastguard Worker 
794*03f9172cSAndroid Build Coastguard Worker 
wpas_notify_p2p_go_neg_req(struct wpa_supplicant * wpa_s,const u8 * src,u16 dev_passwd_id,u8 go_intent)795*03f9172cSAndroid Build Coastguard Worker void wpas_notify_p2p_go_neg_req(struct wpa_supplicant *wpa_s,
796*03f9172cSAndroid Build Coastguard Worker 				const u8 *src, u16 dev_passwd_id, u8 go_intent)
797*03f9172cSAndroid Build Coastguard Worker {
798*03f9172cSAndroid Build Coastguard Worker 	wpas_dbus_signal_p2p_go_neg_req(wpa_s, src, dev_passwd_id, go_intent);
799*03f9172cSAndroid Build Coastguard Worker 
800*03f9172cSAndroid Build Coastguard Worker 	wpas_aidl_notify_p2p_go_neg_req(wpa_s, src, dev_passwd_id, go_intent);
801*03f9172cSAndroid Build Coastguard Worker }
802*03f9172cSAndroid Build Coastguard Worker 
803*03f9172cSAndroid Build Coastguard Worker 
wpas_notify_p2p_go_neg_completed(struct wpa_supplicant * wpa_s,struct p2p_go_neg_results * res)804*03f9172cSAndroid Build Coastguard Worker void wpas_notify_p2p_go_neg_completed(struct wpa_supplicant *wpa_s,
805*03f9172cSAndroid Build Coastguard Worker 				      struct p2p_go_neg_results *res)
806*03f9172cSAndroid Build Coastguard Worker {
807*03f9172cSAndroid Build Coastguard Worker 	wpas_dbus_signal_p2p_go_neg_resp(wpa_s, res);
808*03f9172cSAndroid Build Coastguard Worker 
809*03f9172cSAndroid Build Coastguard Worker 	wpas_aidl_notify_p2p_go_neg_completed(wpa_s, res);
810*03f9172cSAndroid Build Coastguard Worker }
811*03f9172cSAndroid Build Coastguard Worker 
812*03f9172cSAndroid Build Coastguard Worker 
wpas_notify_p2p_invitation_result(struct wpa_supplicant * wpa_s,int status,const u8 * bssid)813*03f9172cSAndroid Build Coastguard Worker void wpas_notify_p2p_invitation_result(struct wpa_supplicant *wpa_s,
814*03f9172cSAndroid Build Coastguard Worker 				       int status, const u8 *bssid)
815*03f9172cSAndroid Build Coastguard Worker {
816*03f9172cSAndroid Build Coastguard Worker 	wpas_dbus_signal_p2p_invitation_result(wpa_s, status, bssid);
817*03f9172cSAndroid Build Coastguard Worker 
818*03f9172cSAndroid Build Coastguard Worker 	wpas_aidl_notify_p2p_invitation_result(wpa_s, status, bssid);
819*03f9172cSAndroid Build Coastguard Worker }
820*03f9172cSAndroid Build Coastguard Worker 
821*03f9172cSAndroid Build Coastguard Worker 
wpas_notify_p2p_sd_request(struct wpa_supplicant * wpa_s,int freq,const u8 * sa,u8 dialog_token,u16 update_indic,const u8 * tlvs,size_t tlvs_len)822*03f9172cSAndroid Build Coastguard Worker void wpas_notify_p2p_sd_request(struct wpa_supplicant *wpa_s,
823*03f9172cSAndroid Build Coastguard Worker 				int freq, const u8 *sa, u8 dialog_token,
824*03f9172cSAndroid Build Coastguard Worker 				u16 update_indic, const u8 *tlvs,
825*03f9172cSAndroid Build Coastguard Worker 				size_t tlvs_len)
826*03f9172cSAndroid Build Coastguard Worker {
827*03f9172cSAndroid Build Coastguard Worker 	wpas_dbus_signal_p2p_sd_request(wpa_s, freq, sa, dialog_token,
828*03f9172cSAndroid Build Coastguard Worker 					update_indic, tlvs, tlvs_len);
829*03f9172cSAndroid Build Coastguard Worker }
830*03f9172cSAndroid Build Coastguard Worker 
831*03f9172cSAndroid Build Coastguard Worker 
wpas_notify_p2p_sd_response(struct wpa_supplicant * wpa_s,const u8 * sa,u16 update_indic,const u8 * tlvs,size_t tlvs_len)832*03f9172cSAndroid Build Coastguard Worker void wpas_notify_p2p_sd_response(struct wpa_supplicant *wpa_s,
833*03f9172cSAndroid Build Coastguard Worker 				 const u8 *sa, u16 update_indic,
834*03f9172cSAndroid Build Coastguard Worker 				 const u8 *tlvs, size_t tlvs_len)
835*03f9172cSAndroid Build Coastguard Worker {
836*03f9172cSAndroid Build Coastguard Worker 	wpas_dbus_signal_p2p_sd_response(wpa_s, sa, update_indic,
837*03f9172cSAndroid Build Coastguard Worker 					 tlvs, tlvs_len);
838*03f9172cSAndroid Build Coastguard Worker 
839*03f9172cSAndroid Build Coastguard Worker 	wpas_aidl_notify_p2p_sd_response(wpa_s, sa, update_indic,
840*03f9172cSAndroid Build Coastguard Worker 					 tlvs, tlvs_len);
841*03f9172cSAndroid Build Coastguard Worker }
842*03f9172cSAndroid Build Coastguard Worker 
843*03f9172cSAndroid Build Coastguard Worker 
844*03f9172cSAndroid Build Coastguard Worker /**
845*03f9172cSAndroid Build Coastguard Worker  * wpas_notify_p2p_provision_discovery - Notification of provision discovery
846*03f9172cSAndroid Build Coastguard Worker  * @dev_addr: Who sent the request or responded to our request.
847*03f9172cSAndroid Build Coastguard Worker  * @request: Will be 1 if request, 0 for response.
848*03f9172cSAndroid Build Coastguard Worker  * @status: Valid only in case of response (0 in case of success)
849*03f9172cSAndroid Build Coastguard Worker  * @config_methods: WPS config methods
850*03f9172cSAndroid Build Coastguard Worker  * @generated_pin: PIN to be displayed in case of WPS_CONFIG_DISPLAY method
851*03f9172cSAndroid Build Coastguard Worker  * @group_ifname: Group interface name of the group owner in case the provision
852*03f9172cSAndroid Build Coastguard Worker  *                discovery request is received with P2P Group ID attribute.
853*03f9172cSAndroid Build Coastguard Worker  *                i.e., valid only when the peer device is joining an
854*03f9172cSAndroid Build Coastguard Worker  *                operating P2P group.
855*03f9172cSAndroid Build Coastguard Worker  *
856*03f9172cSAndroid Build Coastguard Worker  * This can be used to notify:
857*03f9172cSAndroid Build Coastguard Worker  * - Requests or responses
858*03f9172cSAndroid Build Coastguard Worker  * - Various config methods
859*03f9172cSAndroid Build Coastguard Worker  * - Failure condition in case of response
860*03f9172cSAndroid Build Coastguard Worker  */
wpas_notify_p2p_provision_discovery(struct wpa_supplicant * wpa_s,const u8 * dev_addr,int request,enum p2p_prov_disc_status status,u16 config_methods,unsigned int generated_pin,const char * group_ifname)861*03f9172cSAndroid Build Coastguard Worker void wpas_notify_p2p_provision_discovery(struct wpa_supplicant *wpa_s,
862*03f9172cSAndroid Build Coastguard Worker 					 const u8 *dev_addr, int request,
863*03f9172cSAndroid Build Coastguard Worker 					 enum p2p_prov_disc_status status,
864*03f9172cSAndroid Build Coastguard Worker 					 u16 config_methods,
865*03f9172cSAndroid Build Coastguard Worker 					 unsigned int generated_pin,
866*03f9172cSAndroid Build Coastguard Worker 					 const char *group_ifname)
867*03f9172cSAndroid Build Coastguard Worker {
868*03f9172cSAndroid Build Coastguard Worker 	wpas_dbus_signal_p2p_provision_discovery(wpa_s, dev_addr, request,
869*03f9172cSAndroid Build Coastguard Worker 						 status, config_methods,
870*03f9172cSAndroid Build Coastguard Worker 						 generated_pin);
871*03f9172cSAndroid Build Coastguard Worker 
872*03f9172cSAndroid Build Coastguard Worker 	wpas_aidl_notify_p2p_provision_discovery(wpa_s, dev_addr, request,
873*03f9172cSAndroid Build Coastguard Worker 						 status, config_methods,
874*03f9172cSAndroid Build Coastguard Worker 						 generated_pin, group_ifname);
875*03f9172cSAndroid Build Coastguard Worker 
876*03f9172cSAndroid Build Coastguard Worker }
877*03f9172cSAndroid Build Coastguard Worker 
878*03f9172cSAndroid Build Coastguard Worker 
wpas_notify_p2p_group_started(struct wpa_supplicant * wpa_s,struct wpa_ssid * ssid,int persistent,int client,const u8 * ip)879*03f9172cSAndroid Build Coastguard Worker void wpas_notify_p2p_group_started(struct wpa_supplicant *wpa_s,
880*03f9172cSAndroid Build Coastguard Worker 				   struct wpa_ssid *ssid, int persistent,
881*03f9172cSAndroid Build Coastguard Worker 				   int client, const u8 *ip)
882*03f9172cSAndroid Build Coastguard Worker {
883*03f9172cSAndroid Build Coastguard Worker 	/* Notify a group has been started */
884*03f9172cSAndroid Build Coastguard Worker 	wpas_dbus_register_p2p_group(wpa_s, ssid);
885*03f9172cSAndroid Build Coastguard Worker 
886*03f9172cSAndroid Build Coastguard Worker 	wpas_dbus_signal_p2p_group_started(wpa_s, client, persistent, ip);
887*03f9172cSAndroid Build Coastguard Worker 
888*03f9172cSAndroid Build Coastguard Worker 	wpas_aidl_notify_p2p_group_started(wpa_s, ssid, persistent, client, ip);
889*03f9172cSAndroid Build Coastguard Worker }
890*03f9172cSAndroid Build Coastguard Worker 
891*03f9172cSAndroid Build Coastguard Worker 
wpas_notify_p2p_group_formation_failure(struct wpa_supplicant * wpa_s,const char * reason)892*03f9172cSAndroid Build Coastguard Worker void wpas_notify_p2p_group_formation_failure(struct wpa_supplicant *wpa_s,
893*03f9172cSAndroid Build Coastguard Worker 					     const char *reason)
894*03f9172cSAndroid Build Coastguard Worker {
895*03f9172cSAndroid Build Coastguard Worker 	/* Notify a group formation failed */
896*03f9172cSAndroid Build Coastguard Worker 	wpas_dbus_signal_p2p_group_formation_failure(wpa_s, reason);
897*03f9172cSAndroid Build Coastguard Worker 
898*03f9172cSAndroid Build Coastguard Worker 	wpas_aidl_notify_p2p_group_formation_failure(wpa_s, reason);
899*03f9172cSAndroid Build Coastguard Worker }
900*03f9172cSAndroid Build Coastguard Worker 
901*03f9172cSAndroid Build Coastguard Worker 
wpas_notify_p2p_wps_failed(struct wpa_supplicant * wpa_s,struct wps_event_fail * fail)902*03f9172cSAndroid Build Coastguard Worker void wpas_notify_p2p_wps_failed(struct wpa_supplicant *wpa_s,
903*03f9172cSAndroid Build Coastguard Worker 				struct wps_event_fail *fail)
904*03f9172cSAndroid Build Coastguard Worker {
905*03f9172cSAndroid Build Coastguard Worker 	wpas_dbus_signal_p2p_wps_failed(wpa_s, fail);
906*03f9172cSAndroid Build Coastguard Worker }
907*03f9172cSAndroid Build Coastguard Worker 
908*03f9172cSAndroid Build Coastguard Worker 
wpas_notify_p2p_invitation_received(struct wpa_supplicant * wpa_s,const u8 * sa,const u8 * go_dev_addr,const u8 * bssid,int id,int op_freq)909*03f9172cSAndroid Build Coastguard Worker void wpas_notify_p2p_invitation_received(struct wpa_supplicant *wpa_s,
910*03f9172cSAndroid Build Coastguard Worker 					 const u8 *sa, const u8 *go_dev_addr,
911*03f9172cSAndroid Build Coastguard Worker 					 const u8 *bssid, int id, int op_freq)
912*03f9172cSAndroid Build Coastguard Worker {
913*03f9172cSAndroid Build Coastguard Worker 	/* Notify a P2P Invitation Request */
914*03f9172cSAndroid Build Coastguard Worker 	wpas_dbus_signal_p2p_invitation_received(wpa_s, sa, go_dev_addr, bssid,
915*03f9172cSAndroid Build Coastguard Worker 						 id, op_freq);
916*03f9172cSAndroid Build Coastguard Worker 
917*03f9172cSAndroid Build Coastguard Worker 	wpas_aidl_notify_p2p_invitation_received(wpa_s, sa, go_dev_addr, bssid,
918*03f9172cSAndroid Build Coastguard Worker 						 id, op_freq);
919*03f9172cSAndroid Build Coastguard Worker }
920*03f9172cSAndroid Build Coastguard Worker 
921*03f9172cSAndroid Build Coastguard Worker #endif /* CONFIG_P2P */
922*03f9172cSAndroid Build Coastguard Worker 
923*03f9172cSAndroid Build Coastguard Worker 
wpas_notify_ap_sta_authorized(struct wpa_supplicant * wpa_s,const u8 * sta,const u8 * p2p_dev_addr,const u8 * ip)924*03f9172cSAndroid Build Coastguard Worker static void wpas_notify_ap_sta_authorized(struct wpa_supplicant *wpa_s,
925*03f9172cSAndroid Build Coastguard Worker 					  const u8 *sta,
926*03f9172cSAndroid Build Coastguard Worker 					  const u8 *p2p_dev_addr, const u8 *ip)
927*03f9172cSAndroid Build Coastguard Worker {
928*03f9172cSAndroid Build Coastguard Worker #ifdef CONFIG_P2P
929*03f9172cSAndroid Build Coastguard Worker 	wpas_p2p_notify_ap_sta_authorized(wpa_s, p2p_dev_addr);
930*03f9172cSAndroid Build Coastguard Worker 
931*03f9172cSAndroid Build Coastguard Worker 	/*
932*03f9172cSAndroid Build Coastguard Worker 	 * Create 'peer-joined' signal on group object -- will also
933*03f9172cSAndroid Build Coastguard Worker 	 * check P2P itself.
934*03f9172cSAndroid Build Coastguard Worker 	 */
935*03f9172cSAndroid Build Coastguard Worker 	if (p2p_dev_addr)
936*03f9172cSAndroid Build Coastguard Worker 		wpas_dbus_signal_p2p_peer_joined(wpa_s, p2p_dev_addr);
937*03f9172cSAndroid Build Coastguard Worker #endif /* CONFIG_P2P */
938*03f9172cSAndroid Build Coastguard Worker 
939*03f9172cSAndroid Build Coastguard Worker 	/* Register the station */
940*03f9172cSAndroid Build Coastguard Worker 	wpas_dbus_register_sta(wpa_s, sta);
941*03f9172cSAndroid Build Coastguard Worker 
942*03f9172cSAndroid Build Coastguard Worker 	/* Notify listeners a new station has been authorized */
943*03f9172cSAndroid Build Coastguard Worker 	wpas_dbus_signal_sta_authorized(wpa_s, sta);
944*03f9172cSAndroid Build Coastguard Worker 
945*03f9172cSAndroid Build Coastguard Worker 	wpas_aidl_notify_ap_sta_authorized(wpa_s, sta, p2p_dev_addr, ip);
946*03f9172cSAndroid Build Coastguard Worker }
947*03f9172cSAndroid Build Coastguard Worker 
948*03f9172cSAndroid Build Coastguard Worker 
wpas_notify_ap_sta_deauthorized(struct wpa_supplicant * wpa_s,const u8 * sta,const u8 * p2p_dev_addr)949*03f9172cSAndroid Build Coastguard Worker static void wpas_notify_ap_sta_deauthorized(struct wpa_supplicant *wpa_s,
950*03f9172cSAndroid Build Coastguard Worker 					    const u8 *sta,
951*03f9172cSAndroid Build Coastguard Worker 					    const u8 *p2p_dev_addr)
952*03f9172cSAndroid Build Coastguard Worker {
953*03f9172cSAndroid Build Coastguard Worker #ifdef CONFIG_P2P
954*03f9172cSAndroid Build Coastguard Worker 	/*
955*03f9172cSAndroid Build Coastguard Worker 	 * Create 'peer-disconnected' signal on group object if this
956*03f9172cSAndroid Build Coastguard Worker 	 * is a P2P group.
957*03f9172cSAndroid Build Coastguard Worker 	 */
958*03f9172cSAndroid Build Coastguard Worker 	if (p2p_dev_addr)
959*03f9172cSAndroid Build Coastguard Worker 		wpas_dbus_signal_p2p_peer_disconnected(wpa_s, p2p_dev_addr);
960*03f9172cSAndroid Build Coastguard Worker #endif /* CONFIG_P2P */
961*03f9172cSAndroid Build Coastguard Worker 
962*03f9172cSAndroid Build Coastguard Worker 	/* Notify listeners a station has been deauthorized */
963*03f9172cSAndroid Build Coastguard Worker 	wpas_dbus_signal_sta_deauthorized(wpa_s, sta);
964*03f9172cSAndroid Build Coastguard Worker 
965*03f9172cSAndroid Build Coastguard Worker 	wpas_aidl_notify_ap_sta_deauthorized(wpa_s, sta, p2p_dev_addr);
966*03f9172cSAndroid Build Coastguard Worker 	/* Unregister the station */
967*03f9172cSAndroid Build Coastguard Worker 	wpas_dbus_unregister_sta(wpa_s, sta);
968*03f9172cSAndroid Build Coastguard Worker }
969*03f9172cSAndroid Build Coastguard Worker 
970*03f9172cSAndroid Build Coastguard Worker 
wpas_notify_sta_authorized(struct wpa_supplicant * wpa_s,const u8 * mac_addr,int authorized,const u8 * p2p_dev_addr,const u8 * ip)971*03f9172cSAndroid Build Coastguard Worker void wpas_notify_sta_authorized(struct wpa_supplicant *wpa_s,
972*03f9172cSAndroid Build Coastguard Worker 				const u8 *mac_addr, int authorized,
973*03f9172cSAndroid Build Coastguard Worker 				const u8 *p2p_dev_addr, const u8 *ip)
974*03f9172cSAndroid Build Coastguard Worker {
975*03f9172cSAndroid Build Coastguard Worker 	if (authorized)
976*03f9172cSAndroid Build Coastguard Worker 		wpas_notify_ap_sta_authorized(wpa_s, mac_addr, p2p_dev_addr,
977*03f9172cSAndroid Build Coastguard Worker 					      ip);
978*03f9172cSAndroid Build Coastguard Worker 	else
979*03f9172cSAndroid Build Coastguard Worker 		wpas_notify_ap_sta_deauthorized(wpa_s, mac_addr, p2p_dev_addr);
980*03f9172cSAndroid Build Coastguard Worker }
981*03f9172cSAndroid Build Coastguard Worker 
982*03f9172cSAndroid Build Coastguard Worker 
wpas_notify_certification(struct wpa_supplicant * wpa_s,struct tls_cert_data * cert,const char * cert_hash)983*03f9172cSAndroid Build Coastguard Worker void wpas_notify_certification(struct wpa_supplicant *wpa_s,
984*03f9172cSAndroid Build Coastguard Worker 			       struct tls_cert_data *cert,
985*03f9172cSAndroid Build Coastguard Worker 			       const char *cert_hash)
986*03f9172cSAndroid Build Coastguard Worker {
987*03f9172cSAndroid Build Coastguard Worker 	int i;
988*03f9172cSAndroid Build Coastguard Worker 
989*03f9172cSAndroid Build Coastguard Worker 	wpa_msg(wpa_s, MSG_INFO, WPA_EVENT_EAP_PEER_CERT
990*03f9172cSAndroid Build Coastguard Worker 		"depth=%d subject='%s'%s%s%s%s",
991*03f9172cSAndroid Build Coastguard Worker 		cert->depth, cert->subject, cert_hash ? " hash=" : "",
992*03f9172cSAndroid Build Coastguard Worker 		cert_hash ? cert_hash : "",
993*03f9172cSAndroid Build Coastguard Worker 		cert->tod == 2 ? " tod=2" : "",
994*03f9172cSAndroid Build Coastguard Worker 		cert->tod == 1 ? " tod=1" : "");
995*03f9172cSAndroid Build Coastguard Worker 
996*03f9172cSAndroid Build Coastguard Worker 	if (cert->cert) {
997*03f9172cSAndroid Build Coastguard Worker 		char *cert_hex;
998*03f9172cSAndroid Build Coastguard Worker 		size_t len = wpabuf_len(cert->cert) * 2 + 1;
999*03f9172cSAndroid Build Coastguard Worker 		cert_hex = os_malloc(len);
1000*03f9172cSAndroid Build Coastguard Worker 		if (cert_hex) {
1001*03f9172cSAndroid Build Coastguard Worker 			wpa_snprintf_hex(cert_hex, len, wpabuf_head(cert->cert),
1002*03f9172cSAndroid Build Coastguard Worker 					 wpabuf_len(cert->cert));
1003*03f9172cSAndroid Build Coastguard Worker 			wpa_msg_ctrl(wpa_s, MSG_INFO,
1004*03f9172cSAndroid Build Coastguard Worker 				     WPA_EVENT_EAP_PEER_CERT
1005*03f9172cSAndroid Build Coastguard Worker 				     "depth=%d subject='%s' cert=%s",
1006*03f9172cSAndroid Build Coastguard Worker 				     cert->depth, cert->subject, cert_hex);
1007*03f9172cSAndroid Build Coastguard Worker 			os_free(cert_hex);
1008*03f9172cSAndroid Build Coastguard Worker 		}
1009*03f9172cSAndroid Build Coastguard Worker 	}
1010*03f9172cSAndroid Build Coastguard Worker 
1011*03f9172cSAndroid Build Coastguard Worker 	for (i = 0; i < cert->num_altsubject; i++)
1012*03f9172cSAndroid Build Coastguard Worker 		wpa_msg(wpa_s, MSG_INFO, WPA_EVENT_EAP_PEER_ALT
1013*03f9172cSAndroid Build Coastguard Worker 			"depth=%d %s", cert->depth, cert->altsubject[i]);
1014*03f9172cSAndroid Build Coastguard Worker 
1015*03f9172cSAndroid Build Coastguard Worker 	wpas_aidl_notify_ceritification(wpa_s, cert->depth, cert->subject,
1016*03f9172cSAndroid Build Coastguard Worker 				       cert->altsubject, cert->num_altsubject,
1017*03f9172cSAndroid Build Coastguard Worker 				       cert_hash, cert->cert);
1018*03f9172cSAndroid Build Coastguard Worker 
1019*03f9172cSAndroid Build Coastguard Worker 	/* notify the new DBus API */
1020*03f9172cSAndroid Build Coastguard Worker 	wpas_dbus_signal_certification(wpa_s, cert->depth, cert->subject,
1021*03f9172cSAndroid Build Coastguard Worker 				       cert->altsubject, cert->num_altsubject,
1022*03f9172cSAndroid Build Coastguard Worker 				       cert_hash, cert->cert);
1023*03f9172cSAndroid Build Coastguard Worker }
1024*03f9172cSAndroid Build Coastguard Worker 
1025*03f9172cSAndroid Build Coastguard Worker 
wpas_notify_preq(struct wpa_supplicant * wpa_s,const u8 * addr,const u8 * dst,const u8 * bssid,const u8 * ie,size_t ie_len,u32 ssi_signal)1026*03f9172cSAndroid Build Coastguard Worker void wpas_notify_preq(struct wpa_supplicant *wpa_s,
1027*03f9172cSAndroid Build Coastguard Worker 		      const u8 *addr, const u8 *dst, const u8 *bssid,
1028*03f9172cSAndroid Build Coastguard Worker 		      const u8 *ie, size_t ie_len, u32 ssi_signal)
1029*03f9172cSAndroid Build Coastguard Worker {
1030*03f9172cSAndroid Build Coastguard Worker #ifdef CONFIG_AP
1031*03f9172cSAndroid Build Coastguard Worker 	wpas_dbus_signal_preq(wpa_s, addr, dst, bssid, ie, ie_len, ssi_signal);
1032*03f9172cSAndroid Build Coastguard Worker #endif /* CONFIG_AP */
1033*03f9172cSAndroid Build Coastguard Worker }
1034*03f9172cSAndroid Build Coastguard Worker 
1035*03f9172cSAndroid Build Coastguard Worker 
wpas_notify_eap_status(struct wpa_supplicant * wpa_s,const char * status,const char * parameter)1036*03f9172cSAndroid Build Coastguard Worker void wpas_notify_eap_status(struct wpa_supplicant *wpa_s, const char *status,
1037*03f9172cSAndroid Build Coastguard Worker 			    const char *parameter)
1038*03f9172cSAndroid Build Coastguard Worker {
1039*03f9172cSAndroid Build Coastguard Worker 	wpas_dbus_signal_eap_status(wpa_s, status, parameter);
1040*03f9172cSAndroid Build Coastguard Worker 	wpa_msg_ctrl(wpa_s, MSG_INFO, WPA_EVENT_EAP_STATUS
1041*03f9172cSAndroid Build Coastguard Worker 		     "status='%s' parameter='%s'",
1042*03f9172cSAndroid Build Coastguard Worker 		     status, parameter);
1043*03f9172cSAndroid Build Coastguard Worker }
1044*03f9172cSAndroid Build Coastguard Worker 
1045*03f9172cSAndroid Build Coastguard Worker 
wpas_notify_eap_error(struct wpa_supplicant * wpa_s,int error_code)1046*03f9172cSAndroid Build Coastguard Worker void wpas_notify_eap_error(struct wpa_supplicant *wpa_s, int error_code)
1047*03f9172cSAndroid Build Coastguard Worker {
1048*03f9172cSAndroid Build Coastguard Worker 	wpa_dbg(wpa_s, MSG_ERROR,
1049*03f9172cSAndroid Build Coastguard Worker 		"EAP Error code = %d", error_code);
1050*03f9172cSAndroid Build Coastguard Worker 	wpas_aidl_notify_eap_error(wpa_s, error_code);
1051*03f9172cSAndroid Build Coastguard Worker }
1052*03f9172cSAndroid Build Coastguard Worker 
1053*03f9172cSAndroid Build Coastguard Worker 
wpas_notify_psk_mismatch(struct wpa_supplicant * wpa_s)1054*03f9172cSAndroid Build Coastguard Worker void wpas_notify_psk_mismatch(struct wpa_supplicant *wpa_s)
1055*03f9172cSAndroid Build Coastguard Worker {
1056*03f9172cSAndroid Build Coastguard Worker 	wpas_dbus_signal_psk_mismatch(wpa_s);
1057*03f9172cSAndroid Build Coastguard Worker }
1058*03f9172cSAndroid Build Coastguard Worker 
1059*03f9172cSAndroid Build Coastguard Worker 
wpas_notify_network_bssid_set_changed(struct wpa_supplicant * wpa_s,struct wpa_ssid * ssid)1060*03f9172cSAndroid Build Coastguard Worker void wpas_notify_network_bssid_set_changed(struct wpa_supplicant *wpa_s,
1061*03f9172cSAndroid Build Coastguard Worker 					   struct wpa_ssid *ssid)
1062*03f9172cSAndroid Build Coastguard Worker {
1063*03f9172cSAndroid Build Coastguard Worker 	if (wpa_s->current_ssid != ssid)
1064*03f9172cSAndroid Build Coastguard Worker 		return;
1065*03f9172cSAndroid Build Coastguard Worker 
1066*03f9172cSAndroid Build Coastguard Worker 	wpa_dbg(wpa_s, MSG_DEBUG,
1067*03f9172cSAndroid Build Coastguard Worker 		"Network bssid config changed for the current network - within-ESS roaming %s",
1068*03f9172cSAndroid Build Coastguard Worker 		ssid->bssid_set ? "disabled" : "enabled");
1069*03f9172cSAndroid Build Coastguard Worker 
1070*03f9172cSAndroid Build Coastguard Worker 	wpa_drv_roaming(wpa_s, !ssid->bssid_set,
1071*03f9172cSAndroid Build Coastguard Worker 			ssid->bssid_set ? ssid->bssid : NULL);
1072*03f9172cSAndroid Build Coastguard Worker }
1073*03f9172cSAndroid Build Coastguard Worker 
1074*03f9172cSAndroid Build Coastguard Worker 
wpas_notify_network_type_changed(struct wpa_supplicant * wpa_s,struct wpa_ssid * ssid)1075*03f9172cSAndroid Build Coastguard Worker void wpas_notify_network_type_changed(struct wpa_supplicant *wpa_s,
1076*03f9172cSAndroid Build Coastguard Worker 				      struct wpa_ssid *ssid)
1077*03f9172cSAndroid Build Coastguard Worker {
1078*03f9172cSAndroid Build Coastguard Worker #ifdef CONFIG_P2P
1079*03f9172cSAndroid Build Coastguard Worker 	if (ssid->disabled == 2) {
1080*03f9172cSAndroid Build Coastguard Worker 		/* Changed from normal network profile to persistent group */
1081*03f9172cSAndroid Build Coastguard Worker 		ssid->disabled = 0;
1082*03f9172cSAndroid Build Coastguard Worker 		wpas_dbus_unregister_network(wpa_s, ssid->id);
1083*03f9172cSAndroid Build Coastguard Worker 		ssid->disabled = 2;
1084*03f9172cSAndroid Build Coastguard Worker 		ssid->p2p_persistent_group = 1;
1085*03f9172cSAndroid Build Coastguard Worker 		wpas_dbus_register_persistent_group(wpa_s, ssid);
1086*03f9172cSAndroid Build Coastguard Worker 	} else {
1087*03f9172cSAndroid Build Coastguard Worker 		/* Changed from persistent group to normal network profile */
1088*03f9172cSAndroid Build Coastguard Worker 		wpas_dbus_unregister_persistent_group(wpa_s, ssid->id);
1089*03f9172cSAndroid Build Coastguard Worker 		ssid->p2p_persistent_group = 0;
1090*03f9172cSAndroid Build Coastguard Worker 		wpas_dbus_register_network(wpa_s, ssid);
1091*03f9172cSAndroid Build Coastguard Worker 	}
1092*03f9172cSAndroid Build Coastguard Worker #endif /* CONFIG_P2P */
1093*03f9172cSAndroid Build Coastguard Worker }
1094*03f9172cSAndroid Build Coastguard Worker 
wpas_notify_anqp_query_done(struct wpa_supplicant * wpa_s,const u8 * bssid,const char * result,const struct wpa_bss_anqp * anqp)1095*03f9172cSAndroid Build Coastguard Worker void wpas_notify_anqp_query_done(struct wpa_supplicant *wpa_s, const u8* bssid,
1096*03f9172cSAndroid Build Coastguard Worker 				 const char *result,
1097*03f9172cSAndroid Build Coastguard Worker 				 const struct wpa_bss_anqp *anqp)
1098*03f9172cSAndroid Build Coastguard Worker {
1099*03f9172cSAndroid Build Coastguard Worker 	wpa_msg(wpa_s, MSG_INFO, ANQP_QUERY_DONE "addr=" MACSTR " result=%s",
1100*03f9172cSAndroid Build Coastguard Worker 		MAC2STR(bssid), result);
1101*03f9172cSAndroid Build Coastguard Worker #ifdef CONFIG_INTERWORKING
1102*03f9172cSAndroid Build Coastguard Worker 	if (!wpa_s || !bssid || !anqp)
1103*03f9172cSAndroid Build Coastguard Worker 		return;
1104*03f9172cSAndroid Build Coastguard Worker 
1105*03f9172cSAndroid Build Coastguard Worker 	wpas_aidl_notify_anqp_query_done(wpa_s, bssid, result, anqp);
1106*03f9172cSAndroid Build Coastguard Worker 	wpas_dbus_signal_anqp_query_done(wpa_s, bssid, result);
1107*03f9172cSAndroid Build Coastguard Worker #endif /* CONFIG_INTERWORKING */
1108*03f9172cSAndroid Build Coastguard Worker }
1109*03f9172cSAndroid Build Coastguard Worker 
wpas_notify_hs20_icon_query_done(struct wpa_supplicant * wpa_s,const u8 * bssid,const char * file_name,const u8 * image,u32 image_length)1110*03f9172cSAndroid Build Coastguard Worker void wpas_notify_hs20_icon_query_done(struct wpa_supplicant *wpa_s, const u8* bssid,
1111*03f9172cSAndroid Build Coastguard Worker 				      const char* file_name, const u8* image,
1112*03f9172cSAndroid Build Coastguard Worker 				      u32 image_length)
1113*03f9172cSAndroid Build Coastguard Worker {
1114*03f9172cSAndroid Build Coastguard Worker #ifdef CONFIG_HS20
1115*03f9172cSAndroid Build Coastguard Worker 	if (!wpa_s || !bssid || !file_name || !image)
1116*03f9172cSAndroid Build Coastguard Worker 		return;
1117*03f9172cSAndroid Build Coastguard Worker 
1118*03f9172cSAndroid Build Coastguard Worker 	wpas_aidl_notify_hs20_icon_query_done(wpa_s, bssid, file_name, image,
1119*03f9172cSAndroid Build Coastguard Worker 					      image_length);
1120*03f9172cSAndroid Build Coastguard Worker #endif /* CONFIG_HS20 */
1121*03f9172cSAndroid Build Coastguard Worker }
1122*03f9172cSAndroid Build Coastguard Worker 
wpas_notify_hs20_rx_subscription_remediation(struct wpa_supplicant * wpa_s,const char * url,u8 osu_method)1123*03f9172cSAndroid Build Coastguard Worker void wpas_notify_hs20_rx_subscription_remediation(struct wpa_supplicant *wpa_s,
1124*03f9172cSAndroid Build Coastguard Worker 						  const char* url,
1125*03f9172cSAndroid Build Coastguard Worker 						  u8 osu_method)
1126*03f9172cSAndroid Build Coastguard Worker {
1127*03f9172cSAndroid Build Coastguard Worker #ifdef CONFIG_HS20
1128*03f9172cSAndroid Build Coastguard Worker 	if (!wpa_s || !url)
1129*03f9172cSAndroid Build Coastguard Worker 		return;
1130*03f9172cSAndroid Build Coastguard Worker 
1131*03f9172cSAndroid Build Coastguard Worker 	wpas_aidl_notify_hs20_rx_subscription_remediation(wpa_s, url, osu_method);
1132*03f9172cSAndroid Build Coastguard Worker #endif /* CONFIG_HS20 */
1133*03f9172cSAndroid Build Coastguard Worker }
1134*03f9172cSAndroid Build Coastguard Worker 
wpas_notify_hs20_rx_deauth_imminent_notice(struct wpa_supplicant * wpa_s,u8 code,u16 reauth_delay,const char * url)1135*03f9172cSAndroid Build Coastguard Worker void wpas_notify_hs20_rx_deauth_imminent_notice(struct wpa_supplicant *wpa_s,
1136*03f9172cSAndroid Build Coastguard Worker 						u8 code, u16 reauth_delay,
1137*03f9172cSAndroid Build Coastguard Worker 						const char *url)
1138*03f9172cSAndroid Build Coastguard Worker {
1139*03f9172cSAndroid Build Coastguard Worker #ifdef CONFIG_HS20
1140*03f9172cSAndroid Build Coastguard Worker 	if (!wpa_s)
1141*03f9172cSAndroid Build Coastguard Worker 		return;
1142*03f9172cSAndroid Build Coastguard Worker 
1143*03f9172cSAndroid Build Coastguard Worker 	wpas_aidl_notify_hs20_rx_deauth_imminent_notice(wpa_s, code, reauth_delay,
1144*03f9172cSAndroid Build Coastguard Worker 			url);
1145*03f9172cSAndroid Build Coastguard Worker #endif /* CONFIG_HS20 */
1146*03f9172cSAndroid Build Coastguard Worker }
1147*03f9172cSAndroid Build Coastguard Worker 
1148*03f9172cSAndroid Build Coastguard Worker 
1149*03f9172cSAndroid Build Coastguard Worker #ifdef CONFIG_MESH
1150*03f9172cSAndroid Build Coastguard Worker 
wpas_notify_mesh_group_started(struct wpa_supplicant * wpa_s,struct wpa_ssid * ssid)1151*03f9172cSAndroid Build Coastguard Worker void wpas_notify_mesh_group_started(struct wpa_supplicant *wpa_s,
1152*03f9172cSAndroid Build Coastguard Worker 				    struct wpa_ssid *ssid)
1153*03f9172cSAndroid Build Coastguard Worker {
1154*03f9172cSAndroid Build Coastguard Worker 	if (wpa_s->p2p_mgmt)
1155*03f9172cSAndroid Build Coastguard Worker 		return;
1156*03f9172cSAndroid Build Coastguard Worker 
1157*03f9172cSAndroid Build Coastguard Worker 	wpas_dbus_signal_mesh_group_started(wpa_s, ssid);
1158*03f9172cSAndroid Build Coastguard Worker }
1159*03f9172cSAndroid Build Coastguard Worker 
1160*03f9172cSAndroid Build Coastguard Worker 
wpas_notify_mesh_group_removed(struct wpa_supplicant * wpa_s,const u8 * meshid,u8 meshid_len,u16 reason_code)1161*03f9172cSAndroid Build Coastguard Worker void wpas_notify_mesh_group_removed(struct wpa_supplicant *wpa_s,
1162*03f9172cSAndroid Build Coastguard Worker 				    const u8 *meshid, u8 meshid_len,
1163*03f9172cSAndroid Build Coastguard Worker 				    u16 reason_code)
1164*03f9172cSAndroid Build Coastguard Worker {
1165*03f9172cSAndroid Build Coastguard Worker 	if (wpa_s->p2p_mgmt)
1166*03f9172cSAndroid Build Coastguard Worker 		return;
1167*03f9172cSAndroid Build Coastguard Worker 
1168*03f9172cSAndroid Build Coastguard Worker 	wpas_dbus_signal_mesh_group_removed(wpa_s, meshid, meshid_len,
1169*03f9172cSAndroid Build Coastguard Worker 					    reason_code);
1170*03f9172cSAndroid Build Coastguard Worker }
1171*03f9172cSAndroid Build Coastguard Worker 
1172*03f9172cSAndroid Build Coastguard Worker 
wpas_notify_mesh_peer_connected(struct wpa_supplicant * wpa_s,const u8 * peer_addr)1173*03f9172cSAndroid Build Coastguard Worker void wpas_notify_mesh_peer_connected(struct wpa_supplicant *wpa_s,
1174*03f9172cSAndroid Build Coastguard Worker 				     const u8 *peer_addr)
1175*03f9172cSAndroid Build Coastguard Worker {
1176*03f9172cSAndroid Build Coastguard Worker 	if (wpa_s->p2p_mgmt)
1177*03f9172cSAndroid Build Coastguard Worker 		return;
1178*03f9172cSAndroid Build Coastguard Worker 
1179*03f9172cSAndroid Build Coastguard Worker 	wpa_msg(wpa_s, MSG_INFO, MESH_PEER_CONNECTED MACSTR,
1180*03f9172cSAndroid Build Coastguard Worker 		MAC2STR(peer_addr));
1181*03f9172cSAndroid Build Coastguard Worker 	wpas_dbus_signal_mesh_peer_connected(wpa_s, peer_addr);
1182*03f9172cSAndroid Build Coastguard Worker }
1183*03f9172cSAndroid Build Coastguard Worker 
1184*03f9172cSAndroid Build Coastguard Worker 
wpas_notify_mesh_peer_disconnected(struct wpa_supplicant * wpa_s,const u8 * peer_addr,u16 reason_code)1185*03f9172cSAndroid Build Coastguard Worker void wpas_notify_mesh_peer_disconnected(struct wpa_supplicant *wpa_s,
1186*03f9172cSAndroid Build Coastguard Worker 					const u8 *peer_addr, u16 reason_code)
1187*03f9172cSAndroid Build Coastguard Worker {
1188*03f9172cSAndroid Build Coastguard Worker 	if (wpa_s->p2p_mgmt)
1189*03f9172cSAndroid Build Coastguard Worker 		return;
1190*03f9172cSAndroid Build Coastguard Worker 
1191*03f9172cSAndroid Build Coastguard Worker 	wpa_msg(wpa_s, MSG_INFO, MESH_PEER_DISCONNECTED MACSTR,
1192*03f9172cSAndroid Build Coastguard Worker 		MAC2STR(peer_addr));
1193*03f9172cSAndroid Build Coastguard Worker 	wpas_dbus_signal_mesh_peer_disconnected(wpa_s, peer_addr, reason_code);
1194*03f9172cSAndroid Build Coastguard Worker }
1195*03f9172cSAndroid Build Coastguard Worker 
1196*03f9172cSAndroid Build Coastguard Worker #endif /* CONFIG_MESH */
1197*03f9172cSAndroid Build Coastguard Worker 
1198*03f9172cSAndroid Build Coastguard Worker /*
1199*03f9172cSAndroid Build Coastguard Worker  * DPP Notifications
1200*03f9172cSAndroid Build Coastguard Worker  */
1201*03f9172cSAndroid Build Coastguard Worker 
1202*03f9172cSAndroid Build Coastguard Worker /* DPP Success notifications */
1203*03f9172cSAndroid Build Coastguard Worker 
wpas_notify_dpp_config_received(struct wpa_supplicant * wpa_s,struct wpa_ssid * ssid,bool conn_status_requested)1204*03f9172cSAndroid Build Coastguard Worker void wpas_notify_dpp_config_received(struct wpa_supplicant *wpa_s,
1205*03f9172cSAndroid Build Coastguard Worker 	    struct wpa_ssid *ssid, bool conn_status_requested)
1206*03f9172cSAndroid Build Coastguard Worker {
1207*03f9172cSAndroid Build Coastguard Worker #ifdef CONFIG_DPP
1208*03f9172cSAndroid Build Coastguard Worker 	if (!wpa_s)
1209*03f9172cSAndroid Build Coastguard Worker 		return;
1210*03f9172cSAndroid Build Coastguard Worker 
1211*03f9172cSAndroid Build Coastguard Worker 	wpas_aidl_notify_dpp_config_received(wpa_s, ssid, conn_status_requested);
1212*03f9172cSAndroid Build Coastguard Worker #endif /* CONFIG_DPP */
1213*03f9172cSAndroid Build Coastguard Worker }
1214*03f9172cSAndroid Build Coastguard Worker 
wpas_notify_dpp_config_sent(struct wpa_supplicant * wpa_s)1215*03f9172cSAndroid Build Coastguard Worker void wpas_notify_dpp_config_sent(struct wpa_supplicant *wpa_s)
1216*03f9172cSAndroid Build Coastguard Worker {
1217*03f9172cSAndroid Build Coastguard Worker #ifdef CONFIG_DPP
1218*03f9172cSAndroid Build Coastguard Worker 	if (!wpa_s)
1219*03f9172cSAndroid Build Coastguard Worker 		return;
1220*03f9172cSAndroid Build Coastguard Worker 
1221*03f9172cSAndroid Build Coastguard Worker 	wpas_aidl_notify_dpp_config_sent(wpa_s);
1222*03f9172cSAndroid Build Coastguard Worker #endif /* CONFIG_DPP */
1223*03f9172cSAndroid Build Coastguard Worker }
1224*03f9172cSAndroid Build Coastguard Worker 
1225*03f9172cSAndroid Build Coastguard Worker #ifdef CONFIG_DPP
wpas_notify_dpp_connection_status_sent(struct wpa_supplicant * wpa_s,enum dpp_status_error result)1226*03f9172cSAndroid Build Coastguard Worker void wpas_notify_dpp_connection_status_sent(struct wpa_supplicant *wpa_s,
1227*03f9172cSAndroid Build Coastguard Worker 	    enum dpp_status_error result)
1228*03f9172cSAndroid Build Coastguard Worker {
1229*03f9172cSAndroid Build Coastguard Worker #ifdef CONFIG_DPP2
1230*03f9172cSAndroid Build Coastguard Worker 	if (!wpa_s)
1231*03f9172cSAndroid Build Coastguard Worker 		return;
1232*03f9172cSAndroid Build Coastguard Worker 
1233*03f9172cSAndroid Build Coastguard Worker 	wpas_aidl_notify_dpp_connection_status_sent(wpa_s, result);
1234*03f9172cSAndroid Build Coastguard Worker #endif /* CONFIG_DPP2 */
1235*03f9172cSAndroid Build Coastguard Worker }
1236*03f9172cSAndroid Build Coastguard Worker #endif /* CONFIG_DPP */
1237*03f9172cSAndroid Build Coastguard Worker 
1238*03f9172cSAndroid Build Coastguard Worker /* DPP Progress notifications */
wpas_notify_dpp_auth_success(struct wpa_supplicant * wpa_s)1239*03f9172cSAndroid Build Coastguard Worker void wpas_notify_dpp_auth_success(struct wpa_supplicant *wpa_s)
1240*03f9172cSAndroid Build Coastguard Worker {
1241*03f9172cSAndroid Build Coastguard Worker #ifdef CONFIG_DPP
1242*03f9172cSAndroid Build Coastguard Worker 	if (!wpa_s)
1243*03f9172cSAndroid Build Coastguard Worker 		return;
1244*03f9172cSAndroid Build Coastguard Worker 
1245*03f9172cSAndroid Build Coastguard Worker 	wpas_aidl_notify_dpp_auth_success(wpa_s);
1246*03f9172cSAndroid Build Coastguard Worker #endif /* CONFIG_DPP */
1247*03f9172cSAndroid Build Coastguard Worker }
1248*03f9172cSAndroid Build Coastguard Worker 
wpas_notify_dpp_resp_pending(struct wpa_supplicant * wpa_s)1249*03f9172cSAndroid Build Coastguard Worker void wpas_notify_dpp_resp_pending(struct wpa_supplicant *wpa_s)
1250*03f9172cSAndroid Build Coastguard Worker {
1251*03f9172cSAndroid Build Coastguard Worker #ifdef CONFIG_DPP
1252*03f9172cSAndroid Build Coastguard Worker 	if (!wpa_s)
1253*03f9172cSAndroid Build Coastguard Worker 		return;
1254*03f9172cSAndroid Build Coastguard Worker 
1255*03f9172cSAndroid Build Coastguard Worker 	wpas_aidl_notify_dpp_resp_pending(wpa_s);
1256*03f9172cSAndroid Build Coastguard Worker #endif /* CONFIG_DPP */
1257*03f9172cSAndroid Build Coastguard Worker }
1258*03f9172cSAndroid Build Coastguard Worker 
1259*03f9172cSAndroid Build Coastguard Worker /* DPP Failure notifications */
wpas_notify_dpp_not_compatible(struct wpa_supplicant * wpa_s)1260*03f9172cSAndroid Build Coastguard Worker void wpas_notify_dpp_not_compatible(struct wpa_supplicant *wpa_s)
1261*03f9172cSAndroid Build Coastguard Worker {
1262*03f9172cSAndroid Build Coastguard Worker #ifdef CONFIG_DPP
1263*03f9172cSAndroid Build Coastguard Worker 	if (!wpa_s)
1264*03f9172cSAndroid Build Coastguard Worker 		return;
1265*03f9172cSAndroid Build Coastguard Worker 
1266*03f9172cSAndroid Build Coastguard Worker 	wpas_aidl_notify_dpp_not_compatible(wpa_s);
1267*03f9172cSAndroid Build Coastguard Worker #endif /* CONFIG_DPP */
1268*03f9172cSAndroid Build Coastguard Worker }
1269*03f9172cSAndroid Build Coastguard Worker 
wpas_notify_dpp_missing_auth(struct wpa_supplicant * wpa_s)1270*03f9172cSAndroid Build Coastguard Worker void wpas_notify_dpp_missing_auth(struct wpa_supplicant *wpa_s)
1271*03f9172cSAndroid Build Coastguard Worker {
1272*03f9172cSAndroid Build Coastguard Worker #ifdef CONFIG_DPP
1273*03f9172cSAndroid Build Coastguard Worker 	if (!wpa_s)
1274*03f9172cSAndroid Build Coastguard Worker 		return;
1275*03f9172cSAndroid Build Coastguard Worker 
1276*03f9172cSAndroid Build Coastguard Worker 	wpas_aidl_notify_dpp_missing_auth(wpa_s);
1277*03f9172cSAndroid Build Coastguard Worker #endif /* CONFIG_DPP */
1278*03f9172cSAndroid Build Coastguard Worker }
1279*03f9172cSAndroid Build Coastguard Worker 
wpas_notify_dpp_configuration_failure(struct wpa_supplicant * wpa_s)1280*03f9172cSAndroid Build Coastguard Worker void wpas_notify_dpp_configuration_failure(struct wpa_supplicant *wpa_s)
1281*03f9172cSAndroid Build Coastguard Worker {
1282*03f9172cSAndroid Build Coastguard Worker #ifdef CONFIG_DPP
1283*03f9172cSAndroid Build Coastguard Worker 	if (!wpa_s)
1284*03f9172cSAndroid Build Coastguard Worker 		return;
1285*03f9172cSAndroid Build Coastguard Worker 
1286*03f9172cSAndroid Build Coastguard Worker 	wpas_aidl_notify_dpp_configuration_failure(wpa_s);
1287*03f9172cSAndroid Build Coastguard Worker #endif /* CONFIG_DPP */
1288*03f9172cSAndroid Build Coastguard Worker }
1289*03f9172cSAndroid Build Coastguard Worker 
wpas_notify_dpp_timeout(struct wpa_supplicant * wpa_s)1290*03f9172cSAndroid Build Coastguard Worker void wpas_notify_dpp_timeout(struct wpa_supplicant *wpa_s)
1291*03f9172cSAndroid Build Coastguard Worker {
1292*03f9172cSAndroid Build Coastguard Worker #ifdef CONFIG_DPP
1293*03f9172cSAndroid Build Coastguard Worker 	if (!wpa_s)
1294*03f9172cSAndroid Build Coastguard Worker 		return;
1295*03f9172cSAndroid Build Coastguard Worker 
1296*03f9172cSAndroid Build Coastguard Worker 	wpas_aidl_notify_dpp_timeout(wpa_s);
1297*03f9172cSAndroid Build Coastguard Worker #endif /* CONFIG_DPP */
1298*03f9172cSAndroid Build Coastguard Worker }
1299*03f9172cSAndroid Build Coastguard Worker 
wpas_notify_dpp_auth_failure(struct wpa_supplicant * wpa_s)1300*03f9172cSAndroid Build Coastguard Worker void wpas_notify_dpp_auth_failure(struct wpa_supplicant *wpa_s)
1301*03f9172cSAndroid Build Coastguard Worker {
1302*03f9172cSAndroid Build Coastguard Worker #ifdef CONFIG_DPP
1303*03f9172cSAndroid Build Coastguard Worker 	if (!wpa_s)
1304*03f9172cSAndroid Build Coastguard Worker 		return;
1305*03f9172cSAndroid Build Coastguard Worker 
1306*03f9172cSAndroid Build Coastguard Worker 	wpas_aidl_notify_dpp_auth_failure(wpa_s);
1307*03f9172cSAndroid Build Coastguard Worker #endif /* CONFIG_DPP */
1308*03f9172cSAndroid Build Coastguard Worker }
1309*03f9172cSAndroid Build Coastguard Worker 
wpas_notify_dpp_failure(struct wpa_supplicant * wpa_s)1310*03f9172cSAndroid Build Coastguard Worker void wpas_notify_dpp_failure(struct wpa_supplicant *wpa_s)
1311*03f9172cSAndroid Build Coastguard Worker {
1312*03f9172cSAndroid Build Coastguard Worker #ifdef CONFIG_DPP
1313*03f9172cSAndroid Build Coastguard Worker 	if (!wpa_s)
1314*03f9172cSAndroid Build Coastguard Worker 		return;
1315*03f9172cSAndroid Build Coastguard Worker 
1316*03f9172cSAndroid Build Coastguard Worker 	wpas_aidl_notify_dpp_fail(wpa_s);
1317*03f9172cSAndroid Build Coastguard Worker #endif /* CONFIG_DPP */
1318*03f9172cSAndroid Build Coastguard Worker }
1319*03f9172cSAndroid Build Coastguard Worker 
wpas_notify_dpp_config_sent_wait_response(struct wpa_supplicant * wpa_s)1320*03f9172cSAndroid Build Coastguard Worker void wpas_notify_dpp_config_sent_wait_response(struct wpa_supplicant *wpa_s)
1321*03f9172cSAndroid Build Coastguard Worker {
1322*03f9172cSAndroid Build Coastguard Worker #ifdef CONFIG_DPP2
1323*03f9172cSAndroid Build Coastguard Worker 	wpas_aidl_notify_dpp_config_sent_wait_response(wpa_s);
1324*03f9172cSAndroid Build Coastguard Worker #endif /* CONFIG_DPP2 */
1325*03f9172cSAndroid Build Coastguard Worker }
1326*03f9172cSAndroid Build Coastguard Worker 
wpas_notify_dpp_config_accepted(struct wpa_supplicant * wpa_s)1327*03f9172cSAndroid Build Coastguard Worker void wpas_notify_dpp_config_accepted(struct wpa_supplicant *wpa_s)
1328*03f9172cSAndroid Build Coastguard Worker {
1329*03f9172cSAndroid Build Coastguard Worker #ifdef CONFIG_DPP2
1330*03f9172cSAndroid Build Coastguard Worker 	wpas_aidl_notify_dpp_config_accepted(wpa_s);
1331*03f9172cSAndroid Build Coastguard Worker #endif /* CONFIG_DPP2 */
1332*03f9172cSAndroid Build Coastguard Worker }
1333*03f9172cSAndroid Build Coastguard Worker 
1334*03f9172cSAndroid Build Coastguard Worker #ifdef CONFIG_DPP
wpas_notify_dpp_conn_status(struct wpa_supplicant * wpa_s,enum dpp_status_error status,const char * ssid,const char * channel_list,unsigned short band_list[],int size)1335*03f9172cSAndroid Build Coastguard Worker void wpas_notify_dpp_conn_status(struct wpa_supplicant *wpa_s,
1336*03f9172cSAndroid Build Coastguard Worker 		enum dpp_status_error status, const char *ssid,
1337*03f9172cSAndroid Build Coastguard Worker 		const char *channel_list, unsigned short band_list[], int size)
1338*03f9172cSAndroid Build Coastguard Worker {
1339*03f9172cSAndroid Build Coastguard Worker #ifdef CONFIG_DPP2
1340*03f9172cSAndroid Build Coastguard Worker 	wpas_aidl_notify_dpp_conn_status(wpa_s, status, ssid, channel_list, band_list, size);
1341*03f9172cSAndroid Build Coastguard Worker #endif /* CONFIG_DPP2 */
1342*03f9172cSAndroid Build Coastguard Worker }
1343*03f9172cSAndroid Build Coastguard Worker #endif /* CONFIG_DPP */
1344*03f9172cSAndroid Build Coastguard Worker 
wpas_notify_dpp_config_rejected(struct wpa_supplicant * wpa_s)1345*03f9172cSAndroid Build Coastguard Worker void wpas_notify_dpp_config_rejected(struct wpa_supplicant *wpa_s)
1346*03f9172cSAndroid Build Coastguard Worker {
1347*03f9172cSAndroid Build Coastguard Worker #ifdef CONFIG_DPP2
1348*03f9172cSAndroid Build Coastguard Worker 	wpas_aidl_notify_dpp_config_rejected(wpa_s);
1349*03f9172cSAndroid Build Coastguard Worker #endif /* CONFIG_DPP2 */
1350*03f9172cSAndroid Build Coastguard Worker }
1351*03f9172cSAndroid Build Coastguard Worker 
wpas_notify_pmk_cache_added(struct wpa_supplicant * wpa_s,struct rsn_pmksa_cache_entry * entry)1352*03f9172cSAndroid Build Coastguard Worker void wpas_notify_pmk_cache_added(struct wpa_supplicant *wpa_s,
1353*03f9172cSAndroid Build Coastguard Worker 				 struct rsn_pmksa_cache_entry *entry)
1354*03f9172cSAndroid Build Coastguard Worker {
1355*03f9172cSAndroid Build Coastguard Worker 	if (!wpa_s)
1356*03f9172cSAndroid Build Coastguard Worker 		return;
1357*03f9172cSAndroid Build Coastguard Worker 
1358*03f9172cSAndroid Build Coastguard Worker 	wpas_aidl_notify_pmk_cache_added(wpa_s, entry);
1359*03f9172cSAndroid Build Coastguard Worker }
1360*03f9172cSAndroid Build Coastguard Worker 
wpas_notify_transition_disable(struct wpa_supplicant * wpa_s,struct wpa_ssid * ssid,u8 bitmap)1361*03f9172cSAndroid Build Coastguard Worker void wpas_notify_transition_disable(struct wpa_supplicant *wpa_s,
1362*03f9172cSAndroid Build Coastguard Worker 				    struct wpa_ssid *ssid,
1363*03f9172cSAndroid Build Coastguard Worker 				    u8 bitmap)
1364*03f9172cSAndroid Build Coastguard Worker {
1365*03f9172cSAndroid Build Coastguard Worker 	if (!wpa_s)
1366*03f9172cSAndroid Build Coastguard Worker 		return;
1367*03f9172cSAndroid Build Coastguard Worker 
1368*03f9172cSAndroid Build Coastguard Worker 	if (!ssid)
1369*03f9172cSAndroid Build Coastguard Worker 		return;
1370*03f9172cSAndroid Build Coastguard Worker 
1371*03f9172cSAndroid Build Coastguard Worker 	wpas_aidl_notify_transition_disable(wpa_s, ssid, bitmap);
1372*03f9172cSAndroid Build Coastguard Worker }
1373*03f9172cSAndroid Build Coastguard Worker 
wpas_notify_network_not_found(struct wpa_supplicant * wpa_s)1374*03f9172cSAndroid Build Coastguard Worker void wpas_notify_network_not_found(struct wpa_supplicant *wpa_s)
1375*03f9172cSAndroid Build Coastguard Worker {
1376*03f9172cSAndroid Build Coastguard Worker 	if (!wpa_s)
1377*03f9172cSAndroid Build Coastguard Worker 		return;
1378*03f9172cSAndroid Build Coastguard Worker 
1379*03f9172cSAndroid Build Coastguard Worker 	wpas_aidl_notify_network_not_found(wpa_s);
1380*03f9172cSAndroid Build Coastguard Worker }
1381*03f9172cSAndroid Build Coastguard Worker 
1382*03f9172cSAndroid Build Coastguard Worker #ifdef CONFIG_INTERWORKING
1383*03f9172cSAndroid Build Coastguard Worker 
wpas_notify_interworking_ap_added(struct wpa_supplicant * wpa_s,struct wpa_bss * bss,struct wpa_cred * cred,int excluded,const char * type,int bh,int bss_load,int conn_capab)1384*03f9172cSAndroid Build Coastguard Worker void wpas_notify_interworking_ap_added(struct wpa_supplicant *wpa_s,
1385*03f9172cSAndroid Build Coastguard Worker 				       struct wpa_bss *bss,
1386*03f9172cSAndroid Build Coastguard Worker 				       struct wpa_cred *cred, int excluded,
1387*03f9172cSAndroid Build Coastguard Worker 				       const char *type, int bh, int bss_load,
1388*03f9172cSAndroid Build Coastguard Worker 				       int conn_capab)
1389*03f9172cSAndroid Build Coastguard Worker {
1390*03f9172cSAndroid Build Coastguard Worker 	wpa_msg(wpa_s, MSG_INFO, "%s" MACSTR " type=%s%s%s%s id=%d priority=%d sp_priority=%d",
1391*03f9172cSAndroid Build Coastguard Worker 		excluded ? INTERWORKING_EXCLUDED : INTERWORKING_AP,
1392*03f9172cSAndroid Build Coastguard Worker 		MAC2STR(bss->bssid), type,
1393*03f9172cSAndroid Build Coastguard Worker 		bh ? " below_min_backhaul=1" : "",
1394*03f9172cSAndroid Build Coastguard Worker 		bss_load ? " over_max_bss_load=1" : "",
1395*03f9172cSAndroid Build Coastguard Worker 		conn_capab ? " conn_capab_missing=1" : "",
1396*03f9172cSAndroid Build Coastguard Worker 		cred->id, cred->priority, cred->sp_priority);
1397*03f9172cSAndroid Build Coastguard Worker 
1398*03f9172cSAndroid Build Coastguard Worker 	wpas_dbus_signal_interworking_ap_added(wpa_s, bss, cred, type, excluded,
1399*03f9172cSAndroid Build Coastguard Worker 					       bh, bss_load, conn_capab);
1400*03f9172cSAndroid Build Coastguard Worker }
1401*03f9172cSAndroid Build Coastguard Worker 
1402*03f9172cSAndroid Build Coastguard Worker 
wpas_notify_interworking_select_done(struct wpa_supplicant * wpa_s)1403*03f9172cSAndroid Build Coastguard Worker void wpas_notify_interworking_select_done(struct wpa_supplicant *wpa_s)
1404*03f9172cSAndroid Build Coastguard Worker {
1405*03f9172cSAndroid Build Coastguard Worker 	wpas_dbus_signal_interworking_select_done(wpa_s);
1406*03f9172cSAndroid Build Coastguard Worker }
1407*03f9172cSAndroid Build Coastguard Worker 
1408*03f9172cSAndroid Build Coastguard Worker 
1409*03f9172cSAndroid Build Coastguard Worker #endif /* CONFIG_INTERWORKING */
1410*03f9172cSAndroid Build Coastguard Worker 
wpas_notify_eap_method_selected(struct wpa_supplicant * wpa_s,const char * reason_string)1411*03f9172cSAndroid Build Coastguard Worker void wpas_notify_eap_method_selected(struct wpa_supplicant *wpa_s,
1412*03f9172cSAndroid Build Coastguard Worker 			const char* reason_string)
1413*03f9172cSAndroid Build Coastguard Worker {
1414*03f9172cSAndroid Build Coastguard Worker 	wpas_aidl_notify_eap_method_selected(wpa_s, reason_string);
1415*03f9172cSAndroid Build Coastguard Worker }
1416*03f9172cSAndroid Build Coastguard Worker 
wpas_notify_ssid_temp_disabled(struct wpa_supplicant * wpa_s,const char * reason_string)1417*03f9172cSAndroid Build Coastguard Worker void wpas_notify_ssid_temp_disabled(struct wpa_supplicant *wpa_s,
1418*03f9172cSAndroid Build Coastguard Worker 			const char *reason_string)
1419*03f9172cSAndroid Build Coastguard Worker {
1420*03f9172cSAndroid Build Coastguard Worker 	wpas_aidl_notify_ssid_temp_disabled(wpa_s, reason_string);
1421*03f9172cSAndroid Build Coastguard Worker }
1422*03f9172cSAndroid Build Coastguard Worker 
wpas_notify_open_ssl_failure(struct wpa_supplicant * wpa_s,const char * reason_string)1423*03f9172cSAndroid Build Coastguard Worker void wpas_notify_open_ssl_failure(struct wpa_supplicant *wpa_s,
1424*03f9172cSAndroid Build Coastguard Worker 			const char *reason_string)
1425*03f9172cSAndroid Build Coastguard Worker {
1426*03f9172cSAndroid Build Coastguard Worker 	wpas_aidl_notify_open_ssl_failure(wpa_s, reason_string);
1427*03f9172cSAndroid Build Coastguard Worker }
1428*03f9172cSAndroid Build Coastguard Worker 
wpas_notify_qos_policy_reset(struct wpa_supplicant * wpa_s)1429*03f9172cSAndroid Build Coastguard Worker void wpas_notify_qos_policy_reset(struct wpa_supplicant *wpa_s)
1430*03f9172cSAndroid Build Coastguard Worker {
1431*03f9172cSAndroid Build Coastguard Worker 	if (!wpa_s)
1432*03f9172cSAndroid Build Coastguard Worker 		return;
1433*03f9172cSAndroid Build Coastguard Worker 
1434*03f9172cSAndroid Build Coastguard Worker 	wpas_aidl_notify_qos_policy_reset(wpa_s);
1435*03f9172cSAndroid Build Coastguard Worker }
1436*03f9172cSAndroid Build Coastguard Worker 
wpas_notify_qos_policy_request(struct wpa_supplicant * wpa_s,struct dscp_policy_data * policies,int num_policies)1437*03f9172cSAndroid Build Coastguard Worker void wpas_notify_qos_policy_request(struct wpa_supplicant *wpa_s,
1438*03f9172cSAndroid Build Coastguard Worker 	struct dscp_policy_data *policies, int num_policies)
1439*03f9172cSAndroid Build Coastguard Worker {
1440*03f9172cSAndroid Build Coastguard Worker 	if (!wpa_s || !policies)
1441*03f9172cSAndroid Build Coastguard Worker 		return;
1442*03f9172cSAndroid Build Coastguard Worker 
1443*03f9172cSAndroid Build Coastguard Worker 	wpas_aidl_notify_qos_policy_request(wpa_s, policies, num_policies);
1444*03f9172cSAndroid Build Coastguard Worker }
1445*03f9172cSAndroid Build Coastguard Worker 
wpas_notify_frequency_changed(struct wpa_supplicant * wpa_s,int frequency)1446*03f9172cSAndroid Build Coastguard Worker void wpas_notify_frequency_changed(struct wpa_supplicant *wpa_s, int frequency)
1447*03f9172cSAndroid Build Coastguard Worker {
1448*03f9172cSAndroid Build Coastguard Worker 	if (!wpa_s)
1449*03f9172cSAndroid Build Coastguard Worker 		return;
1450*03f9172cSAndroid Build Coastguard Worker 
1451*03f9172cSAndroid Build Coastguard Worker 	wpas_aidl_notify_frequency_changed(wpa_s, frequency);
1452*03f9172cSAndroid Build Coastguard Worker }
1453*03f9172cSAndroid Build Coastguard Worker 
wpas_get_certificate(const char * alias,uint8_t ** value)1454*03f9172cSAndroid Build Coastguard Worker ssize_t wpas_get_certificate(const char *alias, uint8_t** value)
1455*03f9172cSAndroid Build Coastguard Worker {
1456*03f9172cSAndroid Build Coastguard Worker 	wpa_printf(MSG_INFO, "wpas_get_certificate");
1457*03f9172cSAndroid Build Coastguard Worker 	return wpas_aidl_get_certificate(alias, value);
1458*03f9172cSAndroid Build Coastguard Worker }
1459*03f9172cSAndroid Build Coastguard Worker 
wpas_list_aliases(const char * prefix,char *** aliases)1460*03f9172cSAndroid Build Coastguard Worker ssize_t wpas_list_aliases(const char *prefix, char ***aliases)
1461*03f9172cSAndroid Build Coastguard Worker {
1462*03f9172cSAndroid Build Coastguard Worker 	return wpas_aidl_list_aliases(prefix, aliases);
1463*03f9172cSAndroid Build Coastguard Worker }
1464*03f9172cSAndroid Build Coastguard Worker 
wpas_notify_signal_change(struct wpa_supplicant * wpa_s)1465*03f9172cSAndroid Build Coastguard Worker void wpas_notify_signal_change(struct wpa_supplicant *wpa_s)
1466*03f9172cSAndroid Build Coastguard Worker {
1467*03f9172cSAndroid Build Coastguard Worker 	wpas_dbus_signal_prop_changed(wpa_s, WPAS_DBUS_PROP_SIGNAL_CHANGE);
1468*03f9172cSAndroid Build Coastguard Worker }
1469*03f9172cSAndroid Build Coastguard Worker 
wpas_notify_qos_policy_scs_response(struct wpa_supplicant * wpa_s,unsigned int num_scs_resp,int ** scs_resp)1470*03f9172cSAndroid Build Coastguard Worker void wpas_notify_qos_policy_scs_response(struct wpa_supplicant *wpa_s,
1471*03f9172cSAndroid Build Coastguard Worker 		unsigned int num_scs_resp, int **scs_resp)
1472*03f9172cSAndroid Build Coastguard Worker {
1473*03f9172cSAndroid Build Coastguard Worker 	if (!wpa_s || !num_scs_resp || !scs_resp)
1474*03f9172cSAndroid Build Coastguard Worker 		return;
1475*03f9172cSAndroid Build Coastguard Worker 
1476*03f9172cSAndroid Build Coastguard Worker 	wpas_aidl_notify_qos_policy_scs_response(wpa_s, num_scs_resp, scs_resp);
1477*03f9172cSAndroid Build Coastguard Worker }
1478*03f9172cSAndroid Build Coastguard Worker 
wpas_notify_hs20_t_c_acceptance(struct wpa_supplicant * wpa_s,const char * url)1479*03f9172cSAndroid Build Coastguard Worker void wpas_notify_hs20_t_c_acceptance(struct wpa_supplicant *wpa_s,
1480*03f9172cSAndroid Build Coastguard Worker 				     const char *url)
1481*03f9172cSAndroid Build Coastguard Worker {
1482*03f9172cSAndroid Build Coastguard Worker #ifdef CONFIG_HS20
1483*03f9172cSAndroid Build Coastguard Worker 	if (!wpa_s || !url)
1484*03f9172cSAndroid Build Coastguard Worker 		return;
1485*03f9172cSAndroid Build Coastguard Worker 
1486*03f9172cSAndroid Build Coastguard Worker 	wpa_msg(wpa_s, MSG_INFO, HS20_T_C_ACCEPTANCE "%s", url);
1487*03f9172cSAndroid Build Coastguard Worker 	wpas_aidl_notify_hs20_rx_terms_and_conditions_acceptance(wpa_s, url);
1488*03f9172cSAndroid Build Coastguard Worker 	wpas_dbus_signal_hs20_t_c_acceptance(wpa_s, url);
1489*03f9172cSAndroid Build Coastguard Worker #endif /* CONFIG_HS20 */
1490*03f9172cSAndroid Build Coastguard Worker }
1491*03f9172cSAndroid Build Coastguard Worker 
1492*03f9172cSAndroid Build Coastguard Worker #ifdef CONFIG_NAN_USD
1493*03f9172cSAndroid Build Coastguard Worker 
wpas_notify_nan_discovery_result(struct wpa_supplicant * wpa_s,enum nan_service_protocol_type srv_proto_type,int subscribe_id,int peer_publish_id,const u8 * peer_addr,bool fsd,bool fsd_gas,const u8 * ssi,size_t ssi_len)1494*03f9172cSAndroid Build Coastguard Worker void wpas_notify_nan_discovery_result(struct wpa_supplicant *wpa_s,
1495*03f9172cSAndroid Build Coastguard Worker 				      enum nan_service_protocol_type
1496*03f9172cSAndroid Build Coastguard Worker 				      srv_proto_type,
1497*03f9172cSAndroid Build Coastguard Worker 				      int subscribe_id, int peer_publish_id,
1498*03f9172cSAndroid Build Coastguard Worker 				      const u8 *peer_addr,
1499*03f9172cSAndroid Build Coastguard Worker 				      bool fsd, bool fsd_gas,
1500*03f9172cSAndroid Build Coastguard Worker 				      const u8 *ssi, size_t ssi_len)
1501*03f9172cSAndroid Build Coastguard Worker {
1502*03f9172cSAndroid Build Coastguard Worker 	char *ssi_hex;
1503*03f9172cSAndroid Build Coastguard Worker 
1504*03f9172cSAndroid Build Coastguard Worker 	ssi_hex = os_zalloc(2 * ssi_len + 1);
1505*03f9172cSAndroid Build Coastguard Worker 	if (!ssi_hex)
1506*03f9172cSAndroid Build Coastguard Worker 		return;
1507*03f9172cSAndroid Build Coastguard Worker 	if (ssi)
1508*03f9172cSAndroid Build Coastguard Worker 		wpa_snprintf_hex(ssi_hex, 2 * ssi_len + 1, ssi, ssi_len);
1509*03f9172cSAndroid Build Coastguard Worker 	wpa_msg(wpa_s, MSG_INFO, NAN_DISCOVERY_RESULT
1510*03f9172cSAndroid Build Coastguard Worker 		"subscribe_id=%d publish_id=%d address=" MACSTR
1511*03f9172cSAndroid Build Coastguard Worker 		" fsd=%d fsd_gas=%d srv_proto_type=%u ssi=%s",
1512*03f9172cSAndroid Build Coastguard Worker 		subscribe_id, peer_publish_id, MAC2STR(peer_addr),
1513*03f9172cSAndroid Build Coastguard Worker 		fsd, fsd_gas, srv_proto_type, ssi_hex);
1514*03f9172cSAndroid Build Coastguard Worker 	os_free(ssi_hex);
1515*03f9172cSAndroid Build Coastguard Worker }
1516*03f9172cSAndroid Build Coastguard Worker 
1517*03f9172cSAndroid Build Coastguard Worker 
wpas_notify_nan_replied(struct wpa_supplicant * wpa_s,enum nan_service_protocol_type srv_proto_type,int publish_id,int peer_subscribe_id,const u8 * peer_addr,const u8 * ssi,size_t ssi_len)1518*03f9172cSAndroid Build Coastguard Worker void wpas_notify_nan_replied(struct wpa_supplicant *wpa_s,
1519*03f9172cSAndroid Build Coastguard Worker 			     enum nan_service_protocol_type srv_proto_type,
1520*03f9172cSAndroid Build Coastguard Worker 			     int publish_id, int peer_subscribe_id,
1521*03f9172cSAndroid Build Coastguard Worker 			     const u8 *peer_addr,
1522*03f9172cSAndroid Build Coastguard Worker 			     const u8 *ssi, size_t ssi_len)
1523*03f9172cSAndroid Build Coastguard Worker {
1524*03f9172cSAndroid Build Coastguard Worker 	char *ssi_hex;
1525*03f9172cSAndroid Build Coastguard Worker 
1526*03f9172cSAndroid Build Coastguard Worker 	ssi_hex = os_zalloc(2 * ssi_len + 1);
1527*03f9172cSAndroid Build Coastguard Worker 	if (!ssi_hex)
1528*03f9172cSAndroid Build Coastguard Worker 		return;
1529*03f9172cSAndroid Build Coastguard Worker 	if (ssi)
1530*03f9172cSAndroid Build Coastguard Worker 		wpa_snprintf_hex(ssi_hex, 2 * ssi_len + 1, ssi, ssi_len);
1531*03f9172cSAndroid Build Coastguard Worker 	wpa_msg(wpa_s, MSG_INFO, NAN_REPLIED
1532*03f9172cSAndroid Build Coastguard Worker 		"publish_id=%d address=" MACSTR
1533*03f9172cSAndroid Build Coastguard Worker 		" subscribe_id=%d srv_proto_type=%u ssi=%s",
1534*03f9172cSAndroid Build Coastguard Worker 		publish_id, MAC2STR(peer_addr), peer_subscribe_id,
1535*03f9172cSAndroid Build Coastguard Worker 		srv_proto_type, ssi_hex);
1536*03f9172cSAndroid Build Coastguard Worker 	os_free(ssi_hex);
1537*03f9172cSAndroid Build Coastguard Worker }
1538*03f9172cSAndroid Build Coastguard Worker 
1539*03f9172cSAndroid Build Coastguard Worker 
wpas_notify_nan_receive(struct wpa_supplicant * wpa_s,int id,int peer_instance_id,const u8 * peer_addr,const u8 * ssi,size_t ssi_len)1540*03f9172cSAndroid Build Coastguard Worker void wpas_notify_nan_receive(struct wpa_supplicant *wpa_s, int id,
1541*03f9172cSAndroid Build Coastguard Worker 			     int peer_instance_id, const u8 *peer_addr,
1542*03f9172cSAndroid Build Coastguard Worker 			     const u8 *ssi, size_t ssi_len)
1543*03f9172cSAndroid Build Coastguard Worker {
1544*03f9172cSAndroid Build Coastguard Worker 	char *ssi_hex;
1545*03f9172cSAndroid Build Coastguard Worker 
1546*03f9172cSAndroid Build Coastguard Worker 	ssi_hex = os_zalloc(2 * ssi_len + 1);
1547*03f9172cSAndroid Build Coastguard Worker 	if (!ssi_hex)
1548*03f9172cSAndroid Build Coastguard Worker 		return;
1549*03f9172cSAndroid Build Coastguard Worker 	if (ssi)
1550*03f9172cSAndroid Build Coastguard Worker 		wpa_snprintf_hex(ssi_hex, 2 * ssi_len + 1, ssi, ssi_len);
1551*03f9172cSAndroid Build Coastguard Worker 	wpa_msg(wpa_s, MSG_INFO, NAN_RECEIVE
1552*03f9172cSAndroid Build Coastguard Worker 		"id=%d peer_instance_id=%d address=" MACSTR " ssi=%s",
1553*03f9172cSAndroid Build Coastguard Worker 		id, peer_instance_id, MAC2STR(peer_addr), ssi_hex);
1554*03f9172cSAndroid Build Coastguard Worker 	os_free(ssi_hex);
1555*03f9172cSAndroid Build Coastguard Worker }
1556*03f9172cSAndroid Build Coastguard Worker 
1557*03f9172cSAndroid Build Coastguard Worker 
nan_reason_txt(enum nan_de_reason reason)1558*03f9172cSAndroid Build Coastguard Worker static const char * nan_reason_txt(enum nan_de_reason reason)
1559*03f9172cSAndroid Build Coastguard Worker {
1560*03f9172cSAndroid Build Coastguard Worker 	switch (reason) {
1561*03f9172cSAndroid Build Coastguard Worker 	case NAN_DE_REASON_TIMEOUT:
1562*03f9172cSAndroid Build Coastguard Worker 		return "timeout";
1563*03f9172cSAndroid Build Coastguard Worker 	case NAN_DE_REASON_USER_REQUEST:
1564*03f9172cSAndroid Build Coastguard Worker 		return "user-request";
1565*03f9172cSAndroid Build Coastguard Worker 	case NAN_DE_REASON_FAILURE:
1566*03f9172cSAndroid Build Coastguard Worker 		return "failure";
1567*03f9172cSAndroid Build Coastguard Worker 	}
1568*03f9172cSAndroid Build Coastguard Worker 
1569*03f9172cSAndroid Build Coastguard Worker 	return "unknown";
1570*03f9172cSAndroid Build Coastguard Worker }
1571*03f9172cSAndroid Build Coastguard Worker 
1572*03f9172cSAndroid Build Coastguard Worker 
wpas_notify_nan_publish_terminated(struct wpa_supplicant * wpa_s,int publish_id,enum nan_de_reason reason)1573*03f9172cSAndroid Build Coastguard Worker void wpas_notify_nan_publish_terminated(struct wpa_supplicant *wpa_s,
1574*03f9172cSAndroid Build Coastguard Worker 					int publish_id,
1575*03f9172cSAndroid Build Coastguard Worker 					enum nan_de_reason reason)
1576*03f9172cSAndroid Build Coastguard Worker {
1577*03f9172cSAndroid Build Coastguard Worker 	wpa_msg(wpa_s, MSG_INFO, NAN_PUBLISH_TERMINATED
1578*03f9172cSAndroid Build Coastguard Worker 		"publish_id=%d reason=%s",
1579*03f9172cSAndroid Build Coastguard Worker 		publish_id, nan_reason_txt(reason));
1580*03f9172cSAndroid Build Coastguard Worker }
1581*03f9172cSAndroid Build Coastguard Worker 
1582*03f9172cSAndroid Build Coastguard Worker 
wpas_notify_nan_subscribe_terminated(struct wpa_supplicant * wpa_s,int subscribe_id,enum nan_de_reason reason)1583*03f9172cSAndroid Build Coastguard Worker void wpas_notify_nan_subscribe_terminated(struct wpa_supplicant *wpa_s,
1584*03f9172cSAndroid Build Coastguard Worker 					  int subscribe_id,
1585*03f9172cSAndroid Build Coastguard Worker 					  enum nan_de_reason reason)
1586*03f9172cSAndroid Build Coastguard Worker {
1587*03f9172cSAndroid Build Coastguard Worker 	wpa_msg(wpa_s, MSG_INFO, NAN_SUBSCRIBE_TERMINATED
1588*03f9172cSAndroid Build Coastguard Worker 		"subscribe_id=%d reason=%s",
1589*03f9172cSAndroid Build Coastguard Worker 		subscribe_id, nan_reason_txt(reason));
1590*03f9172cSAndroid Build Coastguard Worker }
1591*03f9172cSAndroid Build Coastguard Worker 
1592*03f9172cSAndroid Build Coastguard Worker #endif /* CONFIG_NAN_USD */
1593