]> git.ipfire.org Git - thirdparty/hostap.git/blob - wpa_supplicant/notify.c
wpa_supplicant: new DBus API implementation
[thirdparty/hostap.git] / wpa_supplicant / notify.c
1 /*
2 * wpa_supplicant - Event notifications
3 * Copyright (c) 2009, Jouni Malinen <j@w1.fi>
4 *
5 * This program is free software; you can redistribute it and/or modify
6 * it under the terms of the GNU General Public License version 2 as
7 * published by the Free Software Foundation.
8 *
9 * Alternatively, this software may be distributed under the terms of BSD
10 * license.
11 *
12 * See README and COPYING for more details.
13 */
14
15 #include "includes.h"
16
17 #include "common.h"
18 #include "config.h"
19 #include "wpa_supplicant_i.h"
20 #include "wps_supplicant.h"
21 #include "ctrl_iface_dbus.h"
22 #include "ctrl_iface_dbus_new.h"
23 #include "notify.h"
24
25 int wpas_notify_supplicant_initialized(struct wpa_global *global)
26 {
27 struct wpas_dbus_callbacks *cbs = wpas_dbus_get_callbacks();
28
29 if (global->params.dbus_ctrl_interface) {
30 global->dbus_ctrl_iface =
31 wpa_supplicant_dbus_ctrl_iface_init(global);
32 if (global->dbus_ctrl_iface == NULL)
33 return -1;
34
35 if (cbs) {
36 global->dbus_new_ctrl_iface =
37 cbs->dbus_ctrl_init(global);
38 if (global->dbus_new_ctrl_iface == NULL)
39 return -1;
40 }
41 }
42
43 return 0;
44 }
45
46
47 void wpas_notify_supplicant_deinitialized(struct wpa_global *global)
48 {
49 struct wpas_dbus_callbacks *cbs = wpas_dbus_get_callbacks();
50
51 if (global->dbus_ctrl_iface)
52 wpa_supplicant_dbus_ctrl_iface_deinit(global->dbus_ctrl_iface);
53
54 if (cbs && global->dbus_new_ctrl_iface)
55 cbs->dbus_ctrl_deinit(global->dbus_new_ctrl_iface);
56 }
57
58
59 int wpas_notify_iface_added(struct wpa_supplicant *wpa_s)
60 {
61 struct wpas_dbus_callbacks *cbs = wpas_dbus_get_callbacks();
62
63 if (wpas_dbus_register_iface(wpa_s))
64 return -1;
65
66 if (cbs && cbs->register_interface(wpa_s))
67 return -1;
68
69 return 0;
70 }
71
72
73
74 void wpas_notify_iface_removed(struct wpa_supplicant *wpa_s)
75 {
76 struct wpas_dbus_callbacks *cbs = wpas_dbus_get_callbacks();
77
78 /* unregister interface in old DBus ctrl iface */
79 wpas_dbus_unregister_iface(wpa_s);
80
81 /* unregister interface in new DBus ctrl iface */
82 if (cbs)
83 cbs->unregister_interface(wpa_s);
84 }
85
86
87 void wpas_notify_state_changed(struct wpa_supplicant *wpa_s,
88 wpa_states new_state, wpa_states old_state)
89 {
90 struct wpas_dbus_callbacks *cbs = wpas_dbus_get_callbacks();
91
92 /* notify the old DBus API */
93 wpa_supplicant_dbus_notify_state_change(wpa_s, new_state,
94 old_state);
95
96 /* notify the new DBus API */
97 if (cbs)
98 cbs->signal_state_changed(wpa_s, new_state, old_state);
99 }
100
101
102 void wpas_notify_network_changed(struct wpa_supplicant *wpa_s)
103 {
104 struct wpas_dbus_callbacks *cbs = wpas_dbus_get_callbacks();
105 if (cbs)
106 cbs->signal_prop_changed(wpa_s,
107 WPAS_DBUS_PROP_CURRENT_NETWORK);
108 }
109
110
111 void wpas_notify_ap_scan_changed(struct wpa_supplicant *wpa_s)
112 {
113 struct wpas_dbus_callbacks *cbs = wpas_dbus_get_callbacks();
114 if (cbs)
115 cbs->signal_prop_changed(wpa_s, WPAS_DBUS_PROP_AP_SCAN);
116 }
117
118
119 void wpas_notify_bssid_changed(struct wpa_supplicant *wpa_s)
120 {
121 struct wpas_dbus_callbacks *cbs = wpas_dbus_get_callbacks();
122 if (cbs)
123 cbs->signal_prop_changed(wpa_s, WPAS_DBUS_PROP_CURRENT_BSS);
124 }
125
126
127 void wpas_notify_network_enabled_changed(struct wpa_supplicant *wpa_s,
128 struct wpa_ssid *ssid)
129 {
130 struct wpas_dbus_callbacks *cbs = wpas_dbus_get_callbacks();
131 if (cbs)
132 cbs->signal_network_enabled_changed(wpa_s, ssid);
133 }
134
135
136 void wpas_notify_network_selected(struct wpa_supplicant *wpa_s,
137 struct wpa_ssid *ssid)
138 {
139 struct wpas_dbus_callbacks *cbs = wpas_dbus_get_callbacks();
140 if (cbs)
141 cbs->signal_network_selected(wpa_s, ssid->id);
142 }
143
144
145 void wpas_notify_scanning(struct wpa_supplicant *wpa_s)
146 {
147 struct wpas_dbus_callbacks *cbs = wpas_dbus_get_callbacks();
148 /* notify the old DBus API */
149 wpa_supplicant_dbus_notify_scanning(wpa_s);
150 /* notify the new DBus API */
151 if (cbs)
152 cbs->signal_prop_changed(wpa_s, WPAS_DBUS_PROP_SCANNING);
153 }
154
155
156 void wpas_notify_scan_done(struct wpa_supplicant *wpa_s, int success)
157 {
158 struct wpas_dbus_callbacks *cbs = wpas_dbus_get_callbacks();
159 if (cbs)
160 cbs->signal_scan_done(wpa_s, success);
161 }
162
163
164 void wpas_notify_scan_results(struct wpa_supplicant *wpa_s)
165 {
166 /* notify the old DBus API */
167 wpa_supplicant_dbus_notify_scan_results(wpa_s);
168
169 wpas_wps_notify_scan_results(wpa_s);
170 }
171
172
173 void wpas_notify_wps_credential(struct wpa_supplicant *wpa_s,
174 const struct wps_credential *cred)
175 {
176 struct wpas_dbus_callbacks *cbs = wpas_dbus_get_callbacks();
177
178 /* notify the old DBus API */
179 wpa_supplicant_dbus_notify_wps_cred(wpa_s, cred);
180 /* notify the new DBus API */
181 if (cbs)
182 cbs->signal_wps_credentials(wpa_s, cred);
183 }
184
185
186 void wpas_notify_wps_event_m2d(struct wpa_supplicant *wpa_s,
187 struct wps_event_m2d *m2d)
188 {
189 struct wpas_dbus_callbacks *cbs = wpas_dbus_get_callbacks();
190 if (cbs)
191 cbs->signal_wps_event_m2d(wpa_s, m2d);
192 }
193
194
195 void wpas_notify_wps_event_fail(struct wpa_supplicant *wpa_s,
196 struct wps_event_fail *fail)
197 {
198 struct wpas_dbus_callbacks *cbs = wpas_dbus_get_callbacks();
199 if (cbs)
200 cbs->signal_wps_event_fail(wpa_s, fail);
201 }
202
203
204 void wpas_notify_wps_event_success(struct wpa_supplicant *wpa_s)
205 {
206 struct wpas_dbus_callbacks *cbs = wpas_dbus_get_callbacks();
207 if (cbs)
208 cbs->signal_wps_event_success(wpa_s);
209 }
210
211
212 void wpas_notify_network_added(struct wpa_supplicant *wpa_s,
213 struct wpa_ssid *ssid)
214 {
215 struct wpas_dbus_callbacks *cbs = wpas_dbus_get_callbacks();
216 if (wpa_s->global->dbus_new_ctrl_iface && cbs)
217 cbs->register_network(wpa_s, ssid);
218 }
219
220
221 void wpas_notify_network_removed(struct wpa_supplicant *wpa_s,
222 struct wpa_ssid *ssid)
223 {
224 struct wpas_dbus_callbacks *cbs = wpas_dbus_get_callbacks();
225 if (wpa_s->global->dbus_new_ctrl_iface && cbs)
226 cbs->unregister_network(wpa_s, ssid->id);
227 }
228
229
230 void wpas_notify_blob_added(struct wpa_supplicant *wpa_s, const char *name)
231 {
232 struct wpas_dbus_callbacks *cbs = wpas_dbus_get_callbacks();
233 if (cbs)
234 cbs->signal_blob_added(wpa_s, name);
235 }
236
237
238 void wpas_notify_blob_removed(struct wpa_supplicant *wpa_s, const char *name)
239 {
240 struct wpas_dbus_callbacks *cbs = wpas_dbus_get_callbacks();
241 if (cbs)
242 cbs->signal_blob_removed(wpa_s, name);
243 }
244
245
246 void wpas_notify_debug_params_changed(struct wpa_global *global)
247 {
248 struct wpas_dbus_callbacks *cbs = wpas_dbus_get_callbacks();
249 if (cbs)
250 cbs->signal_debug_params_changed(global);
251 }