driver_wext.h revision 61d9df3e62aaa0e87ad05452fcb95142159a17b6
15f016e2cb5d11daeb237544de1c5d59f20fe1a6eReid Spencer/*
25f016e2cb5d11daeb237544de1c5d59f20fe1a6eReid Spencer * WPA Supplicant - driver_wext exported functions
35f016e2cb5d11daeb237544de1c5d59f20fe1a6eReid Spencer * Copyright (c) 2003-2005, Jouni Malinen <j@w1.fi>
45f016e2cb5d11daeb237544de1c5d59f20fe1a6eReid Spencer *
50bc735ffcfb223c0186419547abaa5c84482663eChris Lattner * This software may be distributed under the terms of the BSD license.
60bc735ffcfb223c0186419547abaa5c84482663eChris Lattner * See README for more details.
75f016e2cb5d11daeb237544de1c5d59f20fe1a6eReid Spencer */
85f016e2cb5d11daeb237544de1c5d59f20fe1a6eReid Spencer
92f7f5b1f5ff023cb8c4008ae53a12b09e3ea2622James Dennett#ifndef DRIVER_WEXT_H
102f7f5b1f5ff023cb8c4008ae53a12b09e3ea2622James Dennett#define DRIVER_WEXT_H
112f7f5b1f5ff023cb8c4008ae53a12b09e3ea2622James Dennett
122f7f5b1f5ff023cb8c4008ae53a12b09e3ea2622James Dennett#include <net/if.h>
135f016e2cb5d11daeb237544de1c5d59f20fe1a6eReid Spencer
145f016e2cb5d11daeb237544de1c5d59f20fe1a6eReid Spencerstruct wpa_driver_wext_data {
155f016e2cb5d11daeb237544de1c5d59f20fe1a6eReid Spencer	void *ctx;
165f016e2cb5d11daeb237544de1c5d59f20fe1a6eReid Spencer	struct netlink_data *netlink;
175f016e2cb5d11daeb237544de1c5d59f20fe1a6eReid Spencer	int ioctl_sock;
1833e4e70c8c0a17e0ccb7465d96556b077a68ecb1Argyrios Kyrtzidis	int mlme_sock;
19dc7b641574a733624489bd87fc7061771edf2113Douglas Gregor	char ifname[IFNAMSIZ + 1];
202eefd8657c233bc7c9330acfe475fc270bbe7cabTed Kremenek	char phyname[32];
21f62d43d2afe1960755a1b5813cae1e5983bcac1bDouglas Gregor	int ifindex;
220827408865e32789e0ec4b8113a302ccdc531423Argyrios Kyrtzidis	int ifindex2;
2328019772db70d4547be05a042eb950bc910f134fDouglas Gregor	int if_removed;
240827408865e32789e0ec4b8113a302ccdc531423Argyrios Kyrtzidis	int if_disabled;
2530a2e16f6c27f888dd11eba6bbbae1e980078fcbChandler Carruth	struct rfkill_data *rfkill;
26f4c839657742b823cea1a95b18422f1ba74d3dddChris Lattner	u8 *assoc_req_ies;
275f016e2cb5d11daeb237544de1c5d59f20fe1a6eReid Spencer	size_t assoc_req_ies_len;
2878ad0b98848c17a0a11847fa1d456e2dfec8aa2fDavid Blaikie	u8 *assoc_resp_ies;
2933e4e70c8c0a17e0ccb7465d96556b077a68ecb1Argyrios Kyrtzidis	size_t assoc_resp_ies_len;
3002c23ebf41ae2f70da0ba7337e05c51fbfe35f7fDouglas Gregor	struct wpa_driver_capa capa;
31d42ffbd22fc7eb61321f6a88173ee424991f01c6Ted Kremenek	int has_capability;
3233e4e70c8c0a17e0ccb7465d96556b077a68ecb1Argyrios Kyrtzidis	int we_version_compiled;
3340469651a3f8379dc0f32df69e9bade06a2aad36Chris Lattner
347d90199f109290e9d587479a481a2850d390b552Daniel Dunbar	/* for set_auth_alg fallback */
359c4eb1f3438370355f51dc8c62f2ca4803e3338dArgyrios Kyrtzidis	int use_crypt;
36e59abb56ce0e1c206fb80bd945a0c358b0abe1efArgyrios Kyrtzidis	int auth_alg_fallback;
37651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines
38651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines	int operstate;
39651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines
401eb4433ac451dc16f4133a88af2d002ac26c58efMike Stump	char mlmedev[IFNAMSIZ + 1];
414b2d3f7bcc4df31157df443af1b80bcaa9b58bbaDouglas Gregor
424b2d3f7bcc4df31157df443af1b80bcaa9b58bbaDouglas Gregor	int scan_complete_events;
434b2d3f7bcc4df31157df443af1b80bcaa9b58bbaDouglas Gregor
444b2d3f7bcc4df31157df443af1b80bcaa9b58bbaDouglas Gregor	int cfg80211; /* whether driver is using cfg80211 */
454b2d3f7bcc4df31157df443af1b80bcaa9b58bbaDouglas Gregor
464b2d3f7bcc4df31157df443af1b80bcaa9b58bbaDouglas Gregor	u8 max_level;
474b2d3f7bcc4df31157df443af1b80bcaa9b58bbaDouglas Gregor
48b2fb6de9070fea9abc56c8e8d5469066e964cefeDouglas Gregor#ifdef ANDROID
494b2d3f7bcc4df31157df443af1b80bcaa9b58bbaDouglas Gregor	int errors;
50849b243d4065f56742a4677d6dc8277609a151f8Douglas Gregor	int driver_is_started;
514b2d3f7bcc4df31157df443af1b80bcaa9b58bbaDouglas Gregor	int bgscan_enabled;
52783c56f47745f719590b17afd7ed937bf2407b53Douglas Gregor#endif /* ANDROID */
53783c56f47745f719590b17afd7ed937bf2407b53Douglas Gregor};
540a76aae8c03cb7dd7bdbe683485560afaf695959Chris Lattner
554b2d3f7bcc4df31157df443af1b80bcaa9b58bbaDouglas Gregorint wpa_driver_wext_get_bssid(void *priv, u8 *bssid);
5630660a898545416f0fea2d717f16f75640001e38Ted Kremenekint wpa_driver_wext_set_bssid(void *priv, const u8 *bssid);
5730660a898545416f0fea2d717f16f75640001e38Ted Kremenekint wpa_driver_wext_get_ssid(void *priv, u8 *ssid);
5830660a898545416f0fea2d717f16f75640001e38Ted Kremenekint wpa_driver_wext_set_ssid(void *priv, const u8 *ssid, size_t ssid_len);
5930660a898545416f0fea2d717f16f75640001e38Ted Kremenekint wpa_driver_wext_set_freq(void *priv, int freq);
604b2d3f7bcc4df31157df443af1b80bcaa9b58bbaDouglas Gregorint wpa_driver_wext_set_mode(void *priv, int mode);
614b2d3f7bcc4df31157df443af1b80bcaa9b58bbaDouglas Gregorint wpa_driver_wext_set_key(const char *ifname, void *priv, enum wpa_alg alg,
624b2d3f7bcc4df31157df443af1b80bcaa9b58bbaDouglas Gregor			    const u8 *addr, int key_idx,
634b2d3f7bcc4df31157df443af1b80bcaa9b58bbaDouglas Gregor			    int set_tx, const u8 *seq, size_t seq_len,
6430660a898545416f0fea2d717f16f75640001e38Ted Kremenek			    const u8 *key, size_t key_len);
6530660a898545416f0fea2d717f16f75640001e38Ted Kremenekint wpa_driver_wext_scan(void *priv, struct wpa_driver_scan_params *params);
664b2d3f7bcc4df31157df443af1b80bcaa9b58bbaDouglas Gregorstruct wpa_scan_results * wpa_driver_wext_get_scan_results(void *priv);
674b2d3f7bcc4df31157df443af1b80bcaa9b58bbaDouglas Gregor
6830660a898545416f0fea2d717f16f75640001e38Ted Kremenekvoid wpa_driver_wext_scan_timeout(void *eloop_ctx, void *timeout_ctx);
694b2d3f7bcc4df31157df443af1b80bcaa9b58bbaDouglas Gregor
702f019aadc96f8fa3185c684c7150bd596d045064Anders Carlssonint wpa_driver_wext_alternative_ifindex(struct wpa_driver_wext_data *drv,
71783c56f47745f719590b17afd7ed937bf2407b53Douglas Gregor					const char *ifname);
722f019aadc96f8fa3185c684c7150bd596d045064Anders Carlsson
732f019aadc96f8fa3185c684c7150bd596d045064Anders Carlssonvoid * wpa_driver_wext_init(void *ctx, const char *ifname);
744b2d3f7bcc4df31157df443af1b80bcaa9b58bbaDouglas Gregorvoid wpa_driver_wext_deinit(void *priv);
754b2d3f7bcc4df31157df443af1b80bcaa9b58bbaDouglas Gregor
76849b243d4065f56742a4677d6dc8277609a151f8Douglas Gregorint wpa_driver_wext_set_operstate(void *priv, int state);
7730660a898545416f0fea2d717f16f75640001e38Ted Kremenekint wpa_driver_wext_get_version(struct wpa_driver_wext_data *drv);
7830660a898545416f0fea2d717f16f75640001e38Ted Kremenek
79849b243d4065f56742a4677d6dc8277609a151f8Douglas Gregorint wpa_driver_wext_associate(void *priv,
80783c56f47745f719590b17afd7ed937bf2407b53Douglas Gregor			      struct wpa_driver_associate_params *params);
814a2ef80d896c1bac38ce113ec19a8d509a619288Nico Weberint wpa_driver_wext_get_capa(void *priv, struct wpa_driver_capa *capa);
82b2fb6de9070fea9abc56c8e8d5469066e964cefeDouglas Gregorint wpa_driver_wext_set_auth_param(struct wpa_driver_wext_data *drv,
8330660a898545416f0fea2d717f16f75640001e38Ted Kremenek				   int idx, u32 value);
8430660a898545416f0fea2d717f16f75640001e38Ted Kremenekint wpa_driver_wext_cipher2wext(int cipher);
8530660a898545416f0fea2d717f16f75640001e38Ted Kremenekint wpa_driver_wext_keymgmt2wext(int keymgmt);
8630660a898545416f0fea2d717f16f75640001e38Ted Kremenek
8730660a898545416f0fea2d717f16f75640001e38Ted Kremenek#endif /* DRIVER_WEXT_H */
88af50aab0c317462129d73ae8000c6394c718598dJames Dennett