1214501Srpaulo/*
2214501Srpaulo * WPA Supplicant / dbus-based control interface
3214501Srpaulo * Copyright (c) 2006, Dan Williams <dcbw@redhat.com> and Red Hat, Inc.
4214501Srpaulo * Copyright (c) 2009-2010, Witold Sowa <witold.sowa@gmail.com>
5214501Srpaulo *
6252190Srpaulo * This software may be distributed under the terms of the BSD license.
7252190Srpaulo * See README for more details.
8214501Srpaulo */
9214501Srpaulo
10214501Srpaulo#ifndef CTRL_IFACE_DBUS_NEW_HANDLERS_H
11214501Srpaulo#define CTRL_IFACE_DBUS_NEW_HANDLERS_H
12214501Srpaulo
13337817Scy#include "dbus_new_helpers.h"
14337817Scy
15214501Srpaulostruct network_handler_args {
16214501Srpaulo	struct wpa_supplicant *wpa_s;
17214501Srpaulo	struct wpa_ssid *ssid;
18214501Srpaulo};
19214501Srpaulo
20214501Srpaulostruct bss_handler_args {
21214501Srpaulo	struct wpa_supplicant *wpa_s;
22214501Srpaulo	unsigned int id;
23214501Srpaulo};
24214501Srpaulo
25346981Scystruct sta_handler_args {
26346981Scy	struct wpa_supplicant *wpa_s;
27346981Scy	const u8 *sta;
28346981Scy};
29346981Scy
30252190Srpaulodbus_bool_t wpas_dbus_simple_property_getter(DBusMessageIter *iter,
31252190Srpaulo					     const int type,
32252190Srpaulo					     const void *val,
33252190Srpaulo					     DBusError *error);
34214501Srpaulo
35252190Srpaulodbus_bool_t wpas_dbus_simple_property_setter(DBusMessageIter *iter,
36252190Srpaulo					     DBusError *error,
37252190Srpaulo					     const int type, void *val);
38214501Srpaulo
39252190Srpaulodbus_bool_t wpas_dbus_simple_array_property_getter(DBusMessageIter *iter,
40252190Srpaulo						   const int type,
41252190Srpaulo						   const void *array,
42252190Srpaulo						   size_t array_len,
43252190Srpaulo						   DBusError *error);
44214501Srpaulo
45252190Srpaulodbus_bool_t wpas_dbus_simple_array_array_property_getter(DBusMessageIter *iter,
46252190Srpaulo							 const int type,
47252190Srpaulo							 struct wpabuf **array,
48252190Srpaulo							 size_t array_len,
49252190Srpaulo							 DBusError *error);
50252190Srpaulo
51346981Scydbus_bool_t wpas_dbus_string_property_getter(DBusMessageIter *iter,
52346981Scy					     const void *val,
53346981Scy					     DBusError *error);
54346981Scy
55214501SrpauloDBusMessage * wpas_dbus_handler_create_interface(DBusMessage *message,
56214501Srpaulo						 struct wpa_global *global);
57214501Srpaulo
58214501SrpauloDBusMessage * wpas_dbus_handler_remove_interface(DBusMessage *message,
59214501Srpaulo						 struct wpa_global *global);
60214501Srpaulo
61214501SrpauloDBusMessage * wpas_dbus_handler_get_interface(DBusMessage *message,
62214501Srpaulo					      struct wpa_global *global);
63214501Srpaulo
64337817ScyDBusMessage * wpas_dbus_handler_expect_disconnect(DBusMessage *message,
65337817Scy						  struct wpa_global *global);
66214501Srpaulo
67337817ScyDECLARE_ACCESSOR(wpas_dbus_getter_debug_level);
68337817ScyDECLARE_ACCESSOR(wpas_dbus_getter_debug_timestamp);
69337817ScyDECLARE_ACCESSOR(wpas_dbus_getter_debug_show_keys);
70337817ScyDECLARE_ACCESSOR(wpas_dbus_setter_debug_level);
71337817ScyDECLARE_ACCESSOR(wpas_dbus_setter_debug_timestamp);
72337817ScyDECLARE_ACCESSOR(wpas_dbus_setter_debug_show_keys);
73337817ScyDECLARE_ACCESSOR(wpas_dbus_getter_interfaces);
74337817ScyDECLARE_ACCESSOR(wpas_dbus_getter_eap_methods);
75337817ScyDECLARE_ACCESSOR(wpas_dbus_getter_global_capabilities);
76337817ScyDECLARE_ACCESSOR(wpas_dbus_getter_iface_global);
77337817ScyDECLARE_ACCESSOR(wpas_dbus_setter_iface_global);
78214501Srpaulo
79214501SrpauloDBusMessage * wpas_dbus_handler_scan(DBusMessage *message,
80214501Srpaulo				     struct wpa_supplicant *wpa_s);
81214501Srpaulo
82346981ScyDBusMessage * wpas_dbus_handler_abort_scan(DBusMessage *message,
83346981Scy					   struct wpa_supplicant *wpa_s);
84346981Scy
85281806SrpauloDBusMessage * wpas_dbus_handler_signal_poll(DBusMessage *message,
86281806Srpaulo					    struct wpa_supplicant *wpa_s);
87281806Srpaulo
88214501SrpauloDBusMessage * wpas_dbus_handler_disconnect(DBusMessage *message,
89214501Srpaulo					   struct wpa_supplicant *wpa_s);
90214501Srpaulo
91252190Srpaulodbus_bool_t set_network_properties(struct wpa_supplicant *wpa_s,
92252190Srpaulo				   struct wpa_ssid *ssid,
93252190Srpaulo				   DBusMessageIter *iter,
94252190Srpaulo				   DBusError *error);
95252190Srpaulo
96214501SrpauloDBusMessage * wpas_dbus_handler_add_network(DBusMessage *message,
97214501Srpaulo					    struct wpa_supplicant *wpa_s);
98214501Srpaulo
99252190SrpauloDBusMessage * wpas_dbus_handler_reassociate(DBusMessage *message,
100252190Srpaulo					    struct wpa_supplicant *wpa_s);
101252190Srpaulo
102281806SrpauloDBusMessage * wpas_dbus_handler_reattach(DBusMessage *message,
103281806Srpaulo					 struct wpa_supplicant *wpa_s);
104281806Srpaulo
105289549SrpauloDBusMessage * wpas_dbus_handler_reconnect(DBusMessage *message,
106289549Srpaulo					  struct wpa_supplicant *wpa_s);
107289549Srpaulo
108214501SrpauloDBusMessage * wpas_dbus_handler_remove_network(DBusMessage *message,
109214501Srpaulo					       struct wpa_supplicant *wpa_s);
110214501Srpaulo
111252190SrpauloDBusMessage * wpas_dbus_handler_remove_all_networks(
112252190Srpaulo	DBusMessage *message, struct wpa_supplicant *wpa_s);
113252190Srpaulo
114214501SrpauloDBusMessage * wpas_dbus_handler_select_network(DBusMessage *message,
115214501Srpaulo					       struct wpa_supplicant *wpa_s);
116214501Srpaulo
117252190SrpauloDBusMessage * wpas_dbus_handler_network_reply(DBusMessage *message,
118252190Srpaulo					      struct wpa_supplicant *wpa_s);
119252190Srpaulo
120214501SrpauloDBusMessage * wpas_dbus_handler_add_blob(DBusMessage *message,
121214501Srpaulo					 struct wpa_supplicant *wpa_s);
122214501Srpaulo
123214501SrpauloDBusMessage * wpas_dbus_handler_get_blob(DBusMessage *message,
124214501Srpaulo					 struct wpa_supplicant *wpa_s);
125214501Srpaulo
126214501SrpauloDBusMessage * wpas_dbus_handler_remove_blob(DBusMessage *message,
127214501Srpaulo					    struct wpa_supplicant *wpa_s);
128214501Srpaulo
129281806SrpauloDBusMessage * wpas_dbus_handler_set_pkcs11_engine_and_module_path(
130281806Srpaulo	DBusMessage *message, struct wpa_supplicant *wpa_s);
131281806Srpaulo
132252190SrpauloDBusMessage * wpas_dbus_handler_flush_bss(DBusMessage *message,
133252190Srpaulo					  struct wpa_supplicant *wpa_s);
134214501Srpaulo
135252190SrpauloDBusMessage * wpas_dbus_handler_autoscan(DBusMessage *message,
136252190Srpaulo					 struct wpa_supplicant *wpa_s);
137214501Srpaulo
138281806SrpauloDBusMessage * wpas_dbus_handler_eap_logoff(DBusMessage *message,
139281806Srpaulo					   struct wpa_supplicant *wpa_s);
140281806Srpaulo
141281806SrpauloDBusMessage * wpas_dbus_handler_eap_logon(DBusMessage *message,
142281806Srpaulo					  struct wpa_supplicant *wpa_s);
143281806Srpaulo
144337817ScyDECLARE_ACCESSOR(wpas_dbus_getter_capabilities);
145337817ScyDECLARE_ACCESSOR(wpas_dbus_getter_state);
146337817ScyDECLARE_ACCESSOR(wpas_dbus_getter_scanning);
147337817ScyDECLARE_ACCESSOR(wpas_dbus_getter_ap_scan);
148337817ScyDECLARE_ACCESSOR(wpas_dbus_setter_ap_scan);
149337817ScyDECLARE_ACCESSOR(wpas_dbus_getter_fast_reauth);
150337817ScyDECLARE_ACCESSOR(wpas_dbus_setter_fast_reauth);
151337817ScyDECLARE_ACCESSOR(wpas_dbus_getter_disconnect_reason);
152337817ScyDECLARE_ACCESSOR(wpas_dbus_getter_disassociate_reason);
153346981ScyDECLARE_ACCESSOR(wpas_dbus_getter_auth_status_code);
154337817ScyDECLARE_ACCESSOR(wpas_dbus_getter_assoc_status_code);
155346981ScyDECLARE_ACCESSOR(wpas_dbus_getter_roam_time);
156346981ScyDECLARE_ACCESSOR(wpas_dbus_getter_roam_complete);
157346981ScyDECLARE_ACCESSOR(wpas_dbus_getter_session_length);
158346981ScyDECLARE_ACCESSOR(wpas_dbus_getter_bss_tm_status);
159337817ScyDECLARE_ACCESSOR(wpas_dbus_getter_bss_expire_age);
160337817ScyDECLARE_ACCESSOR(wpas_dbus_setter_bss_expire_age);
161337817ScyDECLARE_ACCESSOR(wpas_dbus_getter_bss_expire_count);
162337817ScyDECLARE_ACCESSOR(wpas_dbus_setter_bss_expire_count);
163337817ScyDECLARE_ACCESSOR(wpas_dbus_getter_country);
164337817ScyDECLARE_ACCESSOR(wpas_dbus_setter_country);
165337817ScyDECLARE_ACCESSOR(wpas_dbus_getter_scan_interval);
166337817ScyDECLARE_ACCESSOR(wpas_dbus_setter_scan_interval);
167337817ScyDECLARE_ACCESSOR(wpas_dbus_getter_ifname);
168337817ScyDECLARE_ACCESSOR(wpas_dbus_getter_driver);
169337817ScyDECLARE_ACCESSOR(wpas_dbus_getter_bridge_ifname);
170337817ScyDECLARE_ACCESSOR(wpas_dbus_getter_config_file);
171337817ScyDECLARE_ACCESSOR(wpas_dbus_getter_current_bss);
172337817ScyDECLARE_ACCESSOR(wpas_dbus_getter_current_network);
173337817ScyDECLARE_ACCESSOR(wpas_dbus_getter_current_auth_mode);
174337817ScyDECLARE_ACCESSOR(wpas_dbus_getter_bsss);
175337817ScyDECLARE_ACCESSOR(wpas_dbus_getter_networks);
176337817ScyDECLARE_ACCESSOR(wpas_dbus_getter_pkcs11_engine_path);
177337817ScyDECLARE_ACCESSOR(wpas_dbus_getter_pkcs11_module_path);
178337817ScyDECLARE_ACCESSOR(wpas_dbus_getter_blobs);
179346981ScyDECLARE_ACCESSOR(wpas_dbus_getter_stas);
180346981ScyDECLARE_ACCESSOR(wpas_dbus_getter_sta_address);
181346981ScyDECLARE_ACCESSOR(wpas_dbus_getter_sta_aid);
182346981ScyDECLARE_ACCESSOR(wpas_dbus_getter_sta_caps);
183346981ScyDECLARE_ACCESSOR(wpas_dbus_getter_sta_rx_packets);
184346981ScyDECLARE_ACCESSOR(wpas_dbus_getter_sta_tx_packets);
185346981ScyDECLARE_ACCESSOR(wpas_dbus_getter_sta_tx_bytes);
186346981ScyDECLARE_ACCESSOR(wpas_dbus_getter_sta_rx_bytes);
187337817ScyDECLARE_ACCESSOR(wpas_dbus_getter_bss_bssid);
188337817ScyDECLARE_ACCESSOR(wpas_dbus_getter_bss_ssid);
189337817ScyDECLARE_ACCESSOR(wpas_dbus_getter_bss_privacy);
190337817ScyDECLARE_ACCESSOR(wpas_dbus_getter_bss_mode);
191337817ScyDECLARE_ACCESSOR(wpas_dbus_getter_bss_signal);
192337817ScyDECLARE_ACCESSOR(wpas_dbus_getter_bss_frequency);
193337817ScyDECLARE_ACCESSOR(wpas_dbus_getter_bss_rates);
194337817ScyDECLARE_ACCESSOR(wpas_dbus_getter_bss_wpa);
195337817ScyDECLARE_ACCESSOR(wpas_dbus_getter_bss_rsn);
196337817ScyDECLARE_ACCESSOR(wpas_dbus_getter_bss_wps);
197337817ScyDECLARE_ACCESSOR(wpas_dbus_getter_bss_ies);
198337817ScyDECLARE_ACCESSOR(wpas_dbus_getter_bss_age);
199337817ScyDECLARE_ACCESSOR(wpas_dbus_getter_enabled);
200337817ScyDECLARE_ACCESSOR(wpas_dbus_setter_enabled);
201337817ScyDECLARE_ACCESSOR(wpas_dbus_getter_network_properties);
202337817ScyDECLARE_ACCESSOR(wpas_dbus_setter_network_properties);
203214501Srpaulo
204214501SrpauloDBusMessage * wpas_dbus_handler_wps_start(DBusMessage *message,
205214501Srpaulo					  struct wpa_supplicant *wpa_s);
206214501Srpaulo
207289549SrpauloDBusMessage * wpas_dbus_handler_wps_cancel(DBusMessage *message,
208289549Srpaulo					   struct wpa_supplicant *wpa_s);
209289549Srpaulo
210337817ScyDECLARE_ACCESSOR(wpas_dbus_getter_process_credentials);
211337817ScyDECLARE_ACCESSOR(wpas_dbus_setter_process_credentials);
212337817ScyDECLARE_ACCESSOR(wpas_dbus_getter_config_methods);
213337817ScyDECLARE_ACCESSOR(wpas_dbus_setter_config_methods);
214346981ScyDECLARE_ACCESSOR(wpas_dbus_getter_wps_device_name);
215346981ScyDECLARE_ACCESSOR(wpas_dbus_setter_wps_device_name);
216346981ScyDECLARE_ACCESSOR(wpas_dbus_getter_wps_manufacturer);
217346981ScyDECLARE_ACCESSOR(wpas_dbus_setter_wps_manufacturer);
218346981ScyDECLARE_ACCESSOR(wpas_dbus_getter_wps_device_model_name);
219346981ScyDECLARE_ACCESSOR(wpas_dbus_setter_wps_device_model_name);
220346981ScyDECLARE_ACCESSOR(wpas_dbus_getter_wps_device_model_number);
221346981ScyDECLARE_ACCESSOR(wpas_dbus_setter_wps_device_model_number);
222346981ScyDECLARE_ACCESSOR(wpas_dbus_getter_wps_device_serial_number);
223346981ScyDECLARE_ACCESSOR(wpas_dbus_setter_wps_device_serial_number);
224346981ScyDECLARE_ACCESSOR(wpas_dbus_getter_wps_device_device_type);
225346981ScyDECLARE_ACCESSOR(wpas_dbus_setter_wps_device_device_type);
226214501Srpaulo
227346981ScyDECLARE_ACCESSOR(wpas_dbus_getter_mesh_peers);
228346981ScyDECLARE_ACCESSOR(wpas_dbus_getter_mesh_group);
229346981Scy
230281806SrpauloDBusMessage * wpas_dbus_handler_tdls_discover(DBusMessage *message,
231281806Srpaulo					      struct wpa_supplicant *wpa_s);
232281806SrpauloDBusMessage * wpas_dbus_handler_tdls_setup(DBusMessage *message,
233281806Srpaulo					   struct wpa_supplicant *wpa_s);
234281806SrpauloDBusMessage * wpas_dbus_handler_tdls_status(DBusMessage *message,
235281806Srpaulo					    struct wpa_supplicant *wpa_s);
236281806SrpauloDBusMessage * wpas_dbus_handler_tdls_teardown(DBusMessage *message,
237281806Srpaulo					      struct wpa_supplicant *wpa_s);
238346981ScyDBusMessage *
239346981Scywpas_dbus_handler_tdls_channel_switch(DBusMessage *message,
240346981Scy				      struct wpa_supplicant *wpa_s);
241346981ScyDBusMessage *
242346981Scywpas_dbus_handler_tdls_cancel_channel_switch(DBusMessage *message,
243346981Scy					     struct wpa_supplicant *wpa_s);
244281806Srpaulo
245337817ScyDBusMessage * wpas_dbus_handler_vendor_elem_add(DBusMessage *message,
246337817Scy						struct wpa_supplicant *wpa_s);
247337817ScyDBusMessage * wpas_dbus_handler_vendor_elem_get(DBusMessage *message,
248337817Scy						struct wpa_supplicant *wpa_s);
249337817ScyDBusMessage * wpas_dbus_handler_vendor_elem_remove(
250337817Scy	DBusMessage *message, struct wpa_supplicant *wpa_s);
251337817Scy
252337817ScyDBusMessage * wpas_dbus_handler_save_config(DBusMessage *message,
253337817Scy					    struct wpa_supplicant *wpa_s);
254337817Scy
255214501SrpauloDBusMessage * wpas_dbus_error_invalid_args(DBusMessage *message,
256214501Srpaulo					   const char *arg);
257214501SrpauloDBusMessage * wpas_dbus_error_unknown_error(DBusMessage *message,
258214501Srpaulo					    const char *arg);
259281806SrpauloDBusMessage * wpas_dbus_error_no_memory(DBusMessage *message);
260214501Srpaulo
261252190SrpauloDBusMessage * wpas_dbus_handler_subscribe_preq(
262252190Srpaulo	DBusMessage *message, struct wpa_supplicant *wpa_s);
263252190SrpauloDBusMessage * wpas_dbus_handler_unsubscribe_preq(
264252190Srpaulo	DBusMessage *message, struct wpa_supplicant *wpa_s);
265252190Srpaulo
266214501Srpaulo#endif /* CTRL_IFACE_DBUS_HANDLERS_NEW_H */
267