]> The Tcpdump Group git mirrors - libpcap/blob - ieee80211.h
CI: Call print_so_deps() on rpcapd in remote enabled build
[libpcap] / ieee80211.h
1 /*-
2 * Copyright (c) 2001 Atsushi Onoe
3 * Copyright (c) 2002-2005 Sam Leffler, Errno Consulting
4 * All rights reserved.
5 *
6 * Redistribution and use in source and binary forms, with or without
7 * modification, are permitted provided that the following conditions
8 * are met:
9 * 1. Redistributions of source code must retain the above copyright
10 * notice, this list of conditions and the following disclaimer.
11 * 2. Redistributions in binary form must reproduce the above copyright
12 * notice, this list of conditions and the following disclaimer in the
13 * documentation and/or other materials provided with the distribution.
14 * 3. The name of the author may not be used to endorse or promote products
15 * derived from this software without specific prior written permission.
16 *
17 * Alternatively, this software may be distributed under the terms of the
18 * GNU General Public License ("GPL") version 2 as published by the Free
19 * Software Foundation.
20 *
21 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
22 * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
23 * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
24 * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
25 * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
26 * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
27 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
28 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
29 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
30 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
31 *
32 * $FreeBSD: src/sys/net80211/ieee80211.h,v 1.10 2005/07/22 16:55:27 sam Exp $
33 */
34 #ifndef _NET80211_IEEE80211_H_
35 #define _NET80211_IEEE80211_H_
36
37 /*
38 * 802.11 protocol definitions.
39 */
40
41 #define IEEE80211_FC0_VERSION_MASK 0x03U
42 #define IEEE80211_FC0_VERSION_SHIFT 0
43 #define IEEE80211_FC0_VERSION_0 0x00U
44 #define IEEE80211_FC0_TYPE_MASK 0x0cU
45 #define IEEE80211_FC0_TYPE_SHIFT 2
46 #define IEEE80211_FC0_TYPE_MGT 0x00U
47 #define IEEE80211_FC0_TYPE_CTL 0x04U
48 #define IEEE80211_FC0_TYPE_DATA 0x08U
49
50 #define IEEE80211_FC0_SUBTYPE_MASK 0xf0U
51 #define IEEE80211_FC0_SUBTYPE_SHIFT 4
52 /* for TYPE_MGT */
53 #define IEEE80211_FC0_SUBTYPE_ASSOC_REQ 0x00U
54 #define IEEE80211_FC0_SUBTYPE_ASSOC_RESP 0x10U
55 #define IEEE80211_FC0_SUBTYPE_REASSOC_REQ 0x20U
56 #define IEEE80211_FC0_SUBTYPE_REASSOC_RESP 0x30U
57 #define IEEE80211_FC0_SUBTYPE_PROBE_REQ 0x40U
58 #define IEEE80211_FC0_SUBTYPE_PROBE_RESP 0x50U
59 #define IEEE80211_FC0_SUBTYPE_BEACON 0x80U
60 #define IEEE80211_FC0_SUBTYPE_ATIM 0x90U
61 #define IEEE80211_FC0_SUBTYPE_DISASSOC 0xa0U
62 #define IEEE80211_FC0_SUBTYPE_AUTH 0xb0U
63 #define IEEE80211_FC0_SUBTYPE_DEAUTH 0xc0U
64 /* for TYPE_CTL */
65 #define IEEE80211_FC0_SUBTYPE_BAR 0x80U
66 #define IEEE80211_FC0_SUBTYPE_BA 0x90U
67 #define IEEE80211_FC0_SUBTYPE_PS_POLL 0xa0U
68 #define IEEE80211_FC0_SUBTYPE_RTS 0xb0U
69 #define IEEE80211_FC0_SUBTYPE_CTS 0xc0U
70 #define IEEE80211_FC0_SUBTYPE_ACK 0xd0U
71 #define IEEE80211_FC0_SUBTYPE_CF_END 0xe0U
72 #define IEEE80211_FC0_SUBTYPE_CF_END_ACK 0xf0U
73 /* for TYPE_DATA (bit combination) */
74 #define IEEE80211_FC0_SUBTYPE_DATA 0x00U
75 #define IEEE80211_FC0_SUBTYPE_CF_ACK 0x10U
76 #define IEEE80211_FC0_SUBTYPE_CF_POLL 0x20U
77 #define IEEE80211_FC0_SUBTYPE_CF_ACPL 0x30U
78 #define IEEE80211_FC0_SUBTYPE_NODATA 0x40U
79 #define IEEE80211_FC0_SUBTYPE_NODATA_CF_ACK 0x50U
80 #define IEEE80211_FC0_SUBTYPE_NODATA_CF_POLL 0x60U
81 #define IEEE80211_FC0_SUBTYPE_NODATA_CF_ACPL 0x70U
82 #define IEEE80211_FC0_SUBTYPE_QOS 0x80U
83 #define IEEE80211_FC0_SUBTYPE_QOS_NULL 0xc0U
84
85 #define IEEE80211_FC1_DIR_MASK 0x03U
86 #define IEEE80211_FC1_DIR_NODS 0x00U /* STA->STA */
87 #define IEEE80211_FC1_DIR_TODS 0x01U /* STA->AP */
88 #define IEEE80211_FC1_DIR_FROMDS 0x02U /* AP ->STA */
89 #define IEEE80211_FC1_DIR_DSTODS 0x03U /* AP ->AP */
90
91 #define IEEE80211_FC1_MORE_FRAG 0x04U
92 #define IEEE80211_FC1_RETRY 0x08U
93 #define IEEE80211_FC1_PWR_MGT 0x10U
94 #define IEEE80211_FC1_MORE_DATA 0x20U
95 #define IEEE80211_FC1_WEP 0x40U
96 #define IEEE80211_FC1_ORDER 0x80U
97
98 #define IEEE80211_SEQ_FRAG_MASK 0x000fU
99 #define IEEE80211_SEQ_FRAG_SHIFT 0
100 #define IEEE80211_SEQ_SEQ_MASK 0xfff0U
101 #define IEEE80211_SEQ_SEQ_SHIFT 4
102
103 #define IEEE80211_NWID_LEN 32
104
105 #define IEEE80211_QOS_TXOP 0x00ffU
106 /* bit 8 is reserved */
107 #define IEEE80211_QOS_ACKPOLICY 0x60U
108 #define IEEE80211_QOS_ACKPOLICY_S 5
109 #define IEEE80211_QOS_ESOP 0x10U
110 #define IEEE80211_QOS_ESOP_S 4
111 #define IEEE80211_QOS_TID 0x0fU
112
113 #define IEEE80211_MGT_SUBTYPE_NAMES { \
114 "assoc-req", "assoc-resp", \
115 "reassoc-req", "reassoc-resp", \
116 "probe-req", "probe-resp", \
117 "reserved#6", "reserved#7", \
118 "beacon", "atim", \
119 "disassoc", "auth", \
120 "deauth", "reserved#13", \
121 "reserved#14", "reserved#15" \
122 }
123
124 #define IEEE80211_CTL_SUBTYPE_NAMES { \
125 "reserved#0", "reserved#1", \
126 "reserved#2", "reserved#3", \
127 "reserved#3", "reserved#5", \
128 "reserved#6", "reserved#7", \
129 "bar", "ba", \
130 "ps-poll", "rts", \
131 "cts", "ack", \
132 "cf-end", "cf-end-ack" \
133 }
134
135 #define IEEE80211_DATA_SUBTYPE_NAMES { \
136 "data", "data-cf-ack", \
137 "data-cf-poll", "data-cf-ack-poll", \
138 "null", "cf-ack", \
139 "cf-poll", "cf-ack-poll", \
140 "qos-data", "qos-data-cf-ack", \
141 "qos-data-cf-poll", "qos-data-cf-ack-poll", \
142 "qos", "reserved#13", \
143 "qos-cf-poll", "qos-cf-ack-poll" \
144 }
145
146 #define IEEE80211_TYPE_NAMES { "mgt", "ctl", "data", "reserved#4" }
147
148 #endif /* _NET80211_IEEE80211_H_ */