Remove obsoleted get_scan_results() driver_ops
[libeap.git] / wpa_supplicant / driver_i.h
1 /*
2  * wpa_supplicant - Internal driver interface wrappers
3  * Copyright (c) 2003-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 #ifndef DRIVER_I_H
16 #define DRIVER_I_H
17
18 #include "drivers/driver.h"
19
20 /* driver_ops */
21 static inline void * wpa_drv_init(struct wpa_supplicant *wpa_s,
22                                   const char *ifname)
23 {
24         if (wpa_s->driver->init2)
25                 return wpa_s->driver->init2(wpa_s, ifname, wpa_s->global);
26         if (wpa_s->driver->init) {
27                 return wpa_s->driver->init(wpa_s, ifname);
28         }
29         return NULL;
30 }
31
32 static inline void wpa_drv_deinit(struct wpa_supplicant *wpa_s)
33 {
34         if (wpa_s->driver->deinit)
35                 wpa_s->driver->deinit(wpa_s->drv_priv);
36 }
37
38 static inline int wpa_drv_set_param(struct wpa_supplicant *wpa_s,
39                                     const char *param)
40 {
41         if (wpa_s->driver->set_param)
42                 return wpa_s->driver->set_param(wpa_s->drv_priv, param);
43         return 0;
44 }
45
46 static inline int wpa_drv_set_countermeasures(struct wpa_supplicant *wpa_s,
47                                               int enabled)
48 {
49         if (wpa_s->driver->set_countermeasures) {
50                 return wpa_s->driver->set_countermeasures(wpa_s->drv_priv,
51                                                           enabled);
52         }
53         return -1;
54 }
55
56 static inline int wpa_drv_authenticate(struct wpa_supplicant *wpa_s,
57                                        struct wpa_driver_auth_params *params)
58 {
59         if (wpa_s->driver->authenticate)
60                 return wpa_s->driver->authenticate(wpa_s->drv_priv, params);
61         return -1;
62 }
63
64 static inline int wpa_drv_associate(struct wpa_supplicant *wpa_s,
65                                     struct wpa_driver_associate_params *params)
66 {
67         if (wpa_s->driver->associate) {
68                 return wpa_s->driver->associate(wpa_s->drv_priv, params);
69         }
70         return -1;
71 }
72
73 static inline int wpa_drv_scan(struct wpa_supplicant *wpa_s,
74                                struct wpa_driver_scan_params *params)
75 {
76         if (wpa_s->driver->scan2)
77                 return wpa_s->driver->scan2(wpa_s->drv_priv, params);
78         return -1;
79 }
80
81 static inline struct wpa_scan_results * wpa_drv_get_scan_results2(
82         struct wpa_supplicant *wpa_s)
83 {
84         if (wpa_s->driver->get_scan_results2)
85                 return wpa_s->driver->get_scan_results2(wpa_s->drv_priv);
86         return NULL;
87 }
88
89 static inline int wpa_drv_get_bssid(struct wpa_supplicant *wpa_s, u8 *bssid)
90 {
91         if (wpa_s->driver->get_bssid) {
92                 return wpa_s->driver->get_bssid(wpa_s->drv_priv, bssid);
93         }
94         return -1;
95 }
96
97 static inline int wpa_drv_get_ssid(struct wpa_supplicant *wpa_s, u8 *ssid)
98 {
99         if (wpa_s->driver->get_ssid) {
100                 return wpa_s->driver->get_ssid(wpa_s->drv_priv, ssid);
101         }
102         return -1;
103 }
104
105 static inline int wpa_drv_set_key(struct wpa_supplicant *wpa_s, wpa_alg alg,
106                                    const u8 *addr, int key_idx, int set_tx,
107                                    const u8 *seq, size_t seq_len,
108                                    const u8 *key, size_t key_len)
109 {
110         if (wpa_s->driver->set_key) {
111                 wpa_s->keys_cleared = 0;
112                 return wpa_s->driver->set_key(wpa_s->ifname, wpa_s->drv_priv,
113                                               alg, addr, key_idx, set_tx,
114                                               seq, seq_len, key, key_len);
115         }
116         return -1;
117 }
118
119 static inline int wpa_drv_deauthenticate(struct wpa_supplicant *wpa_s,
120                                          const u8 *addr, int reason_code)
121 {
122         if (wpa_s->driver->deauthenticate) {
123                 return wpa_s->driver->deauthenticate(wpa_s->drv_priv, addr,
124                                                      reason_code);
125         }
126         return -1;
127 }
128
129 static inline int wpa_drv_disassociate(struct wpa_supplicant *wpa_s,
130                                        const u8 *addr, int reason_code)
131 {
132         if (wpa_s->driver->disassociate) {
133                 return wpa_s->driver->disassociate(wpa_s->drv_priv, addr,
134                                                    reason_code);
135         }
136         return -1;
137 }
138
139 static inline int wpa_drv_add_pmkid(struct wpa_supplicant *wpa_s,
140                                     const u8 *bssid, const u8 *pmkid)
141 {
142         if (wpa_s->driver->add_pmkid) {
143                 return wpa_s->driver->add_pmkid(wpa_s->drv_priv, bssid, pmkid);
144         }
145         return -1;
146 }
147
148 static inline int wpa_drv_remove_pmkid(struct wpa_supplicant *wpa_s,
149                                        const u8 *bssid, const u8 *pmkid)
150 {
151         if (wpa_s->driver->remove_pmkid) {
152                 return wpa_s->driver->remove_pmkid(wpa_s->drv_priv, bssid,
153                                                    pmkid);
154         }
155         return -1;
156 }
157
158 static inline int wpa_drv_flush_pmkid(struct wpa_supplicant *wpa_s)
159 {
160         if (wpa_s->driver->flush_pmkid) {
161                 return wpa_s->driver->flush_pmkid(wpa_s->drv_priv);
162         }
163         return -1;
164 }
165
166 static inline int wpa_drv_get_capa(struct wpa_supplicant *wpa_s,
167                                    struct wpa_driver_capa *capa)
168 {
169         if (wpa_s->driver->get_capa) {
170                 return wpa_s->driver->get_capa(wpa_s->drv_priv, capa);
171         }
172         return -1;
173 }
174
175 static inline void wpa_drv_poll(struct wpa_supplicant *wpa_s)
176 {
177         if (wpa_s->driver->poll) {
178                 wpa_s->driver->poll(wpa_s->drv_priv);
179         }
180 }
181
182 static inline const char * wpa_drv_get_ifname(struct wpa_supplicant *wpa_s)
183 {
184         if (wpa_s->driver->get_ifname) {
185                 return wpa_s->driver->get_ifname(wpa_s->drv_priv);
186         }
187         return NULL;
188 }
189
190 static inline const u8 * wpa_drv_get_mac_addr(struct wpa_supplicant *wpa_s)
191 {
192         if (wpa_s->driver->get_mac_addr) {
193                 return wpa_s->driver->get_mac_addr(wpa_s->drv_priv);
194         }
195         return NULL;
196 }
197
198 static inline int wpa_drv_send_eapol(struct wpa_supplicant *wpa_s,
199                                      const u8 *dst, u16 proto,
200                                      const u8 *data, size_t data_len)
201 {
202         if (wpa_s->driver->send_eapol)
203                 return wpa_s->driver->send_eapol(wpa_s->drv_priv, dst, proto,
204                                                  data, data_len);
205         return -1;
206 }
207
208 static inline int wpa_drv_set_operstate(struct wpa_supplicant *wpa_s,
209                                         int state)
210 {
211         if (wpa_s->driver->set_operstate)
212                 return wpa_s->driver->set_operstate(wpa_s->drv_priv, state);
213         return 0;
214 }
215
216 static inline int wpa_drv_mlme_setprotection(struct wpa_supplicant *wpa_s,
217                                              const u8 *addr, int protect_type,
218                                              int key_type)
219 {
220         if (wpa_s->driver->mlme_setprotection)
221                 return wpa_s->driver->mlme_setprotection(wpa_s->drv_priv, addr,
222                                                          protect_type,
223                                                          key_type);
224         return 0;
225 }
226
227 static inline struct hostapd_hw_modes *
228 wpa_drv_get_hw_feature_data(struct wpa_supplicant *wpa_s, u16 *num_modes,
229                             u16 *flags)
230 {
231         if (wpa_s->driver->get_hw_feature_data)
232                 return wpa_s->driver->get_hw_feature_data(wpa_s->drv_priv,
233                                                           num_modes, flags);
234         return NULL;
235 }
236
237 static inline int wpa_drv_set_channel(struct wpa_supplicant *wpa_s,
238                                       hostapd_hw_mode phymode, int chan,
239                                       int freq)
240 {
241         if (wpa_s->driver->set_channel)
242                 return wpa_s->driver->set_channel(wpa_s->drv_priv, phymode,
243                                                   chan, freq);
244         return -1;
245 }
246
247 static inline int wpa_drv_set_ssid(struct wpa_supplicant *wpa_s,
248                                    const u8 *ssid, size_t ssid_len)
249 {
250         if (wpa_s->driver->set_ssid) {
251                 return wpa_s->driver->set_ssid(wpa_s->drv_priv, ssid,
252                                                ssid_len);
253         }
254         return -1;
255 }
256
257 static inline int wpa_drv_set_bssid(struct wpa_supplicant *wpa_s,
258                                     const u8 *bssid)
259 {
260         if (wpa_s->driver->set_bssid) {
261                 return wpa_s->driver->set_bssid(wpa_s->drv_priv, bssid);
262         }
263         return -1;
264 }
265
266 static inline int wpa_drv_set_country(struct wpa_supplicant *wpa_s,
267                                       const char *alpha2)
268 {
269         if (wpa_s->driver->set_country)
270                 return wpa_s->driver->set_country(wpa_s->drv_priv, alpha2);
271         return 0;
272 }
273
274 static inline int wpa_drv_send_mlme(struct wpa_supplicant *wpa_s,
275                                     const u8 *data, size_t data_len)
276 {
277         if (wpa_s->driver->send_mlme)
278                 return wpa_s->driver->send_mlme(wpa_s->drv_priv,
279                                                 data, data_len);
280         return -1;
281 }
282
283 static inline int wpa_drv_mlme_add_sta(struct wpa_supplicant *wpa_s,
284                                        const u8 *addr, const u8 *supp_rates,
285                                        size_t supp_rates_len)
286 {
287         if (wpa_s->driver->mlme_add_sta)
288                 return wpa_s->driver->mlme_add_sta(wpa_s->drv_priv, addr,
289                                                    supp_rates, supp_rates_len);
290         return -1;
291 }
292
293 static inline int wpa_drv_mlme_remove_sta(struct wpa_supplicant *wpa_s,
294                                           const u8 *addr)
295 {
296         if (wpa_s->driver->mlme_remove_sta)
297                 return wpa_s->driver->mlme_remove_sta(wpa_s->drv_priv, addr);
298         return -1;
299 }
300
301 static inline int wpa_drv_update_ft_ies(struct wpa_supplicant *wpa_s,
302                                         const u8 *md,
303                                         const u8 *ies, size_t ies_len)
304 {
305         if (wpa_s->driver->update_ft_ies)
306                 return wpa_s->driver->update_ft_ies(wpa_s->drv_priv, md,
307                                                     ies, ies_len);
308         return -1;
309 }
310
311 static inline int wpa_drv_send_ft_action(struct wpa_supplicant *wpa_s,
312                                          u8 action, const u8 *target_ap,
313                                          const u8 *ies, size_t ies_len)
314 {
315         if (wpa_s->driver->send_ft_action)
316                 return wpa_s->driver->send_ft_action(wpa_s->drv_priv, action,
317                                                      target_ap, ies, ies_len);
318         return -1;
319 }
320
321 static inline int wpa_drv_set_beacon(struct wpa_supplicant *wpa_s,
322                                      const u8 *head, size_t head_len,
323                                      const u8 *tail, size_t tail_len,
324                                      int dtim_period, int beacon_int)
325 {
326         if (wpa_s->driver->set_beacon)
327                 return wpa_s->driver->set_beacon(wpa_s->ifname,
328                                                  wpa_s->drv_priv, head,
329                                                  head_len, tail, tail_len,
330                                                  dtim_period, beacon_int);
331         return -1;
332 }
333
334 static inline int wpa_drv_sta_add(struct wpa_supplicant *wpa_s,
335                                   struct hostapd_sta_add_params *params)
336 {
337         if (wpa_s->driver->sta_add)
338                 return wpa_s->driver->sta_add(wpa_s->ifname, wpa_s->drv_priv,
339                                               params);
340         return -1;
341 }
342
343 static inline int wpa_drv_sta_remove(struct wpa_supplicant *wpa_s,
344                                      const u8 *addr)
345 {
346         if (wpa_s->driver->sta_remove)
347                 return wpa_s->driver->sta_remove(wpa_s->drv_priv, addr);
348         return -1;
349 }
350
351 static inline int wpa_drv_hapd_send_eapol(struct wpa_supplicant *wpa_s,
352                                           const u8 *addr, const u8 *data,
353                                           size_t data_len, int encrypt,
354                                           const u8 *own_addr)
355 {
356         if (wpa_s->driver->hapd_send_eapol)
357                 return wpa_s->driver->hapd_send_eapol(wpa_s->drv_priv, addr,
358                                                       data, data_len, encrypt,
359                                                       own_addr);
360         return -1;
361 }
362
363 static inline int wpa_drv_sta_set_flags(struct wpa_supplicant *wpa_s,
364                                         const u8 *addr, int total_flags,
365                                         int flags_or, int flags_and)
366 {
367         if (wpa_s->driver->sta_set_flags)
368                 return wpa_s->driver->sta_set_flags(wpa_s->drv_priv, addr,
369                                                     total_flags, flags_or,
370                                                     flags_and);
371         return -1;
372 }
373
374 static inline int wpa_drv_set_supp_port(struct wpa_supplicant *wpa_s,
375                                         int authorized)
376 {
377         if (wpa_s->driver->set_supp_port) {
378                 return wpa_s->driver->set_supp_port(wpa_s->drv_priv,
379                                                     authorized);
380         }
381         return 0;
382 }
383
384 #endif /* DRIVER_I_H */