| 1 | /* |
| 2 | * Header bits derived from MadWifi source: |
| 3 | * Copyright (c) 2001 Atsushi Onoe |
| 4 | * Copyright (c) 2002-2005 Sam Leffler, Errno Consulting |
| 5 | * All rights reserved. |
| 6 | * |
| 7 | * Distributed under the terms of the GPLv2 license. |
| 8 | * |
| 9 | * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR |
| 10 | * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES |
| 11 | * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. |
| 12 | * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, |
| 13 | * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT |
| 14 | * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, |
| 15 | * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY |
| 16 | * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |
| 17 | * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF |
| 18 | * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
| 19 | */ |
| 20 | |
| 21 | #ifndef _MADWIFI_H |
| 22 | #define _MADWIFI_H |
| 23 | |
| 24 | /* ieee80211.h */ |
| 25 | #define IEEE80211_ADDR_LEN 6 |
| 26 | #define IEEE80211_RATE_VAL 0x7f |
| 27 | #define IEEE80211_SEQ_SEQ_MASK 0xfff0 |
| 28 | #define IEEE80211_SEQ_SEQ_SHIFT 4 |
| 29 | |
| 30 | |
| 31 | /* ieee80211_crypto.h */ |
| 32 | #define IEEE80211_KEYBUF_SIZE 16 |
| 33 | #define IEEE80211_MICBUF_SIZE 16 |
| 34 | #define IEEE80211_TID_SIZE 17 |
| 35 | |
| 36 | #define IEEE80211_CIPHER_WEP 0 |
| 37 | #define IEEE80211_CIPHER_TKIP 1 |
| 38 | #define IEEE80211_CIPHER_AES_OCB 2 |
| 39 | #define IEEE80211_CIPHER_AES_CCM 3 |
| 40 | #define IEEE80211_CIPHER_CKIP 5 |
| 41 | #define IEEE80211_CIPHER_NONE 6 |
| 42 | #define IEEE80211_CIPHER_MAX (IEEE80211_CIPHER_NONE + 1) |
| 43 | |
| 44 | |
| 45 | /* ieee80211_ioctl.h */ |
| 46 | #define IEEE80211_KEY_DEFAULT 0x80 |
| 47 | #define IEEE80211_CHAN_MAX 255 |
| 48 | #define IEEE80211_CHAN_BYTES 32 |
| 49 | #define IEEE80211_RATE_MAXSIZE 15 |
| 50 | |
| 51 | #define IEEE80211_IOCTL_GETKEY (SIOCDEVPRIVATE+3) |
| 52 | #define IEEE80211_IOCTL_STA_STATS (SIOCDEVPRIVATE+5) |
| 53 | #define IEEE80211_IOCTL_STA_INFO (SIOCDEVPRIVATE+6) |
| 54 | |
| 55 | #define IEEE80211_IOCTL_GETPARAM (SIOCIWFIRSTPRIV+1) |
| 56 | #define IEEE80211_IOCTL_GETMODE (SIOCIWFIRSTPRIV+3) |
| 57 | #define IEEE80211_IOCTL_GETCHANLIST (SIOCIWFIRSTPRIV+7) |
| 58 | #define IEEE80211_IOCTL_GETCHANINFO (SIOCIWFIRSTPRIV+13) |
| 59 | |
| 60 | #define SIOC80211IFCREATE (SIOCDEVPRIVATE+7) |
| 61 | #define SIOC80211IFDESTROY (SIOCDEVPRIVATE+8) |
| 62 | |
| 63 | #define IEEE80211_CLONE_BSSID 0x0001 /* allocate unique mac/bssid */ |
| 64 | #define IEEE80211_NO_STABEACONS 0x0002 /* Do not setup the station beacon timers */ |
| 65 | |
| 66 | struct ieee80211_clone_params { |
| 67 | char icp_name[IFNAMSIZ]; /* device name */ |
| 68 | u_int16_t icp_opmode; /* operating mode */ |
| 69 | u_int16_t icp_flags; /* see below */ |
| 70 | }; |
| 71 | |
| 72 | enum ieee80211_opmode { |
| 73 | IEEE80211_M_STA = 1, /* infrastructure station */ |
| 74 | IEEE80211_M_IBSS = 0, /* IBSS (adhoc) station */ |
| 75 | IEEE80211_M_AHDEMO = 3, /* Old lucent compatible adhoc demo */ |
| 76 | IEEE80211_M_HOSTAP = 6, /* Software Access Point */ |
| 77 | IEEE80211_M_MONITOR = 8, /* Monitor mode */ |
| 78 | IEEE80211_M_WDS = 2, /* WDS link */ |
| 79 | }; |
| 80 | |
| 81 | enum { |
| 82 | IEEE80211_PARAM_AUTHMODE = 3, /* authentication mode */ |
| 83 | IEEE80211_PARAM_MCASTCIPHER = 5, /* multicast/default cipher */ |
| 84 | IEEE80211_PARAM_MCASTKEYLEN = 6, /* multicast key length */ |
| 85 | IEEE80211_PARAM_UCASTCIPHERS = 7, /* unicast cipher suites */ |
| 86 | IEEE80211_PARAM_WPA = 10, /* WPA mode (0,1,2) */ |
| 87 | }; |
| 88 | |
| 89 | /* |
| 90 | * Authentication mode. |
| 91 | */ |
| 92 | enum ieee80211_authmode { |
| 93 | IEEE80211_AUTH_NONE = 0, |
| 94 | IEEE80211_AUTH_OPEN = 1, /* open */ |
| 95 | IEEE80211_AUTH_SHARED = 2, /* shared-key */ |
| 96 | IEEE80211_AUTH_8021X = 3, /* 802.1x */ |
| 97 | IEEE80211_AUTH_AUTO = 4, /* auto-select/accept */ |
| 98 | /* NB: these are used only for ioctls */ |
| 99 | IEEE80211_AUTH_WPA = 5, /* WPA/RSN w/ 802.1x/PSK */ |
| 100 | }; |
| 101 | |
| 102 | struct ieee80211_channel { |
| 103 | u_int16_t ic_freq; /* setting in MHz */ |
| 104 | u_int16_t ic_flags; /* see below */ |
| 105 | u_int8_t ic_ieee; /* IEEE channel number */ |
| 106 | int8_t ic_maxregpower; /* maximum regulatory tx power in dBm */ |
| 107 | int8_t ic_maxpower; /* maximum tx power in dBm */ |
| 108 | int8_t ic_minpower; /* minimum tx power in dBm */ |
| 109 | u_int8_t ic_scanflags; |
| 110 | u_int8_t ic_idletime; /* phy idle time in % */ |
| 111 | }; |
| 112 | |
| 113 | struct ieee80211req_key { |
| 114 | u_int8_t ik_type; /* key/cipher type */ |
| 115 | u_int8_t ik_pad; |
| 116 | u_int16_t ik_keyix; /* key index */ |
| 117 | u_int8_t ik_keylen; /* key length in bytes */ |
| 118 | u_int8_t ik_flags; |
| 119 | u_int8_t ik_macaddr[IEEE80211_ADDR_LEN]; |
| 120 | u_int64_t ik_keyrsc; /* key receive sequence counter */ |
| 121 | u_int64_t ik_keytsc; /* key transmit sequence counter */ |
| 122 | u_int8_t ik_keydata[IEEE80211_KEYBUF_SIZE+IEEE80211_MICBUF_SIZE]; |
| 123 | }; |
| 124 | |
| 125 | struct ieee80211req_chanlist { |
| 126 | u_int8_t ic_channels[IEEE80211_CHAN_BYTES]; |
| 127 | }; |
| 128 | |
| 129 | struct ieee80211req_chaninfo { |
| 130 | u_int ic_nchans; |
| 131 | struct ieee80211_channel ic_chans[IEEE80211_CHAN_MAX]; |
| 132 | }; |
| 133 | |
| 134 | struct ieee80211req_sta_info { |
| 135 | u_int16_t isi_len; /* length (mult of 4) */ |
| 136 | u_int16_t isi_freq; /* MHz */ |
| 137 | u_int16_t isi_flags; /* channel flags */ |
| 138 | u_int16_t isi_state; /* state flags */ |
| 139 | u_int8_t isi_authmode; /* authentication algorithm */ |
| 140 | u_int8_t isi_rssi; |
| 141 | int8_t isi_noise; |
| 142 | u_int16_t isi_capinfo; /* capabilities */ |
| 143 | u_int8_t isi_athflags; /* Atheros capabilities */ |
| 144 | u_int8_t isi_erp; /* ERP element */ |
| 145 | u_int8_t isi_macaddr[IEEE80211_ADDR_LEN]; |
| 146 | u_int8_t isi_nrates; /* negotiated rates */ |
| 147 | u_int8_t isi_rates[IEEE80211_RATE_MAXSIZE]; |
| 148 | u_int8_t isi_txrate; /* index to isi_rates[] */ |
| 149 | u_int16_t isi_ie_len; /* IE length */ |
| 150 | u_int16_t isi_associd; /* assoc response */ |
| 151 | u_int16_t isi_txpower; /* current tx power */ |
| 152 | u_int16_t isi_vlan; /* vlan tag */ |
| 153 | u_int16_t isi_txseqs[17]; /* seq to be transmitted */ |
| 154 | u_int16_t isi_rxseqs[17]; /* seq previous for qos frames*/ |
| 155 | u_int16_t isi_inact; /* inactivity timer */ |
| 156 | u_int8_t isi_uapsd; /* UAPSD queues */ |
| 157 | u_int8_t isi_opmode; /* sta operating mode */ |
| 158 | }; |
| 159 | |
| 160 | #endif |
| 161 | |