summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--sys/net/if_ieee80211.h640
1 files changed, 0 insertions, 640 deletions
diff --git a/sys/net/if_ieee80211.h b/sys/net/if_ieee80211.h
deleted file mode 100644
index 309be6951a4..00000000000
--- a/sys/net/if_ieee80211.h
+++ /dev/null
@@ -1,640 +0,0 @@
-/* $OpenBSD: if_ieee80211.h,v 1.10 2004/01/07 00:13:22 fgsch Exp $ */
-/* $NetBSD: if_ieee80211.h,v 1.36 2003/07/06 20:54:24 dyoung Exp $ */
-
-/*-
- * Copyright (c) 2000, 2001 The NetBSD Foundation, Inc.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- * must display the following acknowledgement:
- * This product includes software developed by the NetBSD
- * Foundation, Inc. and its contributors.
- * 4. Neither the name of The NetBSD Foundation nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
- * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
- * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
- */
-
-#ifndef _NET_IF_IEEE80211_H_
-#define _NET_IF_IEEE80211_H_
-
-#define IEEE80211_ADDR_LEN ETHER_ADDR_LEN
-
-/* IEEE 802.11 PLCP header */
-struct ieee80211_plcp_hdr {
- u_int16_t i_sfd; /* IEEE80211_PLCP_SFD */
- u_int8_t i_signal; /* MPDU data rate in 100Kb/s */
- u_int8_t i_service; /* IEEE80211_PLCP_SERVICE */
- u_int16_t i_length; /* MPDU duration in microseconds */
- u_int16_t i_crc; /* CRC16 of i_signal, i_service,
- * i_length
- */
-} __packed;
-
-#define IEEE80211_PLCP_SFD 0xF3A0
-#define IEEE80211_PLCP_SERVICE 0x00
-
-/*
- * generic definitions for IEEE 802.11 frames
- */
-struct ieee80211_frame {
- u_int8_t i_fc[2];
- u_int8_t i_dur[2];
- u_int8_t i_addr1[IEEE80211_ADDR_LEN];
- u_int8_t i_addr2[IEEE80211_ADDR_LEN];
- u_int8_t i_addr3[IEEE80211_ADDR_LEN];
- u_int8_t i_seq[2];
- /* possibly followed by addr4[IEEE80211_ADDR_LEN]; */
- /* see below */
-};
-
-struct ieee80211_frame_addr4 {
- u_int8_t i_fc[2];
- u_int8_t i_dur[2];
- u_int8_t i_addr1[IEEE80211_ADDR_LEN];
- u_int8_t i_addr2[IEEE80211_ADDR_LEN];
- u_int8_t i_addr3[IEEE80211_ADDR_LEN];
- u_int8_t i_seq[2];
- u_int8_t i_addr4[IEEE80211_ADDR_LEN];
-};
-
-#define IEEE80211_FC0_VERSION_MASK 0x03
-#define IEEE80211_FC0_VERSION_SHIFT 0
-#define IEEE80211_FC0_VERSION_0 0x00
-#define IEEE80211_FC0_TYPE_MASK 0x0c
-#define IEEE80211_FC0_TYPE_SHIFT 2
-#define IEEE80211_FC0_TYPE_MGT 0x00
-#define IEEE80211_FC0_TYPE_CTL 0x04
-#define IEEE80211_FC0_TYPE_DATA 0x08
-
-#define IEEE80211_FC0_SUBTYPE_MASK 0xf0
-#define IEEE80211_FC0_SUBTYPE_SHIFT 4
-/* for TYPE_MGT */
-#define IEEE80211_FC0_SUBTYPE_ASSOC_REQ 0x00
-#define IEEE80211_FC0_SUBTYPE_ASSOC_RESP 0x10
-#define IEEE80211_FC0_SUBTYPE_REASSOC_REQ 0x20
-#define IEEE80211_FC0_SUBTYPE_REASSOC_RESP 0x30
-#define IEEE80211_FC0_SUBTYPE_PROBE_REQ 0x40
-#define IEEE80211_FC0_SUBTYPE_PROBE_RESP 0x50
-#define IEEE80211_FC0_SUBTYPE_BEACON 0x80
-#define IEEE80211_FC0_SUBTYPE_ATIM 0x90
-#define IEEE80211_FC0_SUBTYPE_DISASSOC 0xa0
-#define IEEE80211_FC0_SUBTYPE_AUTH 0xb0
-#define IEEE80211_FC0_SUBTYPE_DEAUTH 0xc0
-/* for TYPE_CTL */
-#define IEEE80211_FC0_SUBTYPE_PS_POLL 0xa0
-#define IEEE80211_FC0_SUBTYPE_RTS 0xb0
-#define IEEE80211_FC0_SUBTYPE_CTS 0xc0
-#define IEEE80211_FC0_SUBTYPE_ACK 0xd0
-#define IEEE80211_FC0_SUBTYPE_CF_END 0xe0
-#define IEEE80211_FC0_SUBTYPE_CF_END_ACK 0xf0
-/* for TYPE_DATA (bit combination) */
-#define IEEE80211_FC0_SUBTYPE_DATA 0x00
-#define IEEE80211_FC0_SUBTYPE_CF_ACK 0x10
-#define IEEE80211_FC0_SUBTYPE_CF_POLL 0x20
-#define IEEE80211_FC0_SUBTYPE_CF_ACPL 0x30
-#define IEEE80211_FC0_SUBTYPE_NODATA 0x40
-#define IEEE80211_FC0_SUBTYPE_CFACK 0x50
-#define IEEE80211_FC0_SUBTYPE_CFPOLL 0x60
-#define IEEE80211_FC0_SUBTYPE_CF_ACK_CF_POLL 0x70
-
-#define IEEE80211_FC1_DIR_MASK 0x03
-#define IEEE80211_FC1_DIR_NODS 0x00 /* STA->STA */
-#define IEEE80211_FC1_DIR_TODS 0x01 /* STA->AP */
-#define IEEE80211_FC1_DIR_FROMDS 0x02 /* AP ->STA */
-#define IEEE80211_FC1_DIR_DSTODS 0x03 /* AP ->AP */
-
-#define IEEE80211_FC1_MORE_FRAG 0x04
-#define IEEE80211_FC1_RETRY 0x08
-#define IEEE80211_FC1_PWR_MGT 0x10
-#define IEEE80211_FC1_MORE_DATA 0x20
-#define IEEE80211_FC1_WEP 0x40
-#define IEEE80211_FC1_ORDER 0x80
-
-#define IEEE80211_SEQ_FRAG_MASK 0x000f
-#define IEEE80211_SEQ_FRAG_SHIFT 0
-#define IEEE80211_SEQ_SEQ_MASK 0xfff0
-#define IEEE80211_SEQ_SEQ_SHIFT 4
-
-#define IEEE80211_NWID_LEN 32
-
-/*
- * BEACON management packets
- *
- * octet timestamp[8]
- * octet beacon interval[2]
- * octet capability information[2]
- * information element
- * octet elemid
- * octet length
- * octet information[length]
- */
-
-typedef uint8_t *ieee80211_mgt_beacon_t;
-
-#define IEEE80211_BEACON_INTERVAL(beacon) \
- ((beacon)[8] | ((beacon)[9] << 8))
-#define IEEE80211_BEACON_CAPABILITY(beacon) \
- ((beacon)[10] | ((beacon)[11] << 8))
-
-#define IEEE80211_CAPINFO_ESS 0x0001
-#define IEEE80211_CAPINFO_IBSS 0x0002
-#define IEEE80211_CAPINFO_CF_POLLABLE 0x0004
-#define IEEE80211_CAPINFO_CF_POLLREQ 0x0008
-#define IEEE80211_CAPINFO_PRIVACY 0x0010
-#define IEEE80211_CAPINFO_SHORT_PREAMBLE 0x0020
-#define IEEE80211_CAPINFO_PBCC 0x0040
-#define IEEE80211_CAPINFO_CHNL_AGILITY 0x0080
-#define IEEE80211_CAPINFO_BITS "\20\01ESS\02IBSS\03POLLABLE\04POLLREQ\05PRIVACY\06SHORT_PREAMBLE\07PBCC\08CHNL_AGILITY"
-
-#define IEEE80211_RATE_BASIC 0x80
-#define IEEE80211_RATE_VAL 0x7f
-
-/* One Time Unit (TU) is 1Kus = 1024 microseconds. */
-#define IEEE80211_DUR_TU 1024
-
-/* IEEE 802.11b durations for DSSS PHY in microseconds */
-#define IEEE80211_DUR_DS_LONG_PREAMBLE 144
-#define IEEE80211_DUR_DS_SHORT_PREAMBLE 72
-#define IEEE80211_DUR_DS_FAST_PLCPHDR 24
-#define IEEE80211_DUR_DS_SLOW_PLCPHDR 48
-#define IEEE80211_DUR_DS_SLOW_ACK 112
-#define IEEE80211_DUR_DS_FAST_ACK 56
-#define IEEE80211_DUR_DS_SLOW_CTS 112
-#define IEEE80211_DUR_DS_FAST_CTS 56
-#define IEEE80211_DUR_DS_SLOT 20
-#define IEEE80211_DUR_DS_SIFS 10
-#define IEEE80211_DUR_DS_PIFS (IEEE80211_DUR_DS_SIFS + IEEE80211_DUR_DS_SLOT)
-#define IEEE80211_DUR_DS_DIFS (IEEE80211_DUR_DS_SIFS + \
- 2 * IEEE80211_DUR_DS_SLOT)
-#define IEEE80211_DUR_DS_EIFS (IEEE80211_DUR_DS_SIFS + \
- IEEE80211_DUR_DS_SLOW_ACK + \
- IEEE80211_DUR_DS_LONG_PREAMBLE + \
- IEEE80211_DUR_DS_SLOW_PLCPHDR + \
- IEEE80211_DUR_DIFS)
-
-/*
- * Management information elements
- */
-
-struct ieee80211_information {
- char ssid[IEEE80211_NWID_LEN+1];
- struct rates {
- u_int8_t *p;
- } rates;
- struct fh {
- u_int16_t dwell;
- u_int8_t set;
- u_int8_t pattern;
- u_int8_t index;
- } fh;
- struct ds {
- u_int8_t channel;
- } ds;
- struct cf {
- u_int8_t count;
- u_int8_t period;
- u_int8_t maxdur[2];
- u_int8_t dur[2];
- } cf;
- struct tim {
- u_int8_t count;
- u_int8_t period;
- u_int8_t bitctl;
- /* u_int8_t pvt[251]; The driver needs to use this. */
- } tim;
- struct ibss {
- u_int16_t atim;
- } ibss;
- struct challenge {
- u_int8_t *p;
- u_int8_t len;
- } challenge;
-};
-
-#define IEEE80211_ELEMID_SSID 0
-#define IEEE80211_ELEMID_RATES 1
-#define IEEE80211_ELEMID_FHPARMS 2
-#define IEEE80211_ELEMID_DSPARMS 3
-#define IEEE80211_ELEMID_CFPARMS 4
-#define IEEE80211_ELEMID_TIM 5
-#define IEEE80211_ELEMID_IBSSPARMS 6
-#define IEEE80211_ELEMID_CHALLENGE 16
-
-/*
- * AUTH management packets
- *
- * octet algo[2]
- * octet seq[2]
- * octet status[2]
- * octet chal.id
- * octet chal.length
- * octet chal.text[253]
- */
-
-typedef u_int8_t *ieee80211_mgt_auth_t;
-
-#define IEEE80211_AUTH_ALGORITHM(auth) \
- ((auth)[0] | ((auth)[1] << 8))
-#define IEEE80211_AUTH_TRANSACTION(auth) \
- ((auth)[2] | ((auth)[3] << 8))
-#define IEEE80211_AUTH_STATUS(auth) \
- ((auth)[4] | ((auth)[5] << 8))
-
-#define IEEE80211_AUTH_ALG_OPEN 0x0000
-#define IEEE80211_AUTH_ALG_SHARED 0x0001
-
-#define IEEE80211_AUTH_OPEN_REQUEST 1
-#define IEEE80211_AUTH_OPEN_RESPONSE 2
-
-#define IEEE80211_AUTH_SHARED_REQUEST 1
-#define IEEE80211_AUTH_SHARED_CHALLENGE 2
-#define IEEE80211_AUTH_SHARED_RESPONSE 3
-#define IEEE80211_AUTH_SHARED_PASS 4
-
-/*
- * Reason codes
- *
- * Unlisted codes are reserved
- */
-
-#define IEEE80211_REASON_UNSPECIFIED 1
-#define IEEE80211_REASON_AUTH_EXPIRE 2
-#define IEEE80211_REASON_AUTH_LEAVE 3
-#define IEEE80211_REASON_ASSOC_EXPIRE 4
-#define IEEE80211_REASON_ASSOC_TOOMANY 5
-#define IEEE80211_REASON_NOT_AUTHED 6
-#define IEEE80211_REASON_NOT_ASSOCED 7
-#define IEEE80211_REASON_ASSOC_LEAVE 8
-#define IEEE80211_REASON_ASSOC_NOT_AUTHED 9
-
-#define IEEE80211_STATUS_SUCCESS 0
-#define IEEE80211_STATUS_UNSPECIFIED 1
-#define IEEE80211_STATUS_CAPINFO 10
-#define IEEE80211_STATUS_NOT_ASSOCED 11
-#define IEEE80211_STATUS_OTHER 12
-#define IEEE80211_STATUS_ALG 13
-#define IEEE80211_STATUS_SEQUENCE 14
-#define IEEE80211_STATUS_CHALLENGE 15
-#define IEEE80211_STATUS_TIMEOUT 16
-#define IEEE80211_STATUS_TOOMANY 17
-#define IEEE80211_STATUS_BASIC_RATE 18
-#define IEEE80211_STATUS_SP_REQUIRED 19
-#define IEEE80211_STATUS_PBCC_REQUIRED 20
-#define IEEE80211_STATUS_CA_REQUIRED 21
-#define IEEE80211_STATUS_TOO_MANY_STATIONS 22
-#define IEEE80211_STATUS_RATES 23
-
-#define IEEE80211_WEP_KEYLEN 5 /* 40bit */
-#define IEEE80211_WEP_IVLEN 3 /* 24bit */
-#define IEEE80211_WEP_KIDLEN 1 /* 1 octet */
-#define IEEE80211_WEP_CRCLEN 4 /* CRC-32 */
-#define IEEE80211_WEP_NKID 4 /* number of key ids */
-
-#define IEEE80211_CRC_LEN 4
-
-#define IEEE80211_MTU 1500
-#define IEEE80211_MAX_LEN (2300 + IEEE80211_CRC_LEN + \
- (IEEE80211_WEP_IVLEN + IEEE80211_WEP_KIDLEN + IEEE80211_WEP_CRCLEN))
-
-#define IEEE80211_MAX_AID 2007
-
-#define IEEE80211_AID_SET(b, w) \
- ((w)[((b) & ~0xc000) / 32] |= (1 << (((b) & ~0xc000) % 32)))
-#define IEEE80211_AID_CLR(b, w) \
- ((w)[((b) & ~0xc000) / 32] &= ~(1 << (((b) & ~0xc000) % 32)))
-#define IEEE80211_AID_ISSET(b, w) \
- ((w)[((b) & ~0xc000) / 32] & (1 << (((b) & ~0xc000) % 32)))
-
-
-/*
- * ioctls
- */
-
-/* nwid is pointed at by ifr.ifr_data */
-struct ieee80211_nwid {
- u_int8_t i_len;
- u_int8_t i_nwid[IEEE80211_NWID_LEN];
-};
-
-#define SIOCS80211NWID _IOWR('i', 230, struct ifreq)
-#define SIOCG80211NWID _IOWR('i', 231, struct ifreq)
-
-/* the first member must be matched with struct ifreq */
-struct ieee80211_nwkey {
- char i_name[IFNAMSIZ]; /* if_name, e.g. "wi0" */
- int i_wepon; /* wep enabled flag */
- int i_defkid; /* default encrypt key id */
- struct {
- int i_keylen;
- u_int8_t *i_keydat;
- } i_key[IEEE80211_WEP_NKID];
-};
-#define SIOCS80211NWKEY _IOW('i', 232, struct ieee80211_nwkey)
-#define SIOCG80211NWKEY _IOWR('i', 233, struct ieee80211_nwkey)
-/* i_wepon */
-#define IEEE80211_NWKEY_OPEN 0 /* No privacy */
-#define IEEE80211_NWKEY_WEP 1 /* WEP enabled */
-#define IEEE80211_NWKEY_EAP 2 /* EAP enabled */
-#define IEEE80211_NWKEY_PERSIST 0x100 /* designate persist keyset */
-
-/* power management parameters */
-struct ieee80211_power {
- char i_name[IFNAMSIZ]; /* if_name, e.g. "wi0" */
- int i_enabled; /* 1 == on, 0 == off */
- int i_maxsleep; /* max sleep in ms */
-};
-#define SIOCS80211POWER _IOW('i', 234, struct ieee80211_power)
-#define SIOCG80211POWER _IOWR('i', 235, struct ieee80211_power)
-
-struct ieee80211_auth {
- char i_name[IFNAMSIZ]; /* if_name, e.g. "wi0" */
- int i_authtype;
-};
-
-#define IEEE80211_AUTH_NONE 0
-#define IEEE80211_AUTH_OPEN 1
-#define IEEE80211_AUTH_SHARED 2
-
-#define SIOCS80211AUTH _IOW('i', 236, struct ieee80211_auth)
-#define SIOCG80211AUTH _IOWR('i', 237, struct ieee80211_auth)
-
-struct ieee80211_channel {
- char i_name[IFNAMSIZ]; /* if_name, e.g. "wi0" */
- u_int16_t i_channel;
-};
-
-#define IEEE80211_CHAN_ANY 0xffff
-
-#define SIOCS80211CHANNEL _IOW('i', 238, struct ieee80211_channel)
-#define SIOCG80211CHANNEL _IOWR('i', 239, struct ieee80211_channel)
-
-struct ieee80211_bssid {
- char i_name[IFNAMSIZ]; /* if_name, e.g. "wi0" */
- u_int8_t i_bssid[IEEE80211_ADDR_LEN];
-};
-
-#define SIOCS80211BSSID _IOW('i', 240, struct ieee80211_bssid)
-#define SIOCG80211BSSID _IOWR('i', 241, struct ieee80211_bssid)
-
-#ifdef _KERNEL
-
-#define IEEE80211_ASCAN_WAIT 2 /* active scan wait */
-#define IEEE80211_PSCAN_WAIT 5 /* passive scan wait */
-#define IEEE80211_TRANS_WAIT 5 /* transition wait */
-#define IEEE80211_INACT_WAIT 5 /* inactivity timer interval */
-#define IEEE80211_INACT_MAX (300/IEEE80211_INACT_WAIT)
-
-/*
- * Structure for IEEE 802.11 drivers.
- */
-
-#define IEEE80211_CHAN_MAX 255
-#define IEEE80211_RATE_SIZE 12
-#define IEEE80211_KEYBUF_SIZE 16
-#define IEEE80211_NODE_HASHSIZE 32
-/* simple hash is enough for variation of macaddr */
-#define IEEE80211_NODE_HASH(addr) \
- (((u_int8_t *)(addr))[IEEE80211_ADDR_LEN - 1] % IEEE80211_NODE_HASHSIZE)
-
-enum ieee80211_phytype {
- IEEE80211_T_DS,
- IEEE80211_T_FH,
- IEEE80211_T_OFDM
-};
-
-enum ieee80211_opmode {
- IEEE80211_M_STA = 1, /* infrastructure station */
- IEEE80211_M_IBSS = 0, /* IBSS (adhoc) station */
- IEEE80211_M_AHDEMO = 3, /* Old lucent compatible adhoc demo */
- IEEE80211_M_HOSTAP = 6, /* Software Access Point */
- IEEE80211_M_MONITOR = 8 /* Monitor mode (doesn't correspond
- to a PRISM port like the others) */
-};
-
-enum ieee80211_state {
- IEEE80211_S_INIT, /* default state */
- IEEE80211_S_SCAN, /* scanning */
- IEEE80211_S_AUTH, /* try to authenticate */
- IEEE80211_S_ASSOC, /* try to assoc */
- IEEE80211_S_RUN /* associated */
-};
-
-/*
- * Node specific information.
- */
-struct ieee80211_node {
- TAILQ_ENTRY(ieee80211_node) ni_list;
- LIST_ENTRY(ieee80211_node) ni_hash;
-
- /* hardware */
- u_int8_t ni_rssi;
- u_int32_t ni_rstamp;
-
- /* header */
- u_int8_t ni_macaddr[IEEE80211_ADDR_LEN];
- u_int8_t ni_bssid[IEEE80211_ADDR_LEN];
-
- /* beacon, probe response */
- u_int8_t ni_tstamp[8];
- u_int16_t ni_intval;
- u_int16_t ni_capinfo;
- u_int8_t ni_esslen;
- u_int8_t ni_essid[IEEE80211_NWID_LEN];
- int ni_nrate;
- u_int8_t ni_rates[IEEE80211_RATE_SIZE];
- u_int8_t ni_chan;
- u_int16_t ni_fhdwell; /* FH only */
- u_int8_t ni_fhindex; /* FH only */
-
- /* power saving mode */
-
- u_int8_t ni_pwrsave;
- struct ifqueue ni_savedq; /* packets queued for pspoll */
-
- /* others */
- u_int16_t ni_associd; /* assoc response */
- u_int16_t ni_txseq; /* seq to be transmitted */
- u_int16_t ni_rxseq; /* seq previous received */
- int ni_fails; /* failure count to associate */
- int ni_inact; /* inactivity mark count */
- int ni_txrate; /* index to ni_rates[] */
- void *ni_private; /* driver private */
-};
-
-/* ni_chan encoding for FH phy */
-#define IEEE80211_FH_CHANMOD 80
-#define IEEE80211_FH_CHAN(set,pat) (((set)-1)*IEEE80211_FH_CHANMOD+(pat))
-#define IEEE80211_FH_CHANSET(chan) ((chan)/IEEE80211_FH_CHANMOD+1)
-#define IEEE80211_FH_CHANPAT(chan) ((chan)%IEEE80211_FH_CHANMOD)
-
-#define IEEE80211_PS_SLEEP 0x1 /* STA is in power saving mode */
-
-#define IEEE80211_PS_MAX_QUEUE 50 /* maximum saved packets */
-
-struct ieee80211_wepkey {
- int wk_len;
- u_int8_t wk_key[IEEE80211_KEYBUF_SIZE];
-};
-
-struct ieee80211com {
-#ifdef __NetBSD__
- struct ethercom ic_ec;
-#endif
-#ifdef __FreeBSD__
- struct arpcom ic_ac;
- struct mtx ic_mtx;
-#endif
-#ifdef __OpenBSD__
- struct arpcom ic_ac;
-#endif
- void (*ic_recv_mgmt[16])(struct ieee80211com *,
- struct mbuf *, int, u_int32_t);
- int (*ic_send_mgmt[16])(struct ieee80211com *,
- struct ieee80211_node *, int, int);
- int (*ic_newstate)(void *, enum ieee80211_state);
- int (*ic_chancheck)(void *, u_char *);
- int (*ic_set_tim)(struct ieee80211com *, int, int);
- u_int8_t ic_myaddr[IEEE80211_ADDR_LEN];
- u_int8_t ic_sup_rates[IEEE80211_RATE_SIZE];
- u_char ic_chan_avail[roundup(IEEE80211_CHAN_MAX,NBBY)];
- u_char ic_chan_active[roundup(IEEE80211_CHAN_MAX, NBBY)];
- u_char ic_chan_scan[roundup(IEEE80211_CHAN_MAX, NBBY)];
- struct ifqueue ic_mgtq;
- struct ifqueue ic_pwrsaveq;
- int ic_flags;
- int ic_hdrlen; /* either 0 or extended header
- * length, e.g. for addr4
- */
-
- enum ieee80211_phytype ic_phytype;
- enum ieee80211_opmode ic_opmode;
- enum ieee80211_state ic_state;
- caddr_t ic_rawbpf; /* packet filter structure */
- struct ieee80211_node ic_bss; /* information for this node */
- int ic_node_privlen;/* size for ni_private */
- void (*ic_node_free)(struct ieee80211com *,
- struct ieee80211_node *); /* callback */
- u_int8_t ic_ibss_chan;
- int ic_fixed_rate; /* index to ic_sup_rates[] */
- TAILQ_HEAD(, ieee80211_node) ic_node; /* information of all nodes */
- LIST_HEAD(, ieee80211_node) ic_hash[IEEE80211_NODE_HASHSIZE];
- u_int16_t ic_lintval; /* listen interval */
- int ic_mgt_timer; /* mgmt timeout */
- int ic_scan_timer; /* scant wait */
- int ic_inact_timer; /* inactivity timer wait */
- int ic_des_esslen;
- u_int8_t ic_des_essid[IEEE80211_NWID_LEN];
- int ic_des_chan; /* desired channel */
- u_int8_t ic_des_bssid[IEEE80211_ADDR_LEN];
- struct ieee80211_wepkey ic_nw_keys[IEEE80211_WEP_NKID];
- int ic_wep_txkey; /* default tx key index */
- void *ic_wep_ctx; /* wep crypt context */
- int ic_iv_flag;
- u_int32_t ic_iv; /* initial vector for wep */
- u_int32_t ic_aid_bitmap[IEEE80211_MAX_AID / 32 + 1];
- u_int16_t ic_max_aid;
- struct ifmedia ic_media;
-};
-#ifdef __NetBSD__
-#define ic_if ic_ec.ec_if
-#endif
-#if defined(__FreeBSD__) || defined(__OpenBSD__)
-#define ic_if ic_ac.ac_if
-#endif
-#define ic_softc ic_if.if_softc
-
-#define IEEE80211_HEADER_LEN(ic) (((ic)->ic_hdrlen > 0) \
- ? (ic)->ic_hdrlen : sizeof(struct ieee80211_frame))
-
-#define IEEE80211_SEND_MGMT(ic,ni,type,arg) do { \
- if ((ic)->ic_send_mgmt[(type)>>IEEE80211_FC0_SUBTYPE_SHIFT] != NULL) \
- (*(ic)->ic_send_mgmt[(type)>>IEEE80211_FC0_SUBTYPE_SHIFT]) \
- (ic,ni,type,arg); \
-} while (/*CONSTCOND*/ 0)
-
-#define IEEE80211_ADDR_EQ(a1,a2) (memcmp(a1,a2,IEEE80211_ADDR_LEN) == 0)
-#define IEEE80211_ADDR_COPY(dst,src) memcpy(dst,src,IEEE80211_ADDR_LEN)
-
-#define IEEE80211_IS_MULTICAST(a) ETHER_IS_MULTICAST(a)
-
-/* ic_flags */
-#define IEEE80211_F_ASCAN 0x00000001 /* STATUS: active scan */
-#define IEEE80211_F_SIBSS 0x00000002 /* STATUS: start IBSS */
-#define IEEE80211_F_WEPON 0x00000100 /* CONF: WEP enabled */
-#define IEEE80211_F_IBSSON 0x00000200 /* CONF: IBSS creation enable */
-#define IEEE80211_F_PMGTON 0x00000400 /* CONF: Power mgmt enable */
-#define IEEE80211_F_DESBSSID 0x00000800 /* CONF: des_bssid is set */
-#define IEEE80211_F_SCANAP 0x00001000 /* CONF: Scanning AP */
-#define IEEE80211_F_HASWEP 0x00010000 /* CAPABILITY: WEP available */
-#define IEEE80211_F_HASIBSS 0x00020000 /* CAPABILITY: IBSS available */
-#define IEEE80211_F_HASPMGT 0x00040000 /* CAPABILITY: Power mgmt */
-#define IEEE80211_F_HASHOSTAP 0x00080000 /* CAPABILITY: HOSTAP avail */
-#define IEEE80211_F_HASAHDEMO 0x00100000 /* CAPABILITY: Old Adhoc Demo */
-#define IEEE80211_F_HASMONITOR 0x00200000 /* CAPABILITY: Monitor mode */
-
-/* flags for ieee80211_fix_rate() */
-#define IEEE80211_F_DOSORT 0x00000001 /* sort rate list */
-#define IEEE80211_F_DOFRATE 0x00000002 /* use fixed rate */
-#define IEEE80211_F_DONEGO 0x00000004 /* calc negotiated rate */
-#define IEEE80211_F_DODEL 0x00000008 /* delete ignore rate */
-
-void ieee80211_ifattach(struct ifnet *);
-void ieee80211_ifdetach(struct ifnet *);
-void ieee80211_input(struct ifnet *, struct mbuf *, int, u_int32_t);
-int ieee80211_mgmt_output(struct ifnet *, struct ieee80211_node *,
- struct mbuf *, int);
-struct mbuf *ieee80211_encap(struct ifnet *, struct mbuf *);
-struct mbuf *ieee80211_decap(struct ifnet *, struct mbuf *);
-int ieee80211_ioctl(struct ifnet *, u_long, caddr_t);
-void ieee80211_print_essid(u_int8_t *, int);
-void ieee80211_dump_pkt(u_int8_t *, int, int, int);
-void ieee80211_watchdog(struct ifnet *);
-void ieee80211_next_scan(struct ifnet *);
-void ieee80211_end_scan(struct ifnet *);
-void ieee80211_create_ibss(struct ieee80211com *);
-int ieee80211_match_bss(struct ieee80211com *, struct ieee80211_node *);
-int ieee80211_get_rate(struct ieee80211com *);
-int ieee80211_get_channel(struct ieee80211com *);
-struct ieee80211_node *ieee80211_alloc_node(struct ieee80211com *, u_int8_t *,
- int);
-struct ieee80211_node *ieee80211_find_node(struct ieee80211com *, u_int8_t *);
-void ieee80211_free_node(struct ieee80211com *, struct ieee80211_node *);
-void ieee80211_free_allnodes(struct ieee80211com *);
-int ieee80211_fix_rate(struct ieee80211com *, struct ieee80211_node *, int);
-int ieee80211_new_state(struct ifnet *, enum ieee80211_state, int);
-struct mbuf *ieee80211_wep_crypt(struct ifnet *, struct mbuf *, int);
-int ieee80211_rate2media(int, enum ieee80211_phytype);
-int ieee80211_media2rate(int, enum ieee80211_phytype);
-
-int ieee80211_cfgget(struct ifnet *, u_long, caddr_t);
-int ieee80211_cfgset(struct ifnet *, u_long, caddr_t);
-
-void ieee80211_pwrsave(struct ieee80211com *, struct ieee80211_node *,
- struct mbuf *);
-
-int ieee80211_media_change(struct ifnet *);
-void ieee80211_media_status(struct ifnet *, struct ifmediareq *);
-
-#endif /* _KERNEL */
-
-#endif /* _NET_IF_IEEE80211_H_ */