18ab86c78654388ebafb23d0469c091118310ce58Dmitry Shmidt/* 28ab86c78654388ebafb23d0469c091118310ce58Dmitry Shmidt * Driver interaction with Linux nl80211/cfg80211 3cd56eb51af1113872eec7c733631e03953e529daDmitry Shmidt * Copyright (c) 2002-2014, Jouni Malinen <j@w1.fi> 48ab86c78654388ebafb23d0469c091118310ce58Dmitry Shmidt * Copyright (c) 2003-2004, Instant802 Networks, Inc. 58ab86c78654388ebafb23d0469c091118310ce58Dmitry Shmidt * Copyright (c) 2005-2006, Devicescape Software, Inc. 68ab86c78654388ebafb23d0469c091118310ce58Dmitry Shmidt * Copyright (c) 2007, Johannes Berg <johannes@sipsolutions.net> 78ab86c78654388ebafb23d0469c091118310ce58Dmitry Shmidt * Copyright (c) 2009-2010, Atheros Communications 88ab86c78654388ebafb23d0469c091118310ce58Dmitry Shmidt * 98ab86c78654388ebafb23d0469c091118310ce58Dmitry Shmidt * This software may be distributed under the terms of the BSD license. 108ab86c78654388ebafb23d0469c091118310ce58Dmitry Shmidt * See README for more details. 118ab86c78654388ebafb23d0469c091118310ce58Dmitry Shmidt */ 128ab86c78654388ebafb23d0469c091118310ce58Dmitry Shmidt 138ab86c78654388ebafb23d0469c091118310ce58Dmitry Shmidt#ifndef _DRIVER_NL80211_H_ 148ab86c78654388ebafb23d0469c091118310ce58Dmitry Shmidt#define _DRIVER_NL80211_H_ 158ab86c78654388ebafb23d0469c091118310ce58Dmitry Shmidt 168ab86c78654388ebafb23d0469c091118310ce58Dmitry Shmidt#include "includes.h" 178ab86c78654388ebafb23d0469c091118310ce58Dmitry Shmidt#include <sys/ioctl.h> 188ab86c78654388ebafb23d0469c091118310ce58Dmitry Shmidt#include <sys/types.h> 198ab86c78654388ebafb23d0469c091118310ce58Dmitry Shmidt#include <sys/stat.h> 208ab86c78654388ebafb23d0469c091118310ce58Dmitry Shmidt#include <fcntl.h> 218ab86c78654388ebafb23d0469c091118310ce58Dmitry Shmidt#include <net/if.h> 228ab86c78654388ebafb23d0469c091118310ce58Dmitry Shmidt#include <netlink/genl/genl.h> 238ab86c78654388ebafb23d0469c091118310ce58Dmitry Shmidt#include <netlink/genl/family.h> 248ab86c78654388ebafb23d0469c091118310ce58Dmitry Shmidt#include <netlink/genl/ctrl.h> 259dd37a671485efd40db73335ba2f0f5a87555e46Dmitry Shmidt#ifdef CONFIG_LIBNL3_ROUTE 269dd37a671485efd40db73335ba2f0f5a87555e46Dmitry Shmidt#include <netlink/route/neighbour.h> 279dd37a671485efd40db73335ba2f0f5a87555e46Dmitry Shmidt#endif /* CONFIG_LIBNL3_ROUTE */ 288ab86c78654388ebafb23d0469c091118310ce58Dmitry Shmidt#include <linux/rtnetlink.h> 298ab86c78654388ebafb23d0469c091118310ce58Dmitry Shmidt#include <netpacket/packet.h> 308ab86c78654388ebafb23d0469c091118310ce58Dmitry Shmidt#include <linux/filter.h> 318ab86c78654388ebafb23d0469c091118310ce58Dmitry Shmidt#include <linux/errqueue.h> 328ab86c78654388ebafb23d0469c091118310ce58Dmitry Shmidt#include "nl80211_copy.h" 338ab86c78654388ebafb23d0469c091118310ce58Dmitry Shmidt 348ab86c78654388ebafb23d0469c091118310ce58Dmitry Shmidt#include "common.h" 358ab86c78654388ebafb23d0469c091118310ce58Dmitry Shmidt#include "eloop.h" 368ab86c78654388ebafb23d0469c091118310ce58Dmitry Shmidt#include "utils/list.h" 37a1e9d83af5b9adca8be9e5dfced18385223f0241Dmitry Shmidt#include "common/qca-vendor.h" 381d9576d015768f1f04567efd562ed17570f4c256Dmitry Shmidt#include "common/qca-vendor-attr.h" 398ab86c78654388ebafb23d0469c091118310ce58Dmitry Shmidt#include "common/ieee802_11_defs.h" 408ab86c78654388ebafb23d0469c091118310ce58Dmitry Shmidt#include "common/ieee802_11_common.h" 418ab86c78654388ebafb23d0469c091118310ce58Dmitry Shmidt#include "l2_packet/l2_packet.h" 428ab86c78654388ebafb23d0469c091118310ce58Dmitry Shmidt#include "netlink.h" 438ab86c78654388ebafb23d0469c091118310ce58Dmitry Shmidt#include "linux_ioctl.h" 448ab86c78654388ebafb23d0469c091118310ce58Dmitry Shmidt#include "radiotap.h" 458ab86c78654388ebafb23d0469c091118310ce58Dmitry Shmidt#include "radiotap_iter.h" 468ab86c78654388ebafb23d0469c091118310ce58Dmitry Shmidt#include "rfkill.h" 478ab86c78654388ebafb23d0469c091118310ce58Dmitry Shmidt#include "driver.h" 488ab86c78654388ebafb23d0469c091118310ce58Dmitry Shmidt 498ab86c78654388ebafb23d0469c091118310ce58Dmitry Shmidt#ifdef CONFIG_LIBNL20 508ab86c78654388ebafb23d0469c091118310ce58Dmitry Shmidt/* libnl 2.0 compatibility code */ 518ab86c78654388ebafb23d0469c091118310ce58Dmitry Shmidt#define nl_handle nl_sock 528ab86c78654388ebafb23d0469c091118310ce58Dmitry Shmidt#define nl80211_handle_alloc nl_socket_alloc_cb 538ab86c78654388ebafb23d0469c091118310ce58Dmitry Shmidt#define nl80211_handle_destroy nl_socket_free 548ab86c78654388ebafb23d0469c091118310ce58Dmitry Shmidt#endif /* CONFIG_LIBNL20 */ 558ab86c78654388ebafb23d0469c091118310ce58Dmitry Shmidt 568ab86c78654388ebafb23d0469c091118310ce58Dmitry Shmidt#ifndef IFF_LOWER_UP 578ab86c78654388ebafb23d0469c091118310ce58Dmitry Shmidt#define IFF_LOWER_UP 0x10000 /* driver signals L1 up */ 588ab86c78654388ebafb23d0469c091118310ce58Dmitry Shmidt#endif 598ab86c78654388ebafb23d0469c091118310ce58Dmitry Shmidt#ifndef IFF_DORMANT 608ab86c78654388ebafb23d0469c091118310ce58Dmitry Shmidt#define IFF_DORMANT 0x20000 /* driver signals dormant */ 618ab86c78654388ebafb23d0469c091118310ce58Dmitry Shmidt#endif 628ab86c78654388ebafb23d0469c091118310ce58Dmitry Shmidt 638ab86c78654388ebafb23d0469c091118310ce58Dmitry Shmidt#ifndef IF_OPER_DORMANT 648ab86c78654388ebafb23d0469c091118310ce58Dmitry Shmidt#define IF_OPER_DORMANT 5 658ab86c78654388ebafb23d0469c091118310ce58Dmitry Shmidt#endif 668ab86c78654388ebafb23d0469c091118310ce58Dmitry Shmidt#ifndef IF_OPER_UP 678ab86c78654388ebafb23d0469c091118310ce58Dmitry Shmidt#define IF_OPER_UP 6 688ab86c78654388ebafb23d0469c091118310ce58Dmitry Shmidt#endif 698ab86c78654388ebafb23d0469c091118310ce58Dmitry Shmidt 708ab86c78654388ebafb23d0469c091118310ce58Dmitry Shmidtstruct nl80211_global { 718ab86c78654388ebafb23d0469c091118310ce58Dmitry Shmidt struct dl_list interfaces; 728ab86c78654388ebafb23d0469c091118310ce58Dmitry Shmidt int if_add_ifindex; 7341d40cfaa6e7907d0a75c17dce8787fa172b57e0Dmitry Shmidt u64 if_add_wdevid; 7441d40cfaa6e7907d0a75c17dce8787fa172b57e0Dmitry Shmidt int if_add_wdevid_set; 758ab86c78654388ebafb23d0469c091118310ce58Dmitry Shmidt struct netlink_data *netlink; 768ab86c78654388ebafb23d0469c091118310ce58Dmitry Shmidt struct nl_cb *nl_cb; 778ab86c78654388ebafb23d0469c091118310ce58Dmitry Shmidt struct nl_handle *nl; 788ab86c78654388ebafb23d0469c091118310ce58Dmitry Shmidt int nl80211_id; 798ab86c78654388ebafb23d0469c091118310ce58Dmitry Shmidt int ioctl_sock; /* socket for ioctl() use */ 808ab86c78654388ebafb23d0469c091118310ce58Dmitry Shmidt 818ab86c78654388ebafb23d0469c091118310ce58Dmitry Shmidt struct nl_handle *nl_event; 828ab86c78654388ebafb23d0469c091118310ce58Dmitry Shmidt}; 838ab86c78654388ebafb23d0469c091118310ce58Dmitry Shmidt 848ab86c78654388ebafb23d0469c091118310ce58Dmitry Shmidtstruct nl80211_wiphy_data { 858ab86c78654388ebafb23d0469c091118310ce58Dmitry Shmidt struct dl_list list; 868ab86c78654388ebafb23d0469c091118310ce58Dmitry Shmidt struct dl_list bsss; 878ab86c78654388ebafb23d0469c091118310ce58Dmitry Shmidt struct dl_list drvs; 888ab86c78654388ebafb23d0469c091118310ce58Dmitry Shmidt 898ab86c78654388ebafb23d0469c091118310ce58Dmitry Shmidt struct nl_handle *nl_beacons; 908ab86c78654388ebafb23d0469c091118310ce58Dmitry Shmidt struct nl_cb *nl_cb; 918ab86c78654388ebafb23d0469c091118310ce58Dmitry Shmidt 928ab86c78654388ebafb23d0469c091118310ce58Dmitry Shmidt int wiphy_idx; 938ab86c78654388ebafb23d0469c091118310ce58Dmitry Shmidt}; 948ab86c78654388ebafb23d0469c091118310ce58Dmitry Shmidt 958ab86c78654388ebafb23d0469c091118310ce58Dmitry Shmidtstruct i802_bss { 968ab86c78654388ebafb23d0469c091118310ce58Dmitry Shmidt struct wpa_driver_nl80211_data *drv; 978ab86c78654388ebafb23d0469c091118310ce58Dmitry Shmidt struct i802_bss *next; 988ab86c78654388ebafb23d0469c091118310ce58Dmitry Shmidt int ifindex; 9941d40cfaa6e7907d0a75c17dce8787fa172b57e0Dmitry Shmidt u64 wdev_id; 1008ab86c78654388ebafb23d0469c091118310ce58Dmitry Shmidt char ifname[IFNAMSIZ + 1]; 1018ab86c78654388ebafb23d0469c091118310ce58Dmitry Shmidt char brname[IFNAMSIZ]; 1028ab86c78654388ebafb23d0469c091118310ce58Dmitry Shmidt unsigned int beacon_set:1; 1038ab86c78654388ebafb23d0469c091118310ce58Dmitry Shmidt unsigned int added_if_into_bridge:1; 1048ab86c78654388ebafb23d0469c091118310ce58Dmitry Shmidt unsigned int added_bridge:1; 1058ab86c78654388ebafb23d0469c091118310ce58Dmitry Shmidt unsigned int in_deinit:1; 10641d40cfaa6e7907d0a75c17dce8787fa172b57e0Dmitry Shmidt unsigned int wdev_id_set:1; 107de90e1074d336e65d89d4f672f86cf4d63f8d675Dmitry Shmidt unsigned int added_if:1; 108d83e4abc7fb074e4f9bfe685128a19b7785ae635Dmitry Shmidt unsigned int static_ap:1; 1098ab86c78654388ebafb23d0469c091118310ce58Dmitry Shmidt 1108ab86c78654388ebafb23d0469c091118310ce58Dmitry Shmidt u8 addr[ETH_ALEN]; 1118ab86c78654388ebafb23d0469c091118310ce58Dmitry Shmidt 1128ab86c78654388ebafb23d0469c091118310ce58Dmitry Shmidt int freq; 1131d9576d015768f1f04567efd562ed17570f4c256Dmitry Shmidt int bandwidth; 11477aa9a6dfb449edeb2d77743cc718621d8d49ae9Dmitry Shmidt int if_dynamic; 1158ab86c78654388ebafb23d0469c091118310ce58Dmitry Shmidt 1168ab86c78654388ebafb23d0469c091118310ce58Dmitry Shmidt void *ctx; 1178ab86c78654388ebafb23d0469c091118310ce58Dmitry Shmidt struct nl_handle *nl_preq, *nl_mgmt; 1188ab86c78654388ebafb23d0469c091118310ce58Dmitry Shmidt struct nl_cb *nl_cb; 1198ab86c78654388ebafb23d0469c091118310ce58Dmitry Shmidt 1208ab86c78654388ebafb23d0469c091118310ce58Dmitry Shmidt struct nl80211_wiphy_data *wiphy_data; 1218ab86c78654388ebafb23d0469c091118310ce58Dmitry Shmidt struct dl_list wiphy_list; 1228ab86c78654388ebafb23d0469c091118310ce58Dmitry Shmidt}; 1238ab86c78654388ebafb23d0469c091118310ce58Dmitry Shmidt 1248ab86c78654388ebafb23d0469c091118310ce58Dmitry Shmidtstruct wpa_driver_nl80211_data { 1258ab86c78654388ebafb23d0469c091118310ce58Dmitry Shmidt struct nl80211_global *global; 1268ab86c78654388ebafb23d0469c091118310ce58Dmitry Shmidt struct dl_list list; 1278ab86c78654388ebafb23d0469c091118310ce58Dmitry Shmidt struct dl_list wiphy_list; 1288ab86c78654388ebafb23d0469c091118310ce58Dmitry Shmidt char phyname[32]; 1299dd37a671485efd40db73335ba2f0f5a87555e46Dmitry Shmidt u8 perm_addr[ETH_ALEN]; 1308ab86c78654388ebafb23d0469c091118310ce58Dmitry Shmidt void *ctx; 1318ab86c78654388ebafb23d0469c091118310ce58Dmitry Shmidt int ifindex; 1328ab86c78654388ebafb23d0469c091118310ce58Dmitry Shmidt int if_removed; 1338ab86c78654388ebafb23d0469c091118310ce58Dmitry Shmidt int if_disabled; 1348ab86c78654388ebafb23d0469c091118310ce58Dmitry Shmidt int ignore_if_down_event; 1358ab86c78654388ebafb23d0469c091118310ce58Dmitry Shmidt struct rfkill_data *rfkill; 1368ab86c78654388ebafb23d0469c091118310ce58Dmitry Shmidt struct wpa_driver_capa capa; 1378ab86c78654388ebafb23d0469c091118310ce58Dmitry Shmidt u8 *extended_capa, *extended_capa_mask; 1388ab86c78654388ebafb23d0469c091118310ce58Dmitry Shmidt unsigned int extended_capa_len; 1398ab86c78654388ebafb23d0469c091118310ce58Dmitry Shmidt int has_capability; 1408ab86c78654388ebafb23d0469c091118310ce58Dmitry Shmidt 1418ab86c78654388ebafb23d0469c091118310ce58Dmitry Shmidt int operstate; 1428ab86c78654388ebafb23d0469c091118310ce58Dmitry Shmidt 1438ab86c78654388ebafb23d0469c091118310ce58Dmitry Shmidt int scan_complete_events; 14477aa9a6dfb449edeb2d77743cc718621d8d49ae9Dmitry Shmidt enum scan_states { 14577aa9a6dfb449edeb2d77743cc718621d8d49ae9Dmitry Shmidt NO_SCAN, SCAN_REQUESTED, SCAN_STARTED, SCAN_COMPLETED, 14677aa9a6dfb449edeb2d77743cc718621d8d49ae9Dmitry Shmidt SCAN_ABORTED, SCHED_SCAN_STARTED, SCHED_SCAN_STOPPED, 14777aa9a6dfb449edeb2d77743cc718621d8d49ae9Dmitry Shmidt SCHED_SCAN_RESULTS 14877aa9a6dfb449edeb2d77743cc718621d8d49ae9Dmitry Shmidt } scan_state; 1498ab86c78654388ebafb23d0469c091118310ce58Dmitry Shmidt 1508ab86c78654388ebafb23d0469c091118310ce58Dmitry Shmidt struct nl_cb *nl_cb; 1518ab86c78654388ebafb23d0469c091118310ce58Dmitry Shmidt 1528ab86c78654388ebafb23d0469c091118310ce58Dmitry Shmidt u8 auth_bssid[ETH_ALEN]; 1538ab86c78654388ebafb23d0469c091118310ce58Dmitry Shmidt u8 auth_attempt_bssid[ETH_ALEN]; 1548ab86c78654388ebafb23d0469c091118310ce58Dmitry Shmidt u8 bssid[ETH_ALEN]; 1558ab86c78654388ebafb23d0469c091118310ce58Dmitry Shmidt u8 prev_bssid[ETH_ALEN]; 1568ab86c78654388ebafb23d0469c091118310ce58Dmitry Shmidt int associated; 1578ab86c78654388ebafb23d0469c091118310ce58Dmitry Shmidt u8 ssid[32]; 1588ab86c78654388ebafb23d0469c091118310ce58Dmitry Shmidt size_t ssid_len; 1598ab86c78654388ebafb23d0469c091118310ce58Dmitry Shmidt enum nl80211_iftype nlmode; 1608ab86c78654388ebafb23d0469c091118310ce58Dmitry Shmidt enum nl80211_iftype ap_scan_as_station; 1618ab86c78654388ebafb23d0469c091118310ce58Dmitry Shmidt unsigned int assoc_freq; 1628ab86c78654388ebafb23d0469c091118310ce58Dmitry Shmidt 1638ab86c78654388ebafb23d0469c091118310ce58Dmitry Shmidt int monitor_sock; 1648ab86c78654388ebafb23d0469c091118310ce58Dmitry Shmidt int monitor_ifidx; 1658ab86c78654388ebafb23d0469c091118310ce58Dmitry Shmidt int monitor_refcount; 1668ab86c78654388ebafb23d0469c091118310ce58Dmitry Shmidt 1678ab86c78654388ebafb23d0469c091118310ce58Dmitry Shmidt unsigned int disabled_11b_rates:1; 1688ab86c78654388ebafb23d0469c091118310ce58Dmitry Shmidt unsigned int pending_remain_on_chan:1; 1698ab86c78654388ebafb23d0469c091118310ce58Dmitry Shmidt unsigned int in_interface_list:1; 1708ab86c78654388ebafb23d0469c091118310ce58Dmitry Shmidt unsigned int device_ap_sme:1; 1718ab86c78654388ebafb23d0469c091118310ce58Dmitry Shmidt unsigned int poll_command_supported:1; 1728ab86c78654388ebafb23d0469c091118310ce58Dmitry Shmidt unsigned int data_tx_status:1; 1738ab86c78654388ebafb23d0469c091118310ce58Dmitry Shmidt unsigned int scan_for_auth:1; 1748ab86c78654388ebafb23d0469c091118310ce58Dmitry Shmidt unsigned int retry_auth:1; 1758ab86c78654388ebafb23d0469c091118310ce58Dmitry Shmidt unsigned int use_monitor:1; 1768ab86c78654388ebafb23d0469c091118310ce58Dmitry Shmidt unsigned int ignore_next_local_disconnect:1; 177cd56eb51af1113872eec7c733631e03953e529daDmitry Shmidt unsigned int ignore_next_local_deauth:1; 17841d40cfaa6e7907d0a75c17dce8787fa172b57e0Dmitry Shmidt unsigned int allow_p2p_device:1; 179de90e1074d336e65d89d4f672f86cf4d63f8d675Dmitry Shmidt unsigned int hostapd:1; 180de90e1074d336e65d89d4f672f86cf4d63f8d675Dmitry Shmidt unsigned int start_mode_ap:1; 181de90e1074d336e65d89d4f672f86cf4d63f8d675Dmitry Shmidt unsigned int start_iface_up:1; 182cd56eb51af1113872eec7c733631e03953e529daDmitry Shmidt unsigned int test_use_roc_tx:1; 183cd56eb51af1113872eec7c733631e03953e529daDmitry Shmidt unsigned int ignore_deauth_event:1; 1849dd37a671485efd40db73335ba2f0f5a87555e46Dmitry Shmidt unsigned int roaming_vendor_cmd_avail:1; 185cd56eb51af1113872eec7c733631e03953e529daDmitry Shmidt unsigned int dfs_vendor_cmd_avail:1; 186629b95b3e81e8176f3276a925a743885cd9e8ae0Dmitry Shmidt unsigned int have_low_prio_scan:1; 1879dd37a671485efd40db73335ba2f0f5a87555e46Dmitry Shmidt unsigned int force_connect_cmd:1; 1889dd37a671485efd40db73335ba2f0f5a87555e46Dmitry Shmidt unsigned int addr_changed:1; 1898ab86c78654388ebafb23d0469c091118310ce58Dmitry Shmidt 1908ab86c78654388ebafb23d0469c091118310ce58Dmitry Shmidt u64 remain_on_chan_cookie; 1918ab86c78654388ebafb23d0469c091118310ce58Dmitry Shmidt u64 send_action_cookie; 1928ab86c78654388ebafb23d0469c091118310ce58Dmitry Shmidt 1938ab86c78654388ebafb23d0469c091118310ce58Dmitry Shmidt unsigned int last_mgmt_freq; 1948ab86c78654388ebafb23d0469c091118310ce58Dmitry Shmidt 1958ab86c78654388ebafb23d0469c091118310ce58Dmitry Shmidt struct wpa_driver_scan_filter *filter_ssids; 1968ab86c78654388ebafb23d0469c091118310ce58Dmitry Shmidt size_t num_filter_ssids; 1978ab86c78654388ebafb23d0469c091118310ce58Dmitry Shmidt 198de90e1074d336e65d89d4f672f86cf4d63f8d675Dmitry Shmidt struct i802_bss *first_bss; 1998ab86c78654388ebafb23d0469c091118310ce58Dmitry Shmidt 2008ab86c78654388ebafb23d0469c091118310ce58Dmitry Shmidt int eapol_tx_sock; 2018ab86c78654388ebafb23d0469c091118310ce58Dmitry Shmidt 2028ab86c78654388ebafb23d0469c091118310ce58Dmitry Shmidt int eapol_sock; /* socket for EAPOL frames */ 2038ab86c78654388ebafb23d0469c091118310ce58Dmitry Shmidt 204677416147e3b2b398db45d2194cd8a2c396410ceDmitry Shmidt struct nl_handle *rtnl_sk; /* nl_sock for NETLINK_ROUTE */ 2059dd37a671485efd40db73335ba2f0f5a87555e46Dmitry Shmidt 2068ab86c78654388ebafb23d0469c091118310ce58Dmitry Shmidt int default_if_indices[16]; 2078ab86c78654388ebafb23d0469c091118310ce58Dmitry Shmidt int *if_indices; 2088ab86c78654388ebafb23d0469c091118310ce58Dmitry Shmidt int num_if_indices; 2098ab86c78654388ebafb23d0469c091118310ce58Dmitry Shmidt 2108ab86c78654388ebafb23d0469c091118310ce58Dmitry Shmidt /* From failed authentication command */ 2118ab86c78654388ebafb23d0469c091118310ce58Dmitry Shmidt int auth_freq; 2128ab86c78654388ebafb23d0469c091118310ce58Dmitry Shmidt u8 auth_bssid_[ETH_ALEN]; 2138ab86c78654388ebafb23d0469c091118310ce58Dmitry Shmidt u8 auth_ssid[32]; 2148ab86c78654388ebafb23d0469c091118310ce58Dmitry Shmidt size_t auth_ssid_len; 2158ab86c78654388ebafb23d0469c091118310ce58Dmitry Shmidt int auth_alg; 2168ab86c78654388ebafb23d0469c091118310ce58Dmitry Shmidt u8 *auth_ie; 2178ab86c78654388ebafb23d0469c091118310ce58Dmitry Shmidt size_t auth_ie_len; 2188ab86c78654388ebafb23d0469c091118310ce58Dmitry Shmidt u8 auth_wep_key[4][16]; 2198ab86c78654388ebafb23d0469c091118310ce58Dmitry Shmidt size_t auth_wep_key_len[4]; 2208ab86c78654388ebafb23d0469c091118310ce58Dmitry Shmidt int auth_wep_tx_keyidx; 2218ab86c78654388ebafb23d0469c091118310ce58Dmitry Shmidt int auth_local_state_change; 2228ab86c78654388ebafb23d0469c091118310ce58Dmitry Shmidt int auth_p2p; 2238ab86c78654388ebafb23d0469c091118310ce58Dmitry Shmidt}; 2248ab86c78654388ebafb23d0469c091118310ce58Dmitry Shmidt 2258ab86c78654388ebafb23d0469c091118310ce58Dmitry Shmidt#endif 226