xref: /aosp_15_r20/external/wpa_supplicant_8/wpa_supplicant/aidl/vendor/aidl.cpp (revision 03f9172ca588f91df233974f4258bab95191f931)
1 /*
2  * WPA Supplicant - Aidl entry point to wpa_supplicant core
3  * Copyright (c) 2021, Google Inc. All rights reserved.
4  *
5  * This software may be distributed under the terms of the BSD license.
6  * See README for more details.
7  */
8 
9 #include <android/binder_process.h>
10 #include <android/binder_manager.h>
11 
12 #include "aidl_manager.h"
13 
14 extern "C"
15 {
16 #include "aidl.h"
17 #include "aidl/shared/aidl_i.h"
18 #include "utils/common.h"
19 #include "utils/eloop.h"
20 #include "utils/includes.h"
21 #include "dpp.h"
22 }
23 
24 using aidl::android::hardware::wifi::supplicant::AidlManager;
25 using aidl::android::hardware::wifi::supplicant::AuxiliarySupplicantEventCode;
26 using aidl::android::hardware::wifi::supplicant::DppEventType;
27 using aidl::android::hardware::wifi::supplicant::DppFailureCode;
28 using aidl::android::hardware::wifi::supplicant::DppProgressCode;
29 
30 static void wpas_aidl_notify_dpp_failure(struct wpa_supplicant *wpa_s, DppFailureCode code);
31 static void wpas_aidl_notify_dpp_progress(struct wpa_supplicant *wpa_s, DppProgressCode code);
32 static void wpas_aidl_notify_dpp_success(struct wpa_supplicant *wpa_s, DppEventType code);
33 
wpas_aidl_sock_handler(int,void *,void *)34 void wpas_aidl_sock_handler(
35 	int /* sock */, void * /* eloop_ctx */, void * /* sock_ctx */)
36 {
37 	ABinderProcess_handlePolledCommands();
38 }
39 
wpas_aidl_init(struct wpa_global * global)40 struct wpas_aidl_priv *wpas_aidl_init(struct wpa_global *global)
41 {
42 	struct wpas_aidl_priv *priv;
43 	AidlManager *aidl_manager;
44 
45 	priv = (wpas_aidl_priv *)os_zalloc(sizeof(*priv));
46 	if (!priv)
47 		return NULL;
48 	priv->global = global;
49 
50 	wpa_printf(MSG_DEBUG, "Initing aidl control");
51 
52 	ABinderProcess_setupPolling(&priv->aidl_fd);
53 	if (priv->aidl_fd < 0)
54 		goto err;
55 
56 	wpa_printf(MSG_INFO, "Processing aidl events on FD %d", priv->aidl_fd);
57 	// Look for read events from the aidl socket in the eloop.
58 	if (eloop_register_read_sock(
59 		priv->aidl_fd, wpas_aidl_sock_handler, global, priv) < 0)
60 		goto err;
61 
62 	aidl_manager = AidlManager::getInstance();
63 	if (!aidl_manager)
64 		goto err;
65 	if (aidl_manager->registerAidlService(global)) {
66 		goto err;
67 	}
68 	// We may not need to store this aidl manager reference in the
69 	// global data strucure because we've made it a singleton class.
70 	priv->aidl_manager = (void *)aidl_manager;
71 
72 	return priv;
73 err:
74 	wpas_aidl_deinit(priv);
75 	return NULL;
76 }
77 
wpas_aidl_deinit(struct wpas_aidl_priv * priv)78 void wpas_aidl_deinit(struct wpas_aidl_priv *priv)
79 {
80 	if (!priv)
81 		return;
82 
83 	wpa_printf(MSG_DEBUG, "Deiniting aidl control");
84 
85 	AidlManager::destroyInstance();
86 	eloop_unregister_read_sock(priv->aidl_fd);
87 	os_free(priv);
88 }
89 
wpas_aidl_register_interface(struct wpa_supplicant * wpa_s)90 int wpas_aidl_register_interface(struct wpa_supplicant *wpa_s)
91 {
92 	if (!wpa_s || !wpa_s->global->aidl)
93 		return 1;
94 
95 	wpa_printf(
96 		MSG_DEBUG, "Registering interface to aidl control: %s",
97 		wpa_s->ifname);
98 
99 	AidlManager *aidl_manager = AidlManager::getInstance();
100 	if (!aidl_manager)
101 		return 1;
102 
103 	return aidl_manager->registerInterface(wpa_s);
104 }
105 
wpas_aidl_unregister_interface(struct wpa_supplicant * wpa_s)106 int wpas_aidl_unregister_interface(struct wpa_supplicant *wpa_s)
107 {
108 	if (!wpa_s || !wpa_s->global->aidl)
109 		return 1;
110 
111 	wpa_printf(
112 		MSG_DEBUG, "Deregistering interface from aidl control: %s",
113 		wpa_s->ifname);
114 
115 	AidlManager *aidl_manager = AidlManager::getInstance();
116 	if (!aidl_manager)
117 		return 1;
118 
119 	return aidl_manager->unregisterInterface(wpa_s);
120 }
121 
wpas_aidl_register_network(struct wpa_supplicant * wpa_s,struct wpa_ssid * ssid)122 int wpas_aidl_register_network(
123 	struct wpa_supplicant *wpa_s, struct wpa_ssid *ssid)
124 {
125 	if (!wpa_s || !wpa_s->global->aidl || !ssid)
126 		return 1;
127 
128 	wpa_printf(
129 		MSG_DEBUG, "Registering network to aidl control: %d", ssid->id);
130 
131 	AidlManager *aidl_manager = AidlManager::getInstance();
132 	if (!aidl_manager)
133 		return 1;
134 
135 	return aidl_manager->registerNetwork(wpa_s, ssid);
136 }
137 
wpas_aidl_unregister_network(struct wpa_supplicant * wpa_s,struct wpa_ssid * ssid)138 int wpas_aidl_unregister_network(
139 	struct wpa_supplicant *wpa_s, struct wpa_ssid *ssid)
140 {
141 	if (!wpa_s || !wpa_s->global->aidl || !ssid)
142 		return 1;
143 
144 	wpa_printf(
145 		MSG_DEBUG, "Deregistering network from aidl control: %d", ssid->id);
146 
147 	AidlManager *aidl_manager = AidlManager::getInstance();
148 	if (!aidl_manager)
149 		return 1;
150 
151 	return aidl_manager->unregisterNetwork(wpa_s, ssid);
152 }
153 
wpas_aidl_notify_state_changed(struct wpa_supplicant * wpa_s)154 int wpas_aidl_notify_state_changed(struct wpa_supplicant *wpa_s)
155 {
156 	if (!wpa_s || !wpa_s->global->aidl)
157 		return 1;
158 
159 	wpa_printf(
160 		MSG_DEBUG, "Notifying state change event to aidl control: %d",
161 		wpa_s->wpa_state);
162 
163 	AidlManager *aidl_manager = AidlManager::getInstance();
164 	if (!aidl_manager)
165 		return 1;
166 
167 	return aidl_manager->notifyStateChange(wpa_s);
168 }
169 
wpas_aidl_notify_network_request(struct wpa_supplicant * wpa_s,struct wpa_ssid * ssid,enum wpa_ctrl_req_type rtype,const char * default_txt)170 int wpas_aidl_notify_network_request(
171 	struct wpa_supplicant *wpa_s, struct wpa_ssid *ssid,
172 	enum wpa_ctrl_req_type rtype, const char *default_txt)
173 {
174 	if (!wpa_s || !wpa_s->global->aidl || !ssid)
175 		return 1;
176 
177 	wpa_printf(
178 		MSG_DEBUG, "Notifying network request to aidl control: %d",
179 		ssid->id);
180 
181 	AidlManager *aidl_manager = AidlManager::getInstance();
182 	if (!aidl_manager)
183 		return 1;
184 
185 	return aidl_manager->notifyNetworkRequest(
186 		wpa_s, ssid, rtype, default_txt);
187 }
188 
wpas_aidl_notify_permanent_id_req_denied(struct wpa_supplicant * wpa_s)189 void wpas_aidl_notify_permanent_id_req_denied(
190 		struct wpa_supplicant *wpa_s)
191 {
192 	if (!wpa_s || !wpa_s->global->aidl)
193 		return;
194 
195 	wpa_printf(MSG_DEBUG, "Notifying permanent_id_req denied to aidl control.");
196 
197 	AidlManager *aidl_manager = AidlManager::getInstance();
198 	if (!aidl_manager)
199 		return;
200 
201 	return aidl_manager->notifyPermanentIdReqDenied(wpa_s);
202 }
203 
wpas_aidl_notify_anqp_query_done(struct wpa_supplicant * wpa_s,const u8 * bssid,const char * result,const struct wpa_bss_anqp * anqp)204 void wpas_aidl_notify_anqp_query_done(
205 	struct wpa_supplicant *wpa_s, const u8 *bssid, const char *result,
206 	const struct wpa_bss_anqp *anqp)
207 {
208 	if (!wpa_s || !wpa_s->global->aidl || !bssid || !result || !anqp)
209 		return;
210 
211 	wpa_printf(
212 		MSG_DEBUG,
213 		"Notifying ANQP query done to aidl control: " MACSTR "result: %s",
214 		MAC2STR(bssid), result);
215 
216 	AidlManager *aidl_manager = AidlManager::getInstance();
217 	if (!aidl_manager)
218 		return;
219 
220 	aidl_manager->notifyAnqpQueryDone(wpa_s, bssid, result, anqp);
221 }
222 
wpas_aidl_notify_hs20_icon_query_done(struct wpa_supplicant * wpa_s,const u8 * bssid,const char * file_name,const u8 * image,u32 image_length)223 void wpas_aidl_notify_hs20_icon_query_done(
224 	struct wpa_supplicant *wpa_s, const u8 *bssid, const char *file_name,
225 	const u8 *image, u32 image_length)
226 {
227 	if (!wpa_s || !wpa_s->global->aidl || !bssid || !file_name || !image)
228 		return;
229 
230 	wpa_printf(
231 		MSG_DEBUG,
232 		"Notifying HS20 icon query done to aidl control: " MACSTR
233 		"file_name: %s",
234 		MAC2STR(bssid), file_name);
235 
236 	AidlManager *aidl_manager = AidlManager::getInstance();
237 	if (!aidl_manager)
238 		return;
239 
240 	aidl_manager->notifyHs20IconQueryDone(
241 		wpa_s, bssid, file_name, image, image_length);
242 }
243 
wpas_aidl_notify_hs20_rx_subscription_remediation(struct wpa_supplicant * wpa_s,const char * url,u8 osu_method)244 void wpas_aidl_notify_hs20_rx_subscription_remediation(
245 	struct wpa_supplicant *wpa_s, const char *url, u8 osu_method)
246 {
247 	if (!wpa_s || !wpa_s->global->aidl || !url)
248 		return;
249 
250 	wpa_printf(
251 		MSG_DEBUG,
252 		"Notifying HS20 subscription remediation rx to aidl control: %s",
253 		url);
254 
255 	AidlManager *aidl_manager = AidlManager::getInstance();
256 	if (!aidl_manager)
257 		return;
258 
259 	aidl_manager->notifyHs20RxSubscriptionRemediation(
260 		wpa_s, url, osu_method);
261 }
262 
wpas_aidl_notify_hs20_rx_deauth_imminent_notice(struct wpa_supplicant * wpa_s,u8 code,u16 reauth_delay,const char * url)263 void wpas_aidl_notify_hs20_rx_deauth_imminent_notice(
264 	struct wpa_supplicant *wpa_s, u8 code, u16 reauth_delay, const char *url)
265 {
266 	if (!wpa_s || !wpa_s->global->aidl)
267 		return;
268 
269 	wpa_printf(
270 		MSG_DEBUG,
271 		"Notifying HS20 deauth imminent notice rx to aidl control: %s",
272 		url ? url : "<no URL>");
273 
274 	AidlManager *aidl_manager = AidlManager::getInstance();
275 	if (!aidl_manager)
276 		return;
277 
278 	aidl_manager->notifyHs20RxDeauthImminentNotice(
279 		wpa_s, code, reauth_delay, url);
280 }
281 
wpas_aidl_notify_hs20_rx_terms_and_conditions_acceptance(struct wpa_supplicant * wpa_s,const char * url)282 void wpas_aidl_notify_hs20_rx_terms_and_conditions_acceptance(
283 		struct wpa_supplicant *wpa_s, const char *url)
284 {
285 	if (!wpa_s || !wpa_s->global->aidl || !url)
286 		return;
287 
288 	wpa_printf(MSG_DEBUG,
289 			"Notifying HS20 terms and conditions acceptance rx to aidl control: %s",
290 			url);
291 
292 	AidlManager *aidl_manager = AidlManager::getInstance();
293 	if (!aidl_manager)
294 		return;
295 
296 	aidl_manager->notifyHs20RxTermsAndConditionsAcceptance(wpa_s, url);
297 }
298 
wpas_aidl_notify_disconnect_reason(struct wpa_supplicant * wpa_s)299 void wpas_aidl_notify_disconnect_reason(struct wpa_supplicant *wpa_s)
300 {
301 	if (!wpa_s)
302 		return;
303 
304 	wpa_printf(
305 		MSG_DEBUG, "Notifying disconnect reason to aidl control: %d",
306 		wpa_s->disconnect_reason);
307 
308 	AidlManager *aidl_manager = AidlManager::getInstance();
309 	if (!aidl_manager)
310 		return;
311 
312 	aidl_manager->notifyDisconnectReason(wpa_s);
313 }
314 
wpas_aidl_notify_mlo_info_change_reason(struct wpa_supplicant * wpa_s,enum mlo_info_change_reason reason)315 void wpas_aidl_notify_mlo_info_change_reason(struct wpa_supplicant *wpa_s,
316 					     enum mlo_info_change_reason reason)
317 {
318 	if (!wpa_s)
319 		return;
320 
321 	wpa_printf(MSG_DEBUG, "Notifying MLO info change reason to aidl control: %d",
322 		   reason);
323 
324 	AidlManager *aidl_manager = AidlManager::getInstance();
325 	if (!aidl_manager)
326 		return;
327 
328 	aidl_manager->notifyMloLinksInfoChanged(wpa_s, reason);
329 }
330 
wpas_aidl_notify_assoc_reject(struct wpa_supplicant * wpa_s,const u8 * bssid,u8 timed_out,const u8 * assoc_resp_ie,size_t assoc_resp_ie_len)331 void wpas_aidl_notify_assoc_reject(struct wpa_supplicant *wpa_s,
332 	const u8 *bssid, u8 timed_out, const u8 *assoc_resp_ie, size_t assoc_resp_ie_len)
333 {
334 	if (!wpa_s)
335 		return;
336 
337 	wpa_printf(
338 		MSG_DEBUG, "Notifying assoc reject to aidl control: %d",
339 		wpa_s->assoc_status_code);
340 
341 	AidlManager *aidl_manager = AidlManager::getInstance();
342 	if (!aidl_manager)
343 		return;
344 
345 	aidl_manager->notifyAssocReject(wpa_s, bssid, timed_out, assoc_resp_ie, assoc_resp_ie_len);
346 }
347 
wpas_aidl_notify_auth_timeout(struct wpa_supplicant * wpa_s)348 void wpas_aidl_notify_auth_timeout(struct wpa_supplicant *wpa_s)
349 {
350 	if (!wpa_s)
351 		return;
352 
353 	wpa_printf(MSG_DEBUG, "Notifying auth timeout to aidl control");
354 
355 	AidlManager *aidl_manager = AidlManager::getInstance();
356 	if (!aidl_manager)
357 		return;
358 
359 	aidl_manager->notifyAuthTimeout(wpa_s);
360 }
361 
wpas_aidl_notify_bssid_changed(struct wpa_supplicant * wpa_s)362 void wpas_aidl_notify_bssid_changed(struct wpa_supplicant *wpa_s)
363 {
364 	if (!wpa_s)
365 		return;
366 
367 	wpa_printf(MSG_DEBUG, "Notifying bssid changed to aidl control");
368 
369 	AidlManager *aidl_manager = AidlManager::getInstance();
370 	if (!aidl_manager)
371 		return;
372 
373 	aidl_manager->notifyBssidChanged(wpa_s);
374 }
375 
wpas_aidl_notify_wps_event_fail(struct wpa_supplicant * wpa_s,uint8_t * peer_macaddr,uint16_t config_error,uint16_t error_indication)376 void wpas_aidl_notify_wps_event_fail(
377 	struct wpa_supplicant *wpa_s, uint8_t *peer_macaddr, uint16_t config_error,
378 	uint16_t error_indication)
379 {
380 	if (!wpa_s || !peer_macaddr)
381 		return;
382 
383 	wpa_printf(
384 		MSG_DEBUG, "Notifying Wps event fail to aidl control: %d, %d",
385 		config_error, error_indication);
386 
387 	AidlManager *aidl_manager = AidlManager::getInstance();
388 	if (!aidl_manager)
389 		return;
390 
391 	aidl_manager->notifyWpsEventFail(
392 		wpa_s, peer_macaddr, config_error, error_indication);
393 }
394 
wpas_aidl_notify_wps_event_success(struct wpa_supplicant * wpa_s)395 void wpas_aidl_notify_wps_event_success(struct wpa_supplicant *wpa_s)
396 {
397 	if (!wpa_s)
398 		return;
399 
400 	wpa_printf(MSG_DEBUG, "Notifying Wps event success to aidl control");
401 
402 	AidlManager *aidl_manager = AidlManager::getInstance();
403 	if (!aidl_manager)
404 		return;
405 
406 	aidl_manager->notifyWpsEventSuccess(wpa_s);
407 }
408 
wpas_aidl_notify_wps_event_pbc_overlap(struct wpa_supplicant * wpa_s)409 void wpas_aidl_notify_wps_event_pbc_overlap(struct wpa_supplicant *wpa_s)
410 {
411 	if (!wpa_s)
412 		return;
413 
414 	wpa_printf(
415 		MSG_DEBUG, "Notifying Wps event PBC overlap to aidl control");
416 
417 	AidlManager *aidl_manager = AidlManager::getInstance();
418 	if (!aidl_manager)
419 		return;
420 
421 	aidl_manager->notifyWpsEventPbcOverlap(wpa_s);
422 }
423 
wpas_aidl_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)424 void wpas_aidl_notify_p2p_device_found(
425 	struct wpa_supplicant *wpa_s, const u8 *addr,
426 	const struct p2p_peer_info *info, const u8 *peer_wfd_device_info,
427 	u8 peer_wfd_device_info_len, const u8 *peer_wfd_r2_device_info,
428 	u8 peer_wfd_r2_device_info_len)
429 {
430 	if (!wpa_s || !addr || !info)
431 		return;
432 
433 	wpa_printf(
434 		MSG_DEBUG, "Notifying P2P device found to aidl control " MACSTR,
435 		MAC2STR(info->p2p_device_addr));
436 
437 	AidlManager *aidl_manager = AidlManager::getInstance();
438 	if (!aidl_manager)
439 		return;
440 
441 	aidl_manager->notifyP2pDeviceFound(
442 		wpa_s, addr, info, peer_wfd_device_info,
443 		peer_wfd_device_info_len, peer_wfd_r2_device_info,
444 		peer_wfd_r2_device_info_len);
445 }
446 
wpas_aidl_notify_p2p_device_lost(struct wpa_supplicant * wpa_s,const u8 * p2p_device_addr)447 void wpas_aidl_notify_p2p_device_lost(
448 	struct wpa_supplicant *wpa_s, const u8 *p2p_device_addr)
449 {
450 	if (!wpa_s || !p2p_device_addr)
451 		return;
452 
453 	wpa_printf(
454 		MSG_DEBUG, "Notifying P2P device lost to aidl control " MACSTR,
455 		MAC2STR(p2p_device_addr));
456 
457 	AidlManager *aidl_manager = AidlManager::getInstance();
458 	if (!aidl_manager)
459 		return;
460 
461 	aidl_manager->notifyP2pDeviceLost(wpa_s, p2p_device_addr);
462 }
463 
wpas_aidl_notify_p2p_find_stopped(struct wpa_supplicant * wpa_s)464 void wpas_aidl_notify_p2p_find_stopped(struct wpa_supplicant *wpa_s)
465 {
466 	if (!wpa_s)
467 		return;
468 
469 	wpa_printf(MSG_DEBUG, "Notifying P2P find stop to aidl control");
470 
471 	AidlManager *aidl_manager = AidlManager::getInstance();
472 	if (!aidl_manager)
473 		return;
474 
475 	aidl_manager->notifyP2pFindStopped(wpa_s);
476 }
477 
wpas_aidl_notify_p2p_go_neg_req(struct wpa_supplicant * wpa_s,const u8 * src_addr,u16 dev_passwd_id,u8 go_intent)478 void wpas_aidl_notify_p2p_go_neg_req(
479 	struct wpa_supplicant *wpa_s, const u8 *src_addr, u16 dev_passwd_id,
480 	u8 go_intent)
481 {
482 	if (!wpa_s || !src_addr)
483 		return;
484 
485 	wpa_printf(
486 		MSG_DEBUG,
487 		"Notifying P2P GO negotiation request to aidl control " MACSTR,
488 		MAC2STR(src_addr));
489 
490 	AidlManager *aidl_manager = AidlManager::getInstance();
491 	if (!aidl_manager)
492 		return;
493 
494 	aidl_manager->notifyP2pGoNegReq(
495 		wpa_s, src_addr, dev_passwd_id, go_intent);
496 }
497 
wpas_aidl_notify_p2p_go_neg_completed(struct wpa_supplicant * wpa_s,const struct p2p_go_neg_results * res)498 void wpas_aidl_notify_p2p_go_neg_completed(
499 	struct wpa_supplicant *wpa_s, const struct p2p_go_neg_results *res)
500 {
501 	if (!wpa_s || !res)
502 		return;
503 
504 	wpa_printf(
505 		MSG_DEBUG,
506 		"Notifying P2P GO negotiation completed to aidl control: %d",
507 		res->status);
508 
509 	AidlManager *aidl_manager = AidlManager::getInstance();
510 	if (!aidl_manager)
511 		return;
512 
513 	aidl_manager->notifyP2pGoNegCompleted(wpa_s, res);
514 }
515 
wpas_aidl_notify_p2p_group_formation_failure(struct wpa_supplicant * wpa_s,const char * reason)516 void wpas_aidl_notify_p2p_group_formation_failure(
517 	struct wpa_supplicant *wpa_s, const char *reason)
518 {
519 	if (!wpa_s || !reason)
520 		return;
521 
522 	wpa_printf(
523 		MSG_DEBUG,
524 		"Notifying P2P Group formation failure to aidl control: %s",
525 		reason);
526 
527 	AidlManager *aidl_manager = AidlManager::getInstance();
528 	if (!aidl_manager)
529 		return;
530 
531 	aidl_manager->notifyP2pGroupFormationFailure(wpa_s, reason);
532 }
533 
wpas_aidl_notify_p2p_group_started(struct wpa_supplicant * wpa_s,const struct wpa_ssid * ssid,int persistent,int client,const u8 * ip)534 void wpas_aidl_notify_p2p_group_started(
535 	struct wpa_supplicant *wpa_s, const struct wpa_ssid *ssid, int persistent,
536 	int client, const u8 *ip)
537 {
538 	if (!wpa_s || !ssid)
539 		return;
540 
541 	wpa_printf(
542 		MSG_DEBUG, "Notifying P2P Group start to aidl control: %d",
543 		ssid->id);
544 
545 	AidlManager *aidl_manager = AidlManager::getInstance();
546 	if (!aidl_manager)
547 		return;
548 
549 	aidl_manager->notifyP2pGroupStarted(wpa_s, ssid, persistent, client, ip);
550 }
551 
wpas_aidl_notify_p2p_group_removed(struct wpa_supplicant * wpa_s,const struct wpa_ssid * ssid,const char * role)552 void wpas_aidl_notify_p2p_group_removed(
553 	struct wpa_supplicant *wpa_s, const struct wpa_ssid *ssid, const char *role)
554 {
555 	if (!wpa_s || !ssid || !role)
556 		return;
557 
558 	wpa_printf(
559 		MSG_DEBUG, "Notifying P2P Group removed to aidl control: %d",
560 		ssid->id);
561 
562 	AidlManager *aidl_manager = AidlManager::getInstance();
563 	if (!aidl_manager)
564 		return;
565 
566 	aidl_manager->notifyP2pGroupRemoved(wpa_s, ssid, role);
567 }
568 
wpas_aidl_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)569 void wpas_aidl_notify_p2p_invitation_received(
570 	struct wpa_supplicant *wpa_s, const u8 *sa, const u8 *go_dev_addr,
571 	const u8 *bssid, int id, int op_freq)
572 {
573 	if (!wpa_s || !sa || !go_dev_addr || !bssid)
574 		return;
575 
576 	wpa_printf(
577 		MSG_DEBUG,
578 		"Notifying P2P invitation received to aidl control: %d " MACSTR, id,
579 		MAC2STR(bssid));
580 
581 	AidlManager *aidl_manager = AidlManager::getInstance();
582 	if (!aidl_manager)
583 		return;
584 
585 	aidl_manager->notifyP2pInvitationReceived(
586 		wpa_s, sa, go_dev_addr, bssid, id, op_freq);
587 }
588 
wpas_aidl_notify_p2p_invitation_result(struct wpa_supplicant * wpa_s,int status,const u8 * bssid)589 void wpas_aidl_notify_p2p_invitation_result(
590 	struct wpa_supplicant *wpa_s, int status, const u8 *bssid)
591 {
592 	if (!wpa_s)
593 		return;
594 	if (bssid) {
595 		wpa_printf(
596 			MSG_DEBUG,
597 			"Notifying P2P invitation result to aidl control: " MACSTR,
598 			MAC2STR(bssid));
599 	} else {
600 		wpa_printf(
601 			MSG_DEBUG,
602 			"Notifying P2P invitation result to aidl control: NULL "
603 			"bssid");
604 	}
605 
606 	AidlManager *aidl_manager = AidlManager::getInstance();
607 	if (!aidl_manager)
608 		return;
609 
610 	aidl_manager->notifyP2pInvitationResult(wpa_s, status, bssid);
611 }
612 
wpas_aidl_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)613 void wpas_aidl_notify_p2p_provision_discovery(
614 	struct wpa_supplicant *wpa_s, const u8 *dev_addr, int request,
615 	enum p2p_prov_disc_status status, u16 config_methods,
616 	unsigned int generated_pin, const char *group_ifname)
617 {
618 	if (!wpa_s || !dev_addr)
619 		return;
620 
621 	wpa_printf(
622 		MSG_DEBUG,
623 		"Notifying P2P provision discovery to aidl control " MACSTR,
624 		MAC2STR(dev_addr));
625 
626 	AidlManager *aidl_manager = AidlManager::getInstance();
627 	if (!aidl_manager)
628 		return;
629 
630 	aidl_manager->notifyP2pProvisionDiscovery(
631 		wpa_s, dev_addr, request, status, config_methods,
632 		generated_pin, group_ifname);
633 }
634 
wpas_aidl_notify_p2p_sd_response(struct wpa_supplicant * wpa_s,const u8 * sa,u16 update_indic,const u8 * tlvs,size_t tlvs_len)635 void wpas_aidl_notify_p2p_sd_response(
636 	struct wpa_supplicant *wpa_s, const u8 *sa, u16 update_indic,
637 	const u8 *tlvs, size_t tlvs_len)
638 {
639 	if (!wpa_s || !sa || !tlvs)
640 		return;
641 
642 	wpa_printf(
643 		MSG_DEBUG,
644 		"Notifying P2P service discovery response to aidl control " MACSTR,
645 		MAC2STR(sa));
646 
647 	AidlManager *aidl_manager = AidlManager::getInstance();
648 	if (!aidl_manager)
649 		return;
650 
651 	aidl_manager->notifyP2pSdResponse(
652 		wpa_s, sa, update_indic, tlvs, tlvs_len);
653 }
654 
wpas_aidl_notify_ap_sta_authorized(struct wpa_supplicant * wpa_s,const u8 * sta,const u8 * p2p_dev_addr,const u8 * ip)655 void wpas_aidl_notify_ap_sta_authorized(
656 	struct wpa_supplicant *wpa_s, const u8 *sta, const u8 *p2p_dev_addr,
657 	const u8 *ip)
658 {
659 	if (!wpa_s || !sta)
660 		return;
661 
662 	wpa_printf(
663 		MSG_DEBUG,
664 		"Notifying P2P AP STA authorized to aidl control " MACSTR,
665 		MAC2STR(sta));
666 
667 	AidlManager *aidl_manager = AidlManager::getInstance();
668 	if (!aidl_manager)
669 		return;
670 
671 	aidl_manager->notifyApStaAuthorized(wpa_s, sta, p2p_dev_addr, ip);
672 }
673 
wpas_aidl_notify_ap_sta_deauthorized(struct wpa_supplicant * wpa_s,const u8 * sta,const u8 * p2p_dev_addr)674 void wpas_aidl_notify_ap_sta_deauthorized(
675 	struct wpa_supplicant *wpa_s, const u8 *sta, const u8 *p2p_dev_addr)
676 {
677 	if (!wpa_s || !sta)
678 		return;
679 
680 	wpa_printf(
681 		MSG_DEBUG,
682 		"Notifying P2P AP STA deauthorized to aidl control " MACSTR,
683 		MAC2STR(sta));
684 
685 	AidlManager *aidl_manager = AidlManager::getInstance();
686 	if (!aidl_manager)
687 		return;
688 
689 	aidl_manager->notifyApStaDeauthorized(wpa_s, sta, p2p_dev_addr);
690 }
691 
wpas_aidl_notify_eap_error(struct wpa_supplicant * wpa_s,int error_code)692 void wpas_aidl_notify_eap_error(struct wpa_supplicant *wpa_s, int error_code)
693 {
694 	if (!wpa_s)
695 		return;
696 
697 	wpa_printf(MSG_DEBUG, "Notifying EAP Error: %d ", error_code);
698 
699 	AidlManager *aidl_manager = AidlManager::getInstance();
700 	if (!aidl_manager)
701 		return;
702 
703 	aidl_manager->notifyEapError(wpa_s, error_code);
704 }
705 
wpas_aidl_notify_dpp_config_received(struct wpa_supplicant * wpa_s,struct wpa_ssid * ssid,bool conn_status_requested)706 void wpas_aidl_notify_dpp_config_received(struct wpa_supplicant *wpa_s,
707 		struct wpa_ssid *ssid, bool conn_status_requested)
708 {
709 	if (!wpa_s || !ssid)
710 		return;
711 
712 	wpa_printf(
713 		MSG_DEBUG,
714 		"Notifying DPP configuration received for SSID %d", ssid->id);
715 
716 	AidlManager *aidl_manager = AidlManager::getInstance();
717 	if (!aidl_manager)
718 		return;
719 
720 	aidl_manager->notifyDppConfigReceived(wpa_s, ssid, conn_status_requested);
721 }
722 
wpas_aidl_notify_dpp_config_sent(struct wpa_supplicant * wpa_s)723 void wpas_aidl_notify_dpp_config_sent(struct wpa_supplicant *wpa_s)
724 {
725 	wpas_aidl_notify_dpp_success(wpa_s, DppEventType::CONFIGURATION_SENT);
726 }
727 
wpas_aidl_notify_dpp_connection_status_sent(struct wpa_supplicant * wpa_s,enum dpp_status_error result)728 void wpas_aidl_notify_dpp_connection_status_sent(struct wpa_supplicant *wpa_s,
729                                                  enum dpp_status_error result)
730 {
731 	if (!wpa_s)
732 		return;
733 
734 	wpa_printf(MSG_DEBUG, "wpas_aidl_notify_dpp_connection_status_sent %d ", result);
735 
736 	AidlManager *aidl_manager = AidlManager::getInstance();
737 	if (!aidl_manager)
738 		return;
739 
740 	aidl_manager->notifyDppConnectionStatusSent(wpa_s, result);
741 }
742 
743 /* DPP Progress notifications */
wpas_aidl_notify_dpp_auth_success(struct wpa_supplicant * wpa_s)744 void wpas_aidl_notify_dpp_auth_success(struct wpa_supplicant *wpa_s)
745 {
746 	wpas_aidl_notify_dpp_progress(wpa_s, DppProgressCode::AUTHENTICATION_SUCCESS);
747 }
748 
wpas_aidl_notify_dpp_resp_pending(struct wpa_supplicant * wpa_s)749 void wpas_aidl_notify_dpp_resp_pending(struct wpa_supplicant *wpa_s)
750 {
751 	wpas_aidl_notify_dpp_progress(wpa_s, DppProgressCode::RESPONSE_PENDING);
752 }
753 
754 /* DPP Failure notifications */
wpas_aidl_notify_dpp_not_compatible(struct wpa_supplicant * wpa_s)755 void wpas_aidl_notify_dpp_not_compatible(struct wpa_supplicant *wpa_s)
756 {
757 	wpas_aidl_notify_dpp_failure(wpa_s, DppFailureCode::NOT_COMPATIBLE);
758 }
759 
wpas_aidl_notify_dpp_missing_auth(struct wpa_supplicant * wpa_s)760 void wpas_aidl_notify_dpp_missing_auth(struct wpa_supplicant *wpa_s)
761 {
762 	wpas_aidl_notify_dpp_failure(wpa_s, DppFailureCode::AUTHENTICATION);
763 }
764 
wpas_aidl_notify_dpp_configuration_failure(struct wpa_supplicant * wpa_s)765 void wpas_aidl_notify_dpp_configuration_failure(struct wpa_supplicant *wpa_s)
766 {
767 	wpas_aidl_notify_dpp_failure(wpa_s, DppFailureCode::CONFIGURATION);
768 }
769 
wpas_aidl_notify_dpp_timeout(struct wpa_supplicant * wpa_s)770 void wpas_aidl_notify_dpp_timeout(struct wpa_supplicant *wpa_s)
771 {
772 	wpas_aidl_notify_dpp_failure(wpa_s, DppFailureCode::TIMEOUT);
773 }
774 
wpas_aidl_notify_dpp_auth_failure(struct wpa_supplicant * wpa_s)775 void wpas_aidl_notify_dpp_auth_failure(struct wpa_supplicant *wpa_s)
776 {
777 	wpas_aidl_notify_dpp_failure(wpa_s, DppFailureCode::AUTHENTICATION);
778 }
779 
wpas_aidl_notify_dpp_fail(struct wpa_supplicant * wpa_s)780 void wpas_aidl_notify_dpp_fail(struct wpa_supplicant *wpa_s)
781 {
782 	wpas_aidl_notify_dpp_failure(wpa_s, DppFailureCode::FAILURE);
783 }
784 
wpas_aidl_notify_dpp_config_sent_wait_response(struct wpa_supplicant * wpa_s)785 void wpas_aidl_notify_dpp_config_sent_wait_response(struct wpa_supplicant *wpa_s)
786 {
787 	wpas_aidl_notify_dpp_progress(wpa_s, DppProgressCode::CONFIGURATION_SENT_WAITING_RESPONSE);
788 }
789 
790 /* DPP notification helper functions */
wpas_aidl_notify_dpp_failure(struct wpa_supplicant * wpa_s,DppFailureCode code)791 static void wpas_aidl_notify_dpp_failure(struct wpa_supplicant *wpa_s, DppFailureCode code)
792 {
793 	if (!wpa_s)
794 		return;
795 
796 	wpa_printf(
797 		MSG_DEBUG,
798 		"Notifying DPP failure event %d", code);
799 
800 	AidlManager *aidl_manager = AidlManager::getInstance();
801 	if (!aidl_manager)
802 		return;
803 
804 	aidl_manager->notifyDppFailure(wpa_s, code);
805 }
806 
wpas_aidl_notify_dpp_progress(struct wpa_supplicant * wpa_s,DppProgressCode code)807 static void wpas_aidl_notify_dpp_progress(struct wpa_supplicant *wpa_s, DppProgressCode code)
808 {
809 	if (!wpa_s)
810 		return;
811 
812 	wpa_printf(
813 		MSG_DEBUG,
814 		"Notifying DPP progress event %d", code);
815 
816 	AidlManager *aidl_manager = AidlManager::getInstance();
817 	if (!aidl_manager)
818 		return;
819 
820 	aidl_manager->notifyDppProgress(wpa_s, code);
821 }
822 
wpas_aidl_notify_dpp_config_accepted(struct wpa_supplicant * wpa_s)823 void wpas_aidl_notify_dpp_config_accepted(struct wpa_supplicant *wpa_s)
824 {
825 	wpas_aidl_notify_dpp_progress(wpa_s, DppProgressCode::CONFIGURATION_ACCEPTED);
826 }
827 
wpas_aidl_notify_dpp_config_applied(struct wpa_supplicant * wpa_s)828 static void wpas_aidl_notify_dpp_config_applied(struct wpa_supplicant *wpa_s)
829 {
830 	wpas_aidl_notify_dpp_success(wpa_s, DppEventType::CONFIGURATION_APPLIED);
831 }
832 
wpas_aidl_notify_dpp_success(struct wpa_supplicant * wpa_s,DppEventType code)833 static void wpas_aidl_notify_dpp_success(struct wpa_supplicant *wpa_s, DppEventType code)
834 {
835 	if (!wpa_s)
836 		return;
837 
838 	wpa_printf(
839 		MSG_DEBUG,
840 		"Notifying DPP progress event %d", code);
841 
842 	AidlManager *aidl_manager = AidlManager::getInstance();
843 	if (!aidl_manager)
844 		return;
845 
846 	aidl_manager->notifyDppSuccess(wpa_s, code);
847 }
848 
wpas_aidl_notify_dpp_config_rejected(struct wpa_supplicant * wpa_s)849 void wpas_aidl_notify_dpp_config_rejected(struct wpa_supplicant *wpa_s)
850 {
851 	wpas_aidl_notify_dpp_failure(wpa_s, DppFailureCode::CONFIGURATION_REJECTED);
852 }
853 
wpas_aidl_notify_dpp_no_ap_failure(struct wpa_supplicant * wpa_s,const char * ssid,const char * channel_list,unsigned short band_list[],int size)854 static void wpas_aidl_notify_dpp_no_ap_failure(struct wpa_supplicant *wpa_s,
855 		const char *ssid, const char *channel_list, unsigned short band_list[],
856 		int size)
857 {
858 	if (!wpa_s)
859 		return;
860 
861 	wpa_printf(MSG_DEBUG,
862 			"Notifying DPP NO AP event for SSID %s\nTried channels: %s",
863 			ssid ? ssid : "N/A", channel_list ? channel_list : "N/A");
864 
865 	AidlManager *aidl_manager = AidlManager::getInstance();
866 	if (!aidl_manager)
867 		return;
868 
869 	aidl_manager->notifyDppFailure(wpa_s, DppFailureCode::CANNOT_FIND_NETWORK,
870 			ssid, channel_list, band_list, size);
871 }
872 
wpas_aidl_notify_dpp_enrollee_auth_failure(struct wpa_supplicant * wpa_s,const char * ssid,unsigned short band_list[],int size)873 void wpas_aidl_notify_dpp_enrollee_auth_failure(struct wpa_supplicant *wpa_s,
874 		const char *ssid, unsigned short band_list[], int size)
875 {
876 	if (!wpa_s)
877 		return;
878 
879 	wpa_printf(MSG_DEBUG,
880 			"Notifying DPP Enrollee authentication failure, SSID %s",
881 			ssid ? ssid : "N/A");
882 
883 	AidlManager *aidl_manager = AidlManager::getInstance();
884 	if (!aidl_manager)
885 		return;
886 
887 	aidl_manager->notifyDppFailure(wpa_s, DppFailureCode::ENROLLEE_AUTHENTICATION,
888 			ssid, NULL, band_list, size);
889 }
890 
891 
wpas_aidl_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)892 void wpas_aidl_notify_dpp_conn_status(struct wpa_supplicant *wpa_s, enum dpp_status_error status,
893 		const char *ssid, const char *channel_list, unsigned short band_list[], int size)
894 {
895 	switch (status)
896 	{
897 	case DPP_STATUS_OK:
898 		wpas_aidl_notify_dpp_config_applied(wpa_s);
899 		break;
900 
901 	case DPP_STATUS_NO_AP:
902 		wpas_aidl_notify_dpp_no_ap_failure(wpa_s, ssid, channel_list, band_list, size);
903 		break;
904 
905 	case DPP_STATUS_AUTH_FAILURE:
906 		wpas_aidl_notify_dpp_enrollee_auth_failure(wpa_s, ssid, band_list, size);
907 		break;
908 
909 	default:
910 		break;
911 	}
912 }
913 
wpas_aidl_notify_pmk_cache_added(struct wpa_supplicant * wpa_s,struct rsn_pmksa_cache_entry * pmksa_entry)914 void wpas_aidl_notify_pmk_cache_added(
915 	struct wpa_supplicant *wpa_s,
916 	struct rsn_pmksa_cache_entry *pmksa_entry)
917 {
918 	if (!wpa_s || !pmksa_entry)
919 		return;
920 
921 	AidlManager *aidl_manager = AidlManager::getInstance();
922 	if (!aidl_manager)
923 		return;
924 
925 	wpa_printf(
926 		MSG_DEBUG,
927 		"Notifying PMK cache added event");
928 
929 	aidl_manager->notifyPmkCacheAdded(wpa_s, pmksa_entry);
930 }
931 
wpas_aidl_notify_bss_tm_status(struct wpa_supplicant * wpa_s)932 void wpas_aidl_notify_bss_tm_status(struct wpa_supplicant *wpa_s)
933 {
934 	if (!wpa_s)
935 		return;
936 
937 	AidlManager *aidl_manager = AidlManager::getInstance();
938 	if (!aidl_manager)
939 		return;
940 
941 	wpa_printf(MSG_DEBUG, "Notifying BSS transition status");
942 
943 	aidl_manager->notifyBssTmStatus(wpa_s);
944 }
945 
wpas_aidl_notify_transition_disable(struct wpa_supplicant * wpa_s,struct wpa_ssid * ssid,u8 bitmap)946 void wpas_aidl_notify_transition_disable(struct wpa_supplicant *wpa_s,
947 						struct wpa_ssid *ssid,
948 						u8 bitmap)
949 {
950 	if (!wpa_s || !ssid)
951 		return;
952 
953 	AidlManager *aidl_manager = AidlManager::getInstance();
954 	if (!aidl_manager)
955 		return;
956 
957 	aidl_manager->notifyTransitionDisable(wpa_s, ssid, bitmap);
958 }
959 
wpas_aidl_notify_network_not_found(struct wpa_supplicant * wpa_s)960 void wpas_aidl_notify_network_not_found(struct wpa_supplicant *wpa_s)
961 {
962 	if (!wpa_s)
963 		return;
964 
965 	AidlManager *aidl_manager = AidlManager::getInstance();
966 	if (!aidl_manager)
967 		return;
968 
969 	wpa_printf(MSG_DEBUG, "Notify network not found");
970 
971 	aidl_manager->notifyNetworkNotFound(wpa_s);
972 }
973 
wpas_aidl_notify_frequency_changed(struct wpa_supplicant * wpa_s,int frequency)974 void wpas_aidl_notify_frequency_changed(struct wpa_supplicant *wpa_s, int frequency)
975 {
976 	if (!wpa_s)
977 		return;
978 
979 	AidlManager *aidl_manager = AidlManager::getInstance();
980 	if (!aidl_manager)
981 		return;
982 
983 	wpa_printf(MSG_INFO, "Notify %s frequency changed to %d",
984 	    wpa_s->ifname, frequency);
985 
986 	aidl_manager->notifyFrequencyChanged(wpa_s, frequency);
987 }
988 
wpas_aidl_notify_ceritification(struct wpa_supplicant * wpa_s,int depth,const char * subject,const char * altsubject[],int num_altsubject,const char * cert_hash,const struct wpabuf * cert)989 void wpas_aidl_notify_ceritification(struct wpa_supplicant *wpa_s,
990 		int depth, const char *subject,
991 		const char *altsubject[],
992 		int num_altsubject,
993 		const char *cert_hash,
994 		const struct wpabuf *cert)
995 {
996 	if (!wpa_s)
997 		return;
998 
999 	AidlManager *aidl_manager = AidlManager::getInstance();
1000 	if (!aidl_manager)
1001 		return;
1002 
1003 	wpa_printf(MSG_DEBUG, "Notify certification");
1004 
1005 	aidl_manager->notifyCertification(wpa_s,
1006 			depth,
1007 			subject,
1008 			altsubject,
1009 			num_altsubject,
1010 			cert_hash,
1011 			cert);
1012 }
1013 
wpas_aidl_notify_auxiliary_event(struct wpa_supplicant * wpa_s,AuxiliarySupplicantEventCode event_code,const char * reason_string)1014 void wpas_aidl_notify_auxiliary_event(struct wpa_supplicant *wpa_s,
1015 	AuxiliarySupplicantEventCode event_code, const char *reason_string)
1016 {
1017 	if (!wpa_s)
1018 		return;
1019 
1020 	AidlManager *aidl_manager = AidlManager::getInstance();
1021 	if (!aidl_manager)
1022 		return;
1023 
1024 	wpa_printf(MSG_DEBUG, "Notify auxiliary event, code=%d",
1025 		static_cast<int>(event_code));
1026 	aidl_manager->notifyAuxiliaryEvent(wpa_s, event_code, reason_string);
1027 }
1028 
wpas_aidl_notify_eap_method_selected(struct wpa_supplicant * wpa_s,const char * reason_string)1029 void wpas_aidl_notify_eap_method_selected(struct wpa_supplicant *wpa_s,
1030 	const char *reason_string)
1031 {
1032 	wpas_aidl_notify_auxiliary_event(wpa_s,
1033 		AuxiliarySupplicantEventCode::EAP_METHOD_SELECTED,
1034 		reason_string);
1035 }
1036 
wpas_aidl_notify_ssid_temp_disabled(struct wpa_supplicant * wpa_s,const char * reason_string)1037 void wpas_aidl_notify_ssid_temp_disabled(struct wpa_supplicant *wpa_s,
1038 	const char *reason_string)
1039 {
1040 	wpas_aidl_notify_auxiliary_event(wpa_s,
1041 		AuxiliarySupplicantEventCode::SSID_TEMP_DISABLED,
1042 		reason_string);
1043 }
1044 
wpas_aidl_notify_open_ssl_failure(struct wpa_supplicant * wpa_s,const char * reason_string)1045 void wpas_aidl_notify_open_ssl_failure(struct wpa_supplicant *wpa_s,
1046 	const char *reason_string)
1047 {
1048 	wpas_aidl_notify_auxiliary_event(wpa_s,
1049 		AuxiliarySupplicantEventCode::OPEN_SSL_FAILURE,
1050 		reason_string);
1051 }
1052 
wpas_aidl_notify_qos_policy_reset(struct wpa_supplicant * wpa_s)1053 void wpas_aidl_notify_qos_policy_reset(
1054 	struct wpa_supplicant *wpa_s)
1055 {
1056 	if (!wpa_s)
1057 		return;
1058 	wpa_printf(
1059 		MSG_DEBUG, "Notifying Qos Policy Reset");
1060 
1061 	AidlManager *aidl_manager = AidlManager::getInstance();
1062 	if (!aidl_manager)
1063 		return;
1064 
1065 	aidl_manager->notifyQosPolicyReset(wpa_s);
1066 }
1067 
wpas_aidl_notify_qos_policy_request(struct wpa_supplicant * wpa_s,struct dscp_policy_data * policies,int num_policies)1068 void wpas_aidl_notify_qos_policy_request(struct wpa_supplicant *wpa_s,
1069 	struct dscp_policy_data *policies, int num_policies)
1070 {
1071 	if (!wpa_s || !policies)
1072 		return;
1073 
1074 	wpa_printf(
1075 		MSG_DEBUG, "Notifying Qos Policy Request");
1076 
1077 	AidlManager *aidl_manager = AidlManager::getInstance();
1078 	if (!aidl_manager)
1079 		return;
1080 
1081 	aidl_manager->notifyQosPolicyRequest(wpa_s, policies, num_policies);
1082 }
1083 
wpas_aidl_get_certificate(const char * alias,uint8_t ** value)1084 ssize_t wpas_aidl_get_certificate(const char* alias, uint8_t** value)
1085 {
1086 	AidlManager *aidl_manager = AidlManager::getInstance();
1087 	if (!aidl_manager)
1088 		return -1;
1089 
1090 	wpa_printf(MSG_INFO, "Requesting certificate from framework");
1091 
1092 	return aidl_manager->getCertificate(alias, value);
1093 }
1094 
wpas_aidl_list_aliases(const char * prefix,char *** aliases)1095 ssize_t wpas_aidl_list_aliases(const char *prefix, char ***aliases)
1096 {
1097 	AidlManager *aidl_manager = AidlManager::getInstance();
1098 	if (!aidl_manager)
1099 		return -1;
1100 
1101 	wpa_printf(MSG_INFO, "Requesting aliases from framework");
1102 
1103 	return aidl_manager->listAliases(prefix, aliases);
1104 }
1105 
wpas_aidl_notify_qos_policy_scs_response(struct wpa_supplicant * wpa_s,unsigned int count,int ** scs_resp)1106 void wpas_aidl_notify_qos_policy_scs_response(struct wpa_supplicant *wpa_s,
1107 		unsigned int count, int **scs_resp)
1108 {
1109 	if (!wpa_s || !count || !scs_resp)
1110 		return;
1111 
1112 	AidlManager *aidl_manager = AidlManager::getInstance();
1113 	if (!aidl_manager)
1114 		return;
1115 
1116 	wpa_printf(MSG_DEBUG, "Notifying Qos Policy SCS Response");
1117 	aidl_manager->notifyQosPolicyScsResponse(wpa_s, count, scs_resp);
1118 }
1119