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 *
6214501Srpaulo * This program is free software; you can redistribute it and/or modify
7214501Srpaulo * it under the terms of the GNU General Public License version 2 as
8214501Srpaulo * published by the Free Software Foundation.
9214501Srpaulo *
10214501Srpaulo * Alternatively, this software may be distributed under the terms of BSD
11214501Srpaulo * license.
12214501Srpaulo *
13214501Srpaulo * See README and COPYING for more details.
14214501Srpaulo */
15214501Srpaulo
16214501Srpaulo#ifndef CTRL_IFACE_DBUS_NEW_H
17214501Srpaulo#define CTRL_IFACE_DBUS_NEW_H
18214501Srpaulo
19214501Srpaulostruct wpa_global;
20214501Srpaulostruct wpa_supplicant;
21214501Srpaulostruct wpa_ssid;
22214501Srpaulostruct wps_event_m2d;
23214501Srpaulostruct wps_event_fail;
24214501Srpaulostruct wps_credential;
25214501Srpauloenum wpa_states;
26214501Srpaulo
27214501Srpauloenum wpas_dbus_prop {
28214501Srpaulo	WPAS_DBUS_PROP_AP_SCAN,
29214501Srpaulo	WPAS_DBUS_PROP_SCANNING,
30214501Srpaulo	WPAS_DBUS_PROP_STATE,
31214501Srpaulo	WPAS_DBUS_PROP_CURRENT_BSS,
32214501Srpaulo	WPAS_DBUS_PROP_CURRENT_NETWORK,
33214501Srpaulo};
34214501Srpaulo
35214501Srpauloenum wpas_dbus_bss_prop {
36214501Srpaulo	WPAS_DBUS_BSS_PROP_SIGNAL,
37214501Srpaulo	WPAS_DBUS_BSS_PROP_FREQ,
38214501Srpaulo	WPAS_DBUS_BSS_PROP_MODE,
39214501Srpaulo	WPAS_DBUS_BSS_PROP_PRIVACY,
40214501Srpaulo	WPAS_DBUS_BSS_PROP_RATES,
41214501Srpaulo	WPAS_DBUS_BSS_PROP_WPA,
42214501Srpaulo	WPAS_DBUS_BSS_PROP_RSN,
43214501Srpaulo	WPAS_DBUS_BSS_PROP_IES,
44214501Srpaulo};
45214501Srpaulo
46214501Srpaulo#define WPAS_DBUS_OBJECT_PATH_MAX 150
47214501Srpaulo
48214501Srpaulo#define WPAS_DBUS_NEW_SERVICE		"fi.w1.wpa_supplicant1"
49214501Srpaulo#define WPAS_DBUS_NEW_PATH		"/fi/w1/wpa_supplicant1"
50214501Srpaulo#define WPAS_DBUS_NEW_INTERFACE		"fi.w1.wpa_supplicant1"
51214501Srpaulo
52214501Srpaulo#define WPAS_DBUS_NEW_PATH_INTERFACES	WPAS_DBUS_NEW_PATH "/Interfaces"
53214501Srpaulo#define WPAS_DBUS_NEW_IFACE_INTERFACE	WPAS_DBUS_NEW_INTERFACE ".Interface"
54214501Srpaulo#define WPAS_DBUS_NEW_IFACE_WPS WPAS_DBUS_NEW_IFACE_INTERFACE ".WPS"
55214501Srpaulo
56214501Srpaulo#define WPAS_DBUS_NEW_NETWORKS_PART "Networks"
57214501Srpaulo#define WPAS_DBUS_NEW_IFACE_NETWORK WPAS_DBUS_NEW_INTERFACE ".Network"
58214501Srpaulo
59214501Srpaulo#define WPAS_DBUS_NEW_BSSIDS_PART "BSSs"
60214501Srpaulo#define WPAS_DBUS_NEW_IFACE_BSS	WPAS_DBUS_NEW_INTERFACE ".BSS"
61214501Srpaulo
62214501Srpaulo
63214501Srpaulo/* Errors */
64214501Srpaulo#define WPAS_DBUS_ERROR_UNKNOWN_ERROR \
65214501Srpaulo	WPAS_DBUS_NEW_INTERFACE ".UnknownError"
66214501Srpaulo#define WPAS_DBUS_ERROR_INVALID_ARGS \
67214501Srpaulo	WPAS_DBUS_NEW_INTERFACE ".InvalidArgs"
68214501Srpaulo
69214501Srpaulo#define WPAS_DBUS_ERROR_IFACE_EXISTS \
70214501Srpaulo	WPAS_DBUS_NEW_INTERFACE ".InterfaceExists"
71214501Srpaulo#define WPAS_DBUS_ERROR_IFACE_UNKNOWN \
72214501Srpaulo	WPAS_DBUS_NEW_INTERFACE ".InterfaceUnknown"
73214501Srpaulo
74214501Srpaulo#define WPAS_DBUS_ERROR_NOT_CONNECTED \
75214501Srpaulo	WPAS_DBUS_NEW_INTERFACE ".NotConnected"
76214501Srpaulo#define WPAS_DBUS_ERROR_NETWORK_UNKNOWN \
77214501Srpaulo	WPAS_DBUS_NEW_INTERFACE ".NetworkUnknown"
78214501Srpaulo
79214501Srpaulo#define WPAS_DBUS_ERROR_BLOB_EXISTS \
80214501Srpaulo	WPAS_DBUS_NEW_INTERFACE ".BlobExists"
81214501Srpaulo#define WPAS_DBUS_ERROR_BLOB_UNKNOWN \
82214501Srpaulo	WPAS_DBUS_NEW_INTERFACE ".BlobUnknown"
83214501Srpaulo
84214501Srpaulo
85214501Srpaulo#ifdef CONFIG_CTRL_IFACE_DBUS_NEW
86214501Srpaulo
87214501Srpauloint wpas_dbus_ctrl_iface_init(struct wpas_dbus_priv *priv);
88214501Srpaulovoid wpas_dbus_ctrl_iface_deinit(struct wpas_dbus_priv *iface);
89214501Srpaulo
90214501Srpauloint wpas_dbus_register_interface(struct wpa_supplicant *wpa_s);
91214501Srpauloint wpas_dbus_unregister_interface(struct wpa_supplicant *wpa_s);
92214501Srpaulovoid wpas_dbus_signal_prop_changed(struct wpa_supplicant *wpa_s,
93214501Srpaulo				   enum wpas_dbus_prop property);
94214501Srpaulovoid wpas_dbus_bss_signal_prop_changed(struct wpa_supplicant *wpa_s,
95214501Srpaulo				       enum wpas_dbus_bss_prop property,
96214501Srpaulo				       unsigned int id);
97214501Srpaulovoid wpas_dbus_signal_network_enabled_changed(struct wpa_supplicant *wpa_s,
98214501Srpaulo					      struct wpa_ssid *ssid);
99214501Srpaulovoid wpas_dbus_signal_network_selected(struct wpa_supplicant *wpa_s, int id);
100214501Srpaulovoid wpas_dbus_signal_scan_done(struct wpa_supplicant *wpa_s, int success);
101214501Srpaulovoid wpas_dbus_signal_wps_cred(struct wpa_supplicant *wpa_s,
102214501Srpaulo			       const struct wps_credential *cred);
103214501Srpaulovoid wpas_dbus_signal_wps_event_m2d(struct wpa_supplicant *wpa_s,
104214501Srpaulo				    struct wps_event_m2d *m2d);
105214501Srpaulovoid wpas_dbus_signal_wps_event_fail(struct wpa_supplicant *wpa_s,
106214501Srpaulo				     struct wps_event_fail *fail);
107214501Srpaulovoid wpas_dbus_signal_wps_event_success(struct wpa_supplicant *wpa_s);
108214501Srpauloint wpas_dbus_register_network(struct wpa_supplicant *wpa_s,
109214501Srpaulo			       struct wpa_ssid *ssid);
110214501Srpauloint wpas_dbus_unregister_network(struct wpa_supplicant *wpa_s, int nid);
111214501Srpauloint wpas_dbus_unregister_bss(struct wpa_supplicant *wpa_s,
112214501Srpaulo			     u8 bssid[ETH_ALEN], unsigned int id);
113214501Srpauloint wpas_dbus_register_bss(struct wpa_supplicant *wpa_s,
114214501Srpaulo			   u8 bssid[ETH_ALEN], unsigned int id);
115214501Srpaulovoid wpas_dbus_signal_blob_added(struct wpa_supplicant *wpa_s,
116214501Srpaulo				 const char *name);
117214501Srpaulovoid wpas_dbus_signal_blob_removed(struct wpa_supplicant *wpa_s,
118214501Srpaulo				   const char *name);
119214501Srpaulovoid wpas_dbus_signal_debug_level_changed(struct wpa_global *global);
120214501Srpaulovoid wpas_dbus_signal_debug_timestamp_changed(struct wpa_global *global);
121214501Srpaulovoid wpas_dbus_signal_debug_show_keys_changed(struct wpa_global *global);
122214501Srpaulo
123214501Srpaulo#else /* CONFIG_CTRL_IFACE_DBUS_NEW */
124214501Srpaulo
125214501Srpaulostatic inline int wpas_dbus_register_interface(struct wpa_supplicant *wpa_s)
126214501Srpaulo{
127214501Srpaulo	return 0;
128214501Srpaulo}
129214501Srpaulo
130214501Srpaulostatic inline int wpas_dbus_unregister_interface(struct wpa_supplicant *wpa_s)
131214501Srpaulo{
132214501Srpaulo	return 0;
133214501Srpaulo}
134214501Srpaulo
135214501Srpaulo#define wpas_dbus_signal_state_changed(w, n, o) do { } while (0)
136214501Srpaulo
137214501Srpaulostatic inline void wpas_dbus_signal_prop_changed(struct wpa_supplicant *wpa_s,
138214501Srpaulo						 enum wpas_dbus_prop property)
139214501Srpaulo{
140214501Srpaulo}
141214501Srpaulo
142214501Srpaulostatic inline void wpas_dbus_bss_signal_prop_changed(
143214501Srpaulo	struct wpa_supplicant *wpa_s, enum wpas_dbus_bss_prop property,
144214501Srpaulo	unsigned int id)
145214501Srpaulo{
146214501Srpaulo}
147214501Srpaulo
148214501Srpaulostatic inline void wpas_dbus_signal_network_enabled_changed(
149214501Srpaulo	struct wpa_supplicant *wpa_s, struct wpa_ssid *ssid)
150214501Srpaulo{
151214501Srpaulo}
152214501Srpaulo
153214501Srpaulostatic inline void wpas_dbus_signal_network_selected(
154214501Srpaulo	struct wpa_supplicant *wpa_s, int id)
155214501Srpaulo{
156214501Srpaulo}
157214501Srpaulo
158214501Srpaulostatic inline void wpas_dbus_signal_scan_done(struct wpa_supplicant *wpa_s,
159214501Srpaulo					      int success)
160214501Srpaulo{
161214501Srpaulo}
162214501Srpaulo
163214501Srpaulostatic inline void wpas_dbus_signal_wps_cred(struct wpa_supplicant *wpa_s,
164214501Srpaulo					     const struct wps_credential *cred)
165214501Srpaulo{
166214501Srpaulo}
167214501Srpaulo
168214501Srpaulostatic inline void wpas_dbus_signal_wps_event_m2d(struct wpa_supplicant *wpa_s,
169214501Srpaulo						  struct wps_event_m2d *m2d)
170214501Srpaulo{
171214501Srpaulo}
172214501Srpaulo
173214501Srpaulostatic inline void wpas_dbus_signal_wps_event_fail(
174214501Srpaulo	struct wpa_supplicant *wpa_s, struct wps_event_fail *fail)
175214501Srpaulo{
176214501Srpaulo}
177214501Srpaulo
178214501Srpaulostatic inline void wpas_dbus_signal_wps_event_success(
179214501Srpaulo	struct wpa_supplicant *wpa_s)
180214501Srpaulo{
181214501Srpaulo}
182214501Srpaulo
183214501Srpaulostatic inline int wpas_dbus_register_network(struct wpa_supplicant *wpa_s,
184214501Srpaulo					     struct wpa_ssid *ssid)
185214501Srpaulo{
186214501Srpaulo	return 0;
187214501Srpaulo}
188214501Srpaulo
189214501Srpaulostatic inline int wpas_dbus_unregister_network(struct wpa_supplicant *wpa_s,
190214501Srpaulo					       int nid)
191214501Srpaulo{
192214501Srpaulo	return 0;
193214501Srpaulo}
194214501Srpaulo
195214501Srpaulostatic inline int wpas_dbus_unregister_bss(struct wpa_supplicant *wpa_s,
196214501Srpaulo					   u8 bssid[ETH_ALEN], unsigned int id)
197214501Srpaulo{
198214501Srpaulo	return 0;
199214501Srpaulo}
200214501Srpaulo
201214501Srpaulostatic inline int wpas_dbus_register_bss(struct wpa_supplicant *wpa_s,
202214501Srpaulo					 u8 bssid[ETH_ALEN], unsigned int id)
203214501Srpaulo{
204214501Srpaulo	return 0;
205214501Srpaulo}
206214501Srpaulo
207214501Srpaulostatic inline void wpas_dbus_signal_blob_added(struct wpa_supplicant *wpa_s,
208214501Srpaulo					       const char *name)
209214501Srpaulo{
210214501Srpaulo}
211214501Srpaulo
212214501Srpaulostatic inline void wpas_dbus_signal_blob_removed(struct wpa_supplicant *wpa_s,
213214501Srpaulo						 const char *name)
214214501Srpaulo{
215214501Srpaulo}
216214501Srpaulo
217214501Srpaulostatic inline void wpas_dbus_signal_debug_level_changed(
218214501Srpaulo	struct wpa_global *global)
219214501Srpaulo{
220214501Srpaulo}
221214501Srpaulo
222214501Srpaulostatic inline void wpas_dbus_signal_debug_timestamp_changed(
223214501Srpaulo	struct wpa_global *global)
224214501Srpaulo{
225214501Srpaulo}
226214501Srpaulo
227214501Srpaulostatic inline void wpas_dbus_signal_debug_show_keys_changed(
228214501Srpaulo	struct wpa_global *global)
229214501Srpaulo{
230214501Srpaulo}
231214501Srpaulo
232214501Srpaulo#endif /* CONFIG_CTRL_IFACE_DBUS_NEW */
233214501Srpaulo
234214501Srpaulo#endif /* CTRL_IFACE_DBUS_H_NEW */
235