~ubuntu-branches/ubuntu/precise/wpasupplicant/precise-proposed

« back to all changes in this revision

Viewing changes to .pc/wpa_supplicant-squelch-driver-disconnect-spam.patch/wpa_supplicant/wpa_supplicant_i.h

  • Committer: Package Import Robot
  • Author(s): Mathieu Trudel-Lapierre
  • Date: 2013-06-12 15:57:50 UTC
  • Revision ID: package-import@ubuntu.com-20130612155750-go9lgylcef8n3f2f
Tags: 0.7.3-6ubuntu2.2
* Multiple patches to reduce the number of disconnections for WPA Enterprise
  roaming and Opportunistic Key Caching. (LP: #1187524)
* In debian/patches:
  0001-sme-fix-retry-after-auth-assoc-timeout-failure.patch,
  0002-sme-optimize-recovery-from-common-load-balancing-mechanisms.patch,
  0003-sme-blacklist-bss-on-first-failure-if-only-a-*.patch,
  0004-sme-extend-load-balancing-optimization-in-bss-blacklisting.patch,
  0005-sme-optimize-recovery-from-association-command-failures.patch,
  0006-sme-add-timers-for-authentication-and-association.patch,
  0007-sme-nl80211-set-cipher-suites.patch:
  Cherry-pick patches fixing SME (Session Management Entity) for the nl80211
  driver, which works as a basis for the OKC patches.
* In debian/patches:
  0001-pmkokc-Set-portValid-TRUE-on-association-for-driver-based-4.patch,
  0002-pmkokc-Clear-WPA-and-EAPOL-state-machine-config-pointer-on-.patch,
  0003-pmkokc-Clear-driver-PMKSA-cache-entry-on-PMKSA-cache-expira.patch,
  0004-pmkokc-Flush-PMKSA-cache-entries-and-invalidate-EAP-state-o.patch,
  0005-pmkokc-Fix-proactive_key_caching-configuration-to-WPA-code.patch,
  0006-pmkokc-RSN-Add-a-debug-message-when-considing-addition-of-O.patch,
  0007-pmkokc-Clear-OKC-based-PMKSA-caching-entries-if-PMK-is-chan.patch,
  0008-pmkokc-Move-wpa_sm_remove_pmkid-call-to-PMKSA-cache-entry-f.patch,
  0009-pmkokc-Use-PMKSA-cache-entries-with-only-a-single-network-c.patch,
  0010-pmkokc-PMKSA-Do-not-evict-active-cache-entry-when-adding-ne.patch,
  0011-pmkokc-PMKSA-Set-cur_pmksa-pointer-during-initial-associati.patch,
  0012-pmkokc-PMKSA-make-deauthentication-due-to-cache-entry-remov.patch,
  0013-pmkokc-PMKSA-update-current-cache-entry-due-to-association-.patch:
  Cherry-pick patches to properly do OKC (Opportunistic Key Caching) which
  helps maintaining connectivity on networks secured with WPA Enterprise,
  especially on nl80211-based drivers -- these patches require SME, and add
  or fix key caching and handling of the cache entries.
* debian/patches/force-enable-okc.patch: force Opportunistic Key Caching to
  be enabled.
* debian/patches/less-aggressive-roaming.patch: use less aggressive roaming
  settings to avoid switching to another AP unnecessarily, when the actual
  signal level difference is small.
* debian/patches/wpa_supplicant-dbus-null-error.patch: Don't send NULL to
  dbus_message_new_error().
* debian/patches/0001-nl80211-Fix-UNSPEC-signal-quality-reporting.patch: fix
  marking qual as invalid rather than signal level.
* debian/patches/wpa_supplicant-squelch-driver-disconnect-spam.patch: recover
  cleanly from streams of disconnect messages (like on iwl3945).
* debian/patches/wpa_supplicant-assoc-timeout.patch: increase association
  timeouts.

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/*
 
2
 * wpa_supplicant - Internal definitions
 
3
 * Copyright (c) 2003-2010, 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 WPA_SUPPLICANT_I_H
 
16
#define WPA_SUPPLICANT_I_H
 
17
 
 
18
#include "utils/list.h"
 
19
#include "common/defs.h"
 
20
 
 
21
extern const char *wpa_supplicant_version;
 
22
extern const char *wpa_supplicant_license;
 
23
#ifndef CONFIG_NO_STDOUT_DEBUG
 
24
extern const char *wpa_supplicant_full_license1;
 
25
extern const char *wpa_supplicant_full_license2;
 
26
extern const char *wpa_supplicant_full_license3;
 
27
extern const char *wpa_supplicant_full_license4;
 
28
extern const char *wpa_supplicant_full_license5;
 
29
#endif /* CONFIG_NO_STDOUT_DEBUG */
 
30
 
 
31
struct wpa_sm;
 
32
struct wpa_supplicant;
 
33
struct ibss_rsn;
 
34
struct scan_info;
 
35
struct wpa_bss;
 
36
struct wpa_scan_results;
 
37
 
 
38
/*
 
39
 * Forward declarations of private structures used within the ctrl_iface
 
40
 * backends. Other parts of wpa_supplicant do not have access to data stored in
 
41
 * these structures.
 
42
 */
 
43
struct ctrl_iface_priv;
 
44
struct ctrl_iface_global_priv;
 
45
struct wpas_dbus_priv;
 
46
 
 
47
/**
 
48
 * struct wpa_interface - Parameters for wpa_supplicant_add_iface()
 
49
 */
 
50
struct wpa_interface {
 
51
        /**
 
52
         * confname - Configuration name (file or profile) name
 
53
         *
 
54
         * This can also be %NULL when a configuration file is not used. In
 
55
         * that case, ctrl_interface must be set to allow the interface to be
 
56
         * configured.
 
57
         */
 
58
        const char *confname;
 
59
 
 
60
        /**
 
61
         * ctrl_interface - Control interface parameter
 
62
         *
 
63
         * If a configuration file is not used, this variable can be used to
 
64
         * set the ctrl_interface parameter that would have otherwise been read
 
65
         * from the configuration file. If both confname and ctrl_interface are
 
66
         * set, ctrl_interface is used to override the value from configuration
 
67
         * file.
 
68
         */
 
69
        const char *ctrl_interface;
 
70
 
 
71
        /**
 
72
         * driver - Driver interface name, or %NULL to use the default driver
 
73
         */
 
74
        const char *driver;
 
75
 
 
76
        /**
 
77
         * driver_param - Driver interface parameters
 
78
         *
 
79
         * If a configuration file is not used, this variable can be used to
 
80
         * set the driver_param parameters that would have otherwise been read
 
81
         * from the configuration file. If both confname and driver_param are
 
82
         * set, driver_param is used to override the value from configuration
 
83
         * file.
 
84
         */
 
85
        const char *driver_param;
 
86
 
 
87
        /**
 
88
         * ifname - Interface name
 
89
         */
 
90
        const char *ifname;
 
91
 
 
92
        /**
 
93
         * bridge_ifname - Optional bridge interface name
 
94
         *
 
95
         * If the driver interface (ifname) is included in a Linux bridge
 
96
         * device, the bridge interface may need to be used for receiving EAPOL
 
97
         * frames. This can be enabled by setting this variable to enable
 
98
         * receiving of EAPOL frames from an additional interface.
 
99
         */
 
100
        const char *bridge_ifname;
 
101
};
 
102
 
 
103
/**
 
104
 * struct wpa_params - Parameters for wpa_supplicant_init()
 
105
 */
 
106
struct wpa_params {
 
107
        /**
 
108
         * daemonize - Run %wpa_supplicant in the background
 
109
         */
 
110
        int daemonize;
 
111
 
 
112
        /**
 
113
         * wait_for_monitor - Wait for a monitor program before starting
 
114
         */
 
115
        int wait_for_monitor;
 
116
 
 
117
        /**
 
118
         * pid_file - Path to a PID (process ID) file
 
119
         *
 
120
         * If this and daemonize are set, process ID of the background process
 
121
         * will be written to the specified file.
 
122
         */
 
123
        char *pid_file;
 
124
 
 
125
        /**
 
126
         * wpa_debug_level - Debugging verbosity level (e.g., MSG_INFO)
 
127
         */
 
128
        int wpa_debug_level;
 
129
 
 
130
        /**
 
131
         * wpa_debug_show_keys - Whether keying material is included in debug
 
132
         *
 
133
         * This parameter can be used to allow keying material to be included
 
134
         * in debug messages. This is a security risk and this option should
 
135
         * not be enabled in normal configuration. If needed during
 
136
         * development or while troubleshooting, this option can provide more
 
137
         * details for figuring out what is happening.
 
138
         */
 
139
        int wpa_debug_show_keys;
 
140
 
 
141
        /**
 
142
         * wpa_debug_timestamp - Whether to include timestamp in debug messages
 
143
         */
 
144
        int wpa_debug_timestamp;
 
145
 
 
146
        /**
 
147
         * ctrl_interface - Global ctrl_iface path/parameter
 
148
         */
 
149
        char *ctrl_interface;
 
150
 
 
151
        /**
 
152
         * dbus_ctrl_interface - Enable the DBus control interface
 
153
         */
 
154
        int dbus_ctrl_interface;
 
155
 
 
156
        /**
 
157
         * wpa_debug_file_path - Path of debug file or %NULL to use stdout
 
158
         */
 
159
        const char *wpa_debug_file_path;
 
160
 
 
161
        /**
 
162
         * wpa_debug_syslog - Enable log output through syslog
 
163
         */
 
164
        int wpa_debug_syslog;
 
165
 
 
166
        /**
 
167
         * override_driver - Optional driver parameter override
 
168
         *
 
169
         * This parameter can be used to override the driver parameter in
 
170
         * dynamic interface addition to force a specific driver wrapper to be
 
171
         * used instead.
 
172
         */
 
173
        char *override_driver;
 
174
 
 
175
        /**
 
176
         * override_ctrl_interface - Optional ctrl_interface override
 
177
         *
 
178
         * This parameter can be used to override the ctrl_interface parameter
 
179
         * in dynamic interface addition to force a control interface to be
 
180
         * created.
 
181
         */
 
182
        char *override_ctrl_interface;
 
183
};
 
184
 
 
185
/**
 
186
 * struct wpa_global - Internal, global data for all %wpa_supplicant interfaces
 
187
 *
 
188
 * This structure is initialized by calling wpa_supplicant_init() when starting
 
189
 * %wpa_supplicant.
 
190
 */
 
191
struct wpa_global {
 
192
        struct wpa_supplicant *ifaces;
 
193
        struct wpa_params params;
 
194
        struct ctrl_iface_global_priv *ctrl_iface;
 
195
        struct wpas_dbus_priv *dbus;
 
196
        void **drv_priv;
 
197
        size_t drv_count;
 
198
        struct os_time suspend_time;
 
199
};
 
200
 
 
201
 
 
202
struct wpa_client_mlme {
 
203
#ifdef CONFIG_CLIENT_MLME
 
204
        enum {
 
205
                IEEE80211_DISABLED, IEEE80211_AUTHENTICATE,
 
206
                IEEE80211_ASSOCIATE, IEEE80211_ASSOCIATED,
 
207
                IEEE80211_IBSS_SEARCH, IEEE80211_IBSS_JOINED
 
208
        } state;
 
209
        u8 prev_bssid[ETH_ALEN];
 
210
        u8 ssid[32];
 
211
        size_t ssid_len;
 
212
        u16 aid;
 
213
        u16 ap_capab, capab;
 
214
        u8 *extra_ie; /* to be added to the end of AssocReq */
 
215
        size_t extra_ie_len;
 
216
        u8 *extra_probe_ie; /* to be added to the end of ProbeReq */
 
217
        size_t extra_probe_ie_len;
 
218
        enum wpa_key_mgmt key_mgmt;
 
219
 
 
220
        /* The last AssocReq/Resp IEs */
 
221
        u8 *assocreq_ies, *assocresp_ies;
 
222
        size_t assocreq_ies_len, assocresp_ies_len;
 
223
 
 
224
        int auth_tries, assoc_tries;
 
225
 
 
226
        unsigned int ssid_set:1;
 
227
        unsigned int bssid_set:1;
 
228
        unsigned int prev_bssid_set:1;
 
229
        unsigned int authenticated:1;
 
230
        unsigned int associated:1;
 
231
        unsigned int probereq_poll:1;
 
232
        unsigned int use_protection:1;
 
233
        unsigned int create_ibss:1;
 
234
        unsigned int mixed_cell:1;
 
235
        unsigned int wmm_enabled:1;
 
236
 
 
237
        struct os_time last_probe;
 
238
 
 
239
        unsigned int auth_algs; /* bitfield of allowed auth algs
 
240
                                 * (WPA_AUTH_ALG_*) */
 
241
        int auth_alg; /* currently used IEEE 802.11 authentication algorithm */
 
242
        int auth_transaction;
 
243
 
 
244
        struct os_time ibss_join_req;
 
245
        u8 *probe_resp; /* ProbeResp template for IBSS */
 
246
        size_t probe_resp_len;
 
247
        u32 supp_rates_bits;
 
248
 
 
249
        int wmm_last_param_set;
 
250
 
 
251
        int sta_scanning;
 
252
        int scan_hw_mode_idx;
 
253
        int scan_channel_idx;
 
254
        enum { SCAN_SET_CHANNEL, SCAN_SEND_PROBE } scan_state;
 
255
        struct os_time last_scan_completed;
 
256
        int scan_oper_channel;
 
257
        int scan_oper_freq;
 
258
        int scan_oper_phymode;
 
259
        u8 scan_ssid[32];
 
260
        size_t scan_ssid_len;
 
261
        int scan_skip_11b;
 
262
        int *scan_freqs;
 
263
 
 
264
        struct ieee80211_sta_bss *sta_bss_list;
 
265
#define STA_HASH_SIZE 256
 
266
#define STA_HASH(sta) (sta[5])
 
267
        struct ieee80211_sta_bss *sta_bss_hash[STA_HASH_SIZE];
 
268
 
 
269
        int cts_protect_erp_frames;
 
270
 
 
271
        enum hostapd_hw_mode phymode; /* current mode */
 
272
        struct hostapd_hw_modes *modes;
 
273
        size_t num_modes;
 
274
        unsigned int hw_modes; /* bitfield of allowed hardware modes;
 
275
                                * (1 << HOSTAPD_MODE_*) */
 
276
        int num_curr_rates;
 
277
        int *curr_rates;
 
278
        int freq; /* The current frequency in MHz */
 
279
        int channel; /* The current IEEE 802.11 channel number */
 
280
 
 
281
#ifdef CONFIG_IEEE80211R
 
282
        u8 current_md[6];
 
283
        u8 *ft_ies;
 
284
        size_t ft_ies_len;
 
285
#endif /* CONFIG_IEEE80211R */
 
286
 
 
287
        void (*public_action_cb)(void *ctx, const u8 *buf, size_t len,
 
288
                                 int freq);
 
289
        void *public_action_cb_ctx;
 
290
 
 
291
#else /* CONFIG_CLIENT_MLME */
 
292
        int dummy; /* to keep MSVC happy */
 
293
#endif /* CONFIG_CLIENT_MLME */
 
294
};
 
295
 
 
296
/**
 
297
 * struct wpa_supplicant - Internal data for wpa_supplicant interface
 
298
 *
 
299
 * This structure contains the internal data for core wpa_supplicant code. This
 
300
 * should be only used directly from the core code. However, a pointer to this
 
301
 * data is used from other files as an arbitrary context pointer in calls to
 
302
 * core functions.
 
303
 */
 
304
struct wpa_supplicant {
 
305
        struct wpa_global *global;
 
306
        struct wpa_supplicant *next;
 
307
        struct l2_packet_data *l2;
 
308
        struct l2_packet_data *l2_br;
 
309
        unsigned char own_addr[ETH_ALEN];
 
310
        char ifname[100];
 
311
#ifdef CONFIG_CTRL_IFACE_DBUS
 
312
        char *dbus_path;
 
313
#endif /* CONFIG_CTRL_IFACE_DBUS */
 
314
#ifdef CONFIG_CTRL_IFACE_DBUS_NEW
 
315
        char *dbus_new_path;
 
316
#endif /* CONFIG_CTRL_IFACE_DBUS_NEW */
 
317
        char bridge_ifname[16];
 
318
 
 
319
        char *confname;
 
320
        struct wpa_config *conf;
 
321
        int countermeasures;
 
322
        os_time_t last_michael_mic_error;
 
323
        u8 bssid[ETH_ALEN];
 
324
        u8 pending_bssid[ETH_ALEN]; /* If wpa_state == WPA_ASSOCIATING, this
 
325
                                     * field contains the targer BSSID. */
 
326
        int reassociate; /* reassociation requested */
 
327
        int disconnected; /* all connections disabled; i.e., do no reassociate
 
328
                           * before this has been cleared */
 
329
        struct wpa_ssid *current_ssid;
 
330
        struct wpa_bss *current_bss;
 
331
        int ap_ies_from_associnfo;
 
332
        unsigned int assoc_freq;
 
333
 
 
334
        /* Selected configuration (based on Beacon/ProbeResp WPA IE) */
 
335
        int pairwise_cipher;
 
336
        int group_cipher;
 
337
        int key_mgmt;
 
338
        int mgmt_group_cipher;
 
339
 
 
340
        void *drv_priv; /* private data used by driver_ops */
 
341
        void *global_drv_priv;
 
342
 
 
343
        struct wpa_ssid *prev_scan_ssid; /* previously scanned SSID;
 
344
                                          * NULL = not yet initialized (start
 
345
                                          * with wildcard SSID)
 
346
                                          * WILDCARD_SSID_SCAN = wildcard
 
347
                                          * SSID was used in the previous scan
 
348
                                          */
 
349
#define WILDCARD_SSID_SCAN ((struct wpa_ssid *) 1)
 
350
 
 
351
        void (*scan_res_handler)(struct wpa_supplicant *wpa_s,
 
352
                                 struct wpa_scan_results *scan_res);
 
353
        struct dl_list bss; /* struct wpa_bss::list */
 
354
        struct dl_list bss_id; /* struct wpa_bss::list_id */
 
355
        size_t num_bss;
 
356
        unsigned int bss_update_idx;
 
357
        unsigned int bss_next_id;
 
358
 
 
359
        struct wpa_driver_ops *driver;
 
360
        int interface_removed; /* whether the network interface has been
 
361
                                * removed */
 
362
        struct wpa_sm *wpa;
 
363
        struct eapol_sm *eapol;
 
364
 
 
365
        struct ctrl_iface_priv *ctrl_iface;
 
366
 
 
367
        enum wpa_states wpa_state;
 
368
        int scanning;
 
369
        int new_connection;
 
370
        int reassociated_connection;
 
371
 
 
372
        int eapol_received; /* number of EAPOL packets received after the
 
373
                             * previous association event */
 
374
 
 
375
        struct scard_data *scard;
 
376
 
 
377
        unsigned char last_eapol_src[ETH_ALEN];
 
378
 
 
379
        int keys_cleared;
 
380
 
 
381
        struct wpa_blacklist *blacklist;
 
382
 
 
383
        int scan_req; /* manual scan request; this forces a scan even if there
 
384
                       * are no enabled networks in the configuration */
 
385
        int scan_runs; /* number of scan runs since WPS was started */
 
386
        int *next_scan_freqs;
 
387
 
 
388
        struct wpa_client_mlme mlme;
 
389
        unsigned int drv_flags;
 
390
        int max_scan_ssids;
 
391
        unsigned int max_remain_on_chan;
 
392
 
 
393
        int pending_mic_error_report;
 
394
        int pending_mic_error_pairwise;
 
395
        int mic_errors_seen; /* Michael MIC errors with the current PTK */
 
396
 
 
397
        struct wps_context *wps;
 
398
        int wps_success; /* WPS success event received */
 
399
        struct wps_er *wps_er;
 
400
        int blacklist_cleared;
 
401
 
 
402
        struct wpabuf *pending_eapol_rx;
 
403
        struct os_time pending_eapol_rx_time;
 
404
        u8 pending_eapol_rx_src[ETH_ALEN];
 
405
 
 
406
        struct ibss_rsn *ibss_rsn;
 
407
 
 
408
#ifdef CONFIG_SME
 
409
        struct {
 
410
                u8 ssid[32];
 
411
                size_t ssid_len;
 
412
                int freq;
 
413
                u8 assoc_req_ie[80];
 
414
                size_t assoc_req_ie_len;
 
415
                int mfp;
 
416
                int ft_used;
 
417
                u8 mobility_domain[2];
 
418
                u8 *ft_ies;
 
419
                size_t ft_ies_len;
 
420
                u8 prev_bssid[ETH_ALEN];
 
421
                int prev_bssid_set;
 
422
                int auth_alg;
 
423
        } sme;
 
424
#endif /* CONFIG_SME */
 
425
 
 
426
#ifdef CONFIG_AP
 
427
        struct hostapd_iface *ap_iface;
 
428
        void (*ap_configured_cb)(void *ctx, void *data);
 
429
        void *ap_configured_cb_ctx;
 
430
        void *ap_configured_cb_data;
 
431
#endif /* CONFIG_AP */
 
432
 
 
433
        struct wpa_ssid *bgscan_ssid;
 
434
        const struct bgscan_ops *bgscan;
 
435
        void *bgscan_priv;
 
436
 
 
437
        int connect_without_scan;
 
438
 
 
439
        int after_wps;
 
440
        unsigned int wps_freq;
 
441
};
 
442
 
 
443
 
 
444
/* wpa_supplicant.c */
 
445
int wpa_set_wep_keys(struct wpa_supplicant *wpa_s, struct wpa_ssid *ssid);
 
446
 
 
447
int wpa_supplicant_reload_configuration(struct wpa_supplicant *wpa_s);
 
448
 
 
449
const char * wpa_supplicant_state_txt(enum wpa_states state);
 
450
int wpa_supplicant_driver_init(struct wpa_supplicant *wpa_s);
 
451
int wpa_supplicant_set_suites(struct wpa_supplicant *wpa_s,
 
452
                              struct wpa_bss *bss, struct wpa_ssid *ssid,
 
453
                              u8 *wpa_ie, size_t *wpa_ie_len);
 
454
void wpa_supplicant_associate(struct wpa_supplicant *wpa_s,
 
455
                              struct wpa_bss *bss,
 
456
                              struct wpa_ssid *ssid);
 
457
void wpa_supplicant_set_non_wpa_policy(struct wpa_supplicant *wpa_s,
 
458
                                       struct wpa_ssid *ssid);
 
459
void wpa_supplicant_initiate_eapol(struct wpa_supplicant *wpa_s);
 
460
void wpa_clear_keys(struct wpa_supplicant *wpa_s, const u8 *addr);
 
461
void wpa_supplicant_req_auth_timeout(struct wpa_supplicant *wpa_s,
 
462
                                     int sec, int usec);
 
463
void wpa_supplicant_set_state(struct wpa_supplicant *wpa_s,
 
464
                              enum wpa_states state);
 
465
struct wpa_ssid * wpa_supplicant_get_ssid(struct wpa_supplicant *wpa_s);
 
466
void wpa_supplicant_cancel_auth_timeout(struct wpa_supplicant *wpa_s);
 
467
void wpa_supplicant_deauthenticate(struct wpa_supplicant *wpa_s,
 
468
                                   int reason_code);
 
469
void wpa_supplicant_disassociate(struct wpa_supplicant *wpa_s,
 
470
                                 int reason_code);
 
471
 
 
472
void wpa_supplicant_enable_network(struct wpa_supplicant *wpa_s,
 
473
                                   struct wpa_ssid *ssid);
 
474
void wpa_supplicant_disable_network(struct wpa_supplicant *wpa_s,
 
475
                                    struct wpa_ssid *ssid);
 
476
void wpa_supplicant_select_network(struct wpa_supplicant *wpa_s,
 
477
                                   struct wpa_ssid *ssid);
 
478
int wpa_supplicant_set_ap_scan(struct wpa_supplicant *wpa_s,
 
479
                               int ap_scan);
 
480
int wpa_supplicant_set_debug_params(struct wpa_global *global,
 
481
                                    int debug_level, int debug_timestamp,
 
482
                                    int debug_show_keys);
 
483
 
 
484
void wpa_show_license(void);
 
485
 
 
486
struct wpa_supplicant * wpa_supplicant_add_iface(struct wpa_global *global,
 
487
                                                 struct wpa_interface *iface);
 
488
int wpa_supplicant_remove_iface(struct wpa_global *global,
 
489
                                struct wpa_supplicant *wpa_s);
 
490
struct wpa_supplicant * wpa_supplicant_get_iface(struct wpa_global *global,
 
491
                                                 const char *ifname);
 
492
struct wpa_global * wpa_supplicant_init(struct wpa_params *params);
 
493
int wpa_supplicant_run(struct wpa_global *global);
 
494
void wpa_supplicant_deinit(struct wpa_global *global);
 
495
 
 
496
int wpa_supplicant_scard_init(struct wpa_supplicant *wpa_s,
 
497
                              struct wpa_ssid *ssid);
 
498
void wpa_supplicant_terminate_proc(struct wpa_global *global);
 
499
void wpa_supplicant_rx_eapol(void *ctx, const u8 *src_addr,
 
500
                             const u8 *buf, size_t len);
 
501
enum wpa_key_mgmt key_mgmt2driver(int key_mgmt);
 
502
enum wpa_cipher cipher_suite2driver(int cipher);
 
503
void wpas_connection_failed(struct wpa_supplicant *wpa_s, const u8 *bssid);
 
504
 
 
505
/* events.c */
 
506
void wpa_supplicant_mark_disassoc(struct wpa_supplicant *wpa_s);
 
507
void wpa_supplicant_connect(struct wpa_supplicant *wpa_s,
 
508
                            struct wpa_bss *selected,
 
509
                            struct wpa_ssid *ssid);
 
510
 
 
511
/* eap_register.c */
 
512
int eap_register_methods(void);
 
513
 
 
514
#endif /* WPA_SUPPLICANT_I_H */