Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
freebsd
GitHub Repository: freebsd/freebsd-src
Path: blob/main/contrib/libpcap/ieee80211.h
39475 views
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 0x03
42
#define IEEE80211_FC0_VERSION_SHIFT 0
43
#define IEEE80211_FC0_VERSION_0 0x00
44
#define IEEE80211_FC0_TYPE_MASK 0x0c
45
#define IEEE80211_FC0_TYPE_SHIFT 2
46
#define IEEE80211_FC0_TYPE_MGT 0x00
47
#define IEEE80211_FC0_TYPE_CTL 0x04
48
#define IEEE80211_FC0_TYPE_DATA 0x08
49
50
#define IEEE80211_FC0_SUBTYPE_MASK 0xf0
51
#define IEEE80211_FC0_SUBTYPE_SHIFT 4
52
/* for TYPE_MGT */
53
#define IEEE80211_FC0_SUBTYPE_ASSOC_REQ 0x00
54
#define IEEE80211_FC0_SUBTYPE_ASSOC_RESP 0x10
55
#define IEEE80211_FC0_SUBTYPE_REASSOC_REQ 0x20
56
#define IEEE80211_FC0_SUBTYPE_REASSOC_RESP 0x30
57
#define IEEE80211_FC0_SUBTYPE_PROBE_REQ 0x40
58
#define IEEE80211_FC0_SUBTYPE_PROBE_RESP 0x50
59
#define IEEE80211_FC0_SUBTYPE_BEACON 0x80
60
#define IEEE80211_FC0_SUBTYPE_ATIM 0x90
61
#define IEEE80211_FC0_SUBTYPE_DISASSOC 0xa0
62
#define IEEE80211_FC0_SUBTYPE_AUTH 0xb0
63
#define IEEE80211_FC0_SUBTYPE_DEAUTH 0xc0
64
/* for TYPE_CTL */
65
#define IEEE80211_FC0_SUBTYPE_PS_POLL 0xa0
66
#define IEEE80211_FC0_SUBTYPE_RTS 0xb0
67
#define IEEE80211_FC0_SUBTYPE_CTS 0xc0
68
#define IEEE80211_FC0_SUBTYPE_ACK 0xd0
69
#define IEEE80211_FC0_SUBTYPE_CF_END 0xe0
70
#define IEEE80211_FC0_SUBTYPE_CF_END_ACK 0xf0
71
/* for TYPE_DATA (bit combination) */
72
#define IEEE80211_FC0_SUBTYPE_DATA 0x00
73
#define IEEE80211_FC0_SUBTYPE_CF_ACK 0x10
74
#define IEEE80211_FC0_SUBTYPE_CF_POLL 0x20
75
#define IEEE80211_FC0_SUBTYPE_CF_ACPL 0x30
76
#define IEEE80211_FC0_SUBTYPE_NODATA 0x40
77
#define IEEE80211_FC0_SUBTYPE_NODATA_CF_ACK 0x50
78
#define IEEE80211_FC0_SUBTYPE_NODATA_CF_POLL 0x60
79
#define IEEE80211_FC0_SUBTYPE_NODATA_CF_ACPL 0x70
80
#define IEEE80211_FC0_SUBTYPE_QOS 0x80
81
#define IEEE80211_FC0_SUBTYPE_QOS_NULL 0xc0
82
83
#define IEEE80211_FC1_DIR_MASK 0x03
84
#define IEEE80211_FC1_DIR_NODS 0x00 /* STA->STA */
85
#define IEEE80211_FC1_DIR_TODS 0x01 /* STA->AP */
86
#define IEEE80211_FC1_DIR_FROMDS 0x02 /* AP ->STA */
87
#define IEEE80211_FC1_DIR_DSTODS 0x03 /* AP ->AP */
88
89
#define IEEE80211_FC1_MORE_FRAG 0x04
90
#define IEEE80211_FC1_RETRY 0x08
91
#define IEEE80211_FC1_PWR_MGT 0x10
92
#define IEEE80211_FC1_MORE_DATA 0x20
93
#define IEEE80211_FC1_WEP 0x40
94
#define IEEE80211_FC1_ORDER 0x80
95
96
#define IEEE80211_SEQ_FRAG_MASK 0x000f
97
#define IEEE80211_SEQ_FRAG_SHIFT 0
98
#define IEEE80211_SEQ_SEQ_MASK 0xfff0
99
#define IEEE80211_SEQ_SEQ_SHIFT 4
100
101
#define IEEE80211_NWID_LEN 32
102
103
#define IEEE80211_QOS_TXOP 0x00ff
104
/* bit 8 is reserved */
105
#define IEEE80211_QOS_ACKPOLICY 0x60
106
#define IEEE80211_QOS_ACKPOLICY_S 5
107
#define IEEE80211_QOS_ESOP 0x10
108
#define IEEE80211_QOS_ESOP_S 4
109
#define IEEE80211_QOS_TID 0x0f
110
111
#define IEEE80211_MGT_SUBTYPE_NAMES { \
112
"assoc-req", "assoc-resp", \
113
"reassoc-req", "reassoc-resp", \
114
"probe-req", "probe-resp", \
115
"reserved#6", "reserved#7", \
116
"beacon", "atim", \
117
"disassoc", "auth", \
118
"deauth", "reserved#13", \
119
"reserved#14", "reserved#15" \
120
}
121
122
#define IEEE80211_CTL_SUBTYPE_NAMES { \
123
"reserved#0", "reserved#1", \
124
"reserved#2", "reserved#3", \
125
"reserved#3", "reserved#5", \
126
"reserved#6", "reserved#7", \
127
"reserved#8", "reserved#9", \
128
"ps-poll", "rts", \
129
"cts", "ack", \
130
"cf-end", "cf-end-ack" \
131
}
132
133
#define IEEE80211_DATA_SUBTYPE_NAMES { \
134
"data", "data-cf-ack", \
135
"data-cf-poll", "data-cf-ack-poll", \
136
"null", "cf-ack", \
137
"cf-poll", "cf-ack-poll", \
138
"qos-data", "qos-data-cf-ack", \
139
"qos-data-cf-poll", "qos-data-cf-ack-poll", \
140
"qos", "reserved#13", \
141
"qos-cf-poll", "qos-cf-ack-poll" \
142
}
143
144
#define IEEE80211_TYPE_NAMES { "mgt", "ctl", "data", "reserved#4" }
145
146
#endif /* _NET80211_IEEE80211_H_ */
147
148