Replace "git-archive" with "git archive" to fix release build
[libeap.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 }