A Discrete-Event Network Simulator
API
wifi-information-element.h
Go to the documentation of this file.
1 /* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
2 /*
3  * Copyright (c) 2010 Dean Armstrong
4  *
5  * This program is free software; you can redistribute it and/or modify
6  * it under the terms of the GNU General Public License version 2 as
7  * published by the Free Software Foundation;
8  *
9  * This program is distributed in the hope that it will be useful,
10  * but WITHOUT ANY WARRANTY; without even the implied warranty of
11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12  * GNU General Public License for more details.
13  *
14  * You should have received a copy of the GNU General Public License
15  * along with this program; if not, write to the Free Software
16  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
17  *
18  * Author: Dean Armstrong <deanarm@gmail.com>
19  */
20 
21 #ifndef WIFI_INFORMATION_ELEMENT_H
22 #define WIFI_INFORMATION_ELEMENT_H
23 
24 #include "ns3/header.h"
25 
26 namespace ns3 {
27 
40 typedef uint8_t WifiInformationElementId;
41 
42 
48 #define IE_SSID ((WifiInformationElementId)0)
49 #define IE_SUPPORTED_RATES ((WifiInformationElementId)1)
50 #define IE_FH_PARAMETER_SET ((WifiInformationElementId)2)
51 #define IE_DSSS_PARAMETER_SET ((WifiInformationElementId)3)
52 #define IE_CF_PARAMETER_SET ((WifiInformationElementId)4)
53 #define IE_TIM ((WifiInformationElementId)5)
54 #define IE_IBSS_PARAMETER_SET ((WifiInformationElementId)6)
55 #define IE_COUNTRY ((WifiInformationElementId)7)
56 #define IE_HOPPING_PATTERN_PARAMETERS ((WifiInformationElementId)8)
57 #define IE_HOPPING_PATTERN_TABLE ((WifiInformationElementId)9)
58 #define IE_REQUEST ((WifiInformationElementId)10)
59 #define IE_BSS_LOAD ((WifiInformationElementId)11)
60 #define IE_EDCA_PARAMETER_SET ((WifiInformationElementId)12)
61 #define IE_TSPEC ((WifiInformationElementId)13)
62 #define IE_TCLAS ((WifiInformationElementId)14)
63 #define IE_SCHEDULE ((WifiInformationElementId)15)
64 #define IE_CHALLENGE_TEXT ((WifiInformationElementId)16)
65 // 17 to 31 are reserved
66 #define IE_POWER_CONSTRAINT ((WifiInformationElementId)32)
67 #define IE_POWER_CAPABILITY ((WifiInformationElementId)33)
68 #define IE_TPC_REQUEST ((WifiInformationElementId)34)
69 #define IE_TPC_REPORT ((WifiInformationElementId)35)
70 #define IE_SUPPORTED_CHANNELS ((WifiInformationElementId)36)
71 #define IE_CHANNEL_SWITCH_ANNOUNCEMENT ((WifiInformationElementId)37)
72 #define IE_MEASUREMENT_REQUEST ((WifiInformationElementId)38)
73 #define IE_MEASUREMENT_REPORT ((WifiInformationElementId)39)
74 #define IE_QUIET ((WifiInformationElementId)40)
75 #define IE_IBSS_DFS ((WifiInformationElementId)41)
76 #define IE_ERP_INFORMATION ((WifiInformationElementId)42)
77 #define IE_TS_DELAY ((WifiInformationElementId)43)
78 #define IE_TCLAS_PROCESSING ((WifiInformationElementId)44)
79 #define IE_HT_CAPABILITIES ((WifiInformationElementId)45)
80 #define IE_QOS_CAPABILITY ((WifiInformationElementId)46)
81 // 47 is reserved
82 #define IE_RSN ((WifiInformationElementId)48)
83 // 49 is reserved
84 #define IE_EXTENDED_SUPPORTED_RATES ((WifiInformationElementId)50)
85 #define IE_AP_CHANNEL_REPORT ((WifiInformationElementId)51)
86 #define IE_NEIGHBOR_REPORT ((WifiInformationElementId)52)
87 #define IE_RCPI ((WifiInformationElementId)53)
88 #define IE_MOBILITY_DOMAIN ((WifiInformationElementId)54)
89 #define IE_FAST_BSS_TRANSITION ((WifiInformationElementId)55)
90 #define IE_TIMEOUT_INTERVAL ((WifiInformationElementId)56)
91 #define IE_RIC_DATA ((WifiInformationElementId)57)
92 #define IE_DSE_REGISTERED_LOCATION ((WifiInformationElementId)58)
93 #define IE_SUPPORTED_OPERATING_CLASSES ((WifiInformationElementId)59)
94 #define IE_EXTENDED_CHANNEL_SWITCH_ANNOUNCEMENT ((WifiInformationElementId)60)
95 #define IE_HT_OPERATION ((WifiInformationElementId)61)
96 #define IE_SECONDARY_CHANNEL_OFFSET ((WifiInformationElementId)62)
97 #define IE_BSS_AVERAGE_ACCESS_DELAY ((WifiInformationElementId)63)
98 #define IE_ANTENNA ((WifiInformationElementId)64)
99 #define IE_RSNI ((WifiInformationElementId)65)
100 #define IE_MEASUREMENT_PILOT_TRANSMISSION ((WifiInformationElementId)66)
101 #define IE_BSS_AVAILABLE_ADMISSION_CAPACITY ((WifiInformationElementId)67)
102 #define IE_BSS_AC_ACCESS_DELAY ((WifiInformationElementId)68)
103 #define IE_TIME_ADVERTISEMENT ((WifiInformationElementId)69)
104 #define IE_RM_ENABLED_CAPACITIES ((WifiInformationElementId)70)
105 #define IE_MULTIPLE_BSSID ((WifiInformationElementId)71)
106 #define IE_20_40_BSS_COEXISTENCE ((WifiInformationElementId)72)
107 #define IE_20_40_BSS_INTOLERANT_CHANNEL_REPORT ((WifiInformationElementId)73)
108 #define IE_OVERLAPPING_BSS_SCAN_PARAMETERS ((WifiInformationElementId)74)
109 #define IE_RIC_DESCRIPTOR ((WifiInformationElementId)75)
110 #define IE_MANAGEMENT_MIC ((WifiInformationElementId)76)
111 // 77 is reserved
112 #define IE_EVENT_REQUEST ((WifiInformationElementId)78)
113 #define IE_EVENT_REPORT ((WifiInformationElementId)79)
114 #define IE_DIAGNOSTIC_REQUEST ((WifiInformationElementId)80)
115 #define IE_DIAGNOSTIC_REPORT ((WifiInformationElementId)81)
116 #define IE_LOCATION_PARAMETERS ((WifiInformationElementId)82)
117 #define IE_NONTRANSMITTED_BSSID_CAPABILITY ((WifiInformationElementId)83)
118 #define IE_SSID_LIST ((WifiInformationElementId)84)
119 #define IE_MULTIPLE_BSSID_INDEX ((WifiInformationElementId)85)
120 #define IE_FMS_DESCRIPTOR ((WifiInformationElementId)86)
121 #define IE_FMS_REQUEST ((WifiInformationElementId)87)
122 #define IE_FMS_RESPONSE ((WifiInformationElementId)88)
123 #define IE_QOS_TRAFFIC_CAPABILITY ((WifiInformationElementId)89)
124 #define IE_BSS_MAX_IDLE_PERIOD ((WifiInformationElementId)90)
125 #define IE_TFS_REQUEST ((WifiInformationElementId)91)
126 #define IE_TFS_RESPONSE ((WifiInformationElementId)92)
127 #define IE_WNM_SLEEP_MODE ((WifiInformationElementId)93)
128 #define IE_TIM_BROADCAST_REQUEST ((WifiInformationElementId)94)
129 #define IE_TIM_BROADCAST_RESPONSE ((WifiInformationElementId)95)
130 #define IE_COLLOCATED_INTERFERENCE_REPORT ((WifiInformationElementId)96)
131 #define IE_CHANNEL_USAGE ((WifiInformationElementId)97)
132 #define IE_TIME_ZONE ((WifiInformationElementId)98)
133 #define IE_DMS_REQUEST ((WifiInformationElementId)99)
134 #define IE_DMS_RESPONSE ((WifiInformationElementId)100)
135 #define IE_LINK_IDENTIFIER ((WifiInformationElementId)101)
136 #define IE_WAKEUP_SCHEDULE ((WifiInformationElementId)102)
137 // 103 is reserved
138 #define IE_CHANNEL_SWITCH_TIMING ((WifiInformationElementId)104)
139 #define IE_PTI_CONTROL ((WifiInformationElementId)105)
140 #define IE_TPU_BUFFER_STATUS ((WifiInformationElementId)106)
141 #define IE_INTERWORKING ((WifiInformationElementId)107)
142 #define IE_ADVERTISEMENT_PROTOCOL ((WifiInformationElementId)108)
143 #define IE_EXPEDITED_BANDWIDTH_REQUEST ((WifiInformationElementId)109)
144 #define IE_QOS_MAP_SET ((WifiInformationElementId)110)
145 #define IE_ROAMING_CONSORTIUM ((WifiInformationElementId)111)
146 #define IE_EMERGENCY_ALART_IDENTIFIER ((WifiInformationElementId)112)
147 #define IE_MESH_CONFIGURATION ((WifiInformationElementId)113)
148 #define IE_MESH_ID ((WifiInformationElementId)114)
149 #define IE_MESH_LINK_METRIC_REPORT ((WifiInformationElementId)115)
150 #define IE_CONGESTION_NOTIFICATION ((WifiInformationElementId)116)
151 #define IE_MESH_PEERING_MANAGEMENT ((WifiInformationElementId)117)
152 #define IE_MESH_CHANNEL_SWITCH_PARAMETERS ((WifiInformationElementId)118)
153 #define IE_MESH_AWAKE_WINDOW ((WifiInformationElementId)119)
154 #define IE_BEACON_TIMING ((WifiInformationElementId)120)
155 #define IE_MCCAOP_SETUP_REQUEST ((WifiInformationElementId)121)
156 #define IE_MCCAOP_SETUP_REPLY ((WifiInformationElementId)122)
157 #define IE_MCCAOP_ADVERTISEMENT ((WifiInformationElementId)123)
158 #define IE_MCCAOP_TEARDOWN ((WifiInformationElementId)124)
159 #define IE_GANN ((WifiInformationElementId)125)
160 #define IE_RANN ((WifiInformationElementId)126)
161 // 67 to 126 are reserved
162 #define IE_EXTENDED_CAPABILITIES ((WifiInformationElementId)127)
163 // 128 to 129 are reserved
164 #define IE_PREQ ((WifiInformationElementId)130)
165 #define IE_PREP ((WifiInformationElementId)131)
166 #define IE_PERR ((WifiInformationElementId)132)
167 // 133 to 136 are reserved
168 #define IE_PROXY_UPDATE ((WifiInformationElementId)137)
169 #define IE_PROXY_UPDATE_CONFIRMATION ((WifiInformationElementId)138)
170 #define IE_AUTHENTICATED_MESH_PEERING_EXCHANGE ((WifiInformationElementId)139)
171 #define IE_MIC ((WifiInformationElementId)140)
172 #define IE_DESTINATION_URI ((WifiInformationElementId)141)
173 #define IE_UAPSD_COEXISTENCE ((WifiInformationElementId)142)
174 // 143 to 173 are reserved
175 #define IE_MCCAOP_ADVERTISEMENT_OVERVIEW ((WifiInformationElementId)174)
176 // 175 to 190 are reserved
177 #define IE_VHT_CAPABILITIES ((WifiInformationElementId)191)
178 #define IE_VHT_OPERATION ((WifiInformationElementId)192)
179 #define IE_EXTENDED_BSS_LOAD ((WifiInformationElementId)193)
180 #define IE_WIDE_BANDWIDTH_CHANNEL_SWITCH ((WifiInformationElementId)194)
181 #define IE_VHT_TRANSMIT_POWER_ENVELOPE ((WifiInformationElementId)195)
182 #define IE_CHANNEL_SWITCH_WRAPPER ((WifiInformationElementId)196)
183 #define IE_AID ((WifiInformationElementId)197)
184 #define IE_QUIET_CHANNEL ((WifiInformationElementId)198)
185 #define IE_OPERATING_MODE_NOTIFICATION ((WifiInformationElementId)199)
186 // 200 to 220 are reserved
187 #define IE_VENDOR_SPECIFIC ((WifiInformationElementId)221)
188 // 222 to 254 are reserved
189 #define IE_EXTENSION ((WifiInformationElementId)255)
190 
191 #define IE_EXT_HE_CAPABILITIES ((WifiInformationElementId)35)
192 #define IE_EXT_HE_OPERATION ((WifiInformationElementId)36)
193 #define IE_EXT_UORA_PARAMETER_SET ((WifiInformationElementId)37)
194 #define IE_EXT_MU_EDCA_PARAMETER_SET ((WifiInformationElementId)38)
195 
233 class WifiInformationElement : public SimpleRefCount<WifiInformationElement>
234 {
235 public:
236  virtual ~WifiInformationElement ();
244  virtual Buffer::Iterator Serialize (Buffer::Iterator i) const;
273  virtual uint16_t GetSerializedSize () const;
274 
275  // Each subclass must implement these pure virtual functions:
279  virtual WifiInformationElementId ElementId () const = 0;
288  virtual uint8_t GetInformationFieldSize () const = 0;
307  uint8_t length) = 0;
308 
312  virtual WifiInformationElementId ElementIdExt () const;
313 
314  // In addition, a subclass may optionally override the following...
320  virtual void Print (std::ostream &os) const;
330  virtual bool operator== (WifiInformationElement const & a) const;
331 
332 };
333 
334 } //namespace ns3
335 
336 #endif /* WIFI_INFORMATION_ELEMENT_H */
ns3::WifiInformationElement::Deserialize
Buffer::Iterator Deserialize(Buffer::Iterator i)
Deserialize entire IE, which must be present.
Definition: wifi-information-element.cc:66
ns3
Every class exported by the ns3 library is enclosed in the ns3 namespace.
ns3::WifiInformationElement::ElementId
virtual WifiInformationElementId ElementId() const =0
ns3::WifiInformationElement
Information element, as defined in 802.11-2007 standard.
Definition: wifi-information-element.h:234
ns3::WifiInformationElement::DeserializeInformationField
virtual uint8_t DeserializeInformationField(Buffer::Iterator start, uint8_t length)=0
Deserialize information (i.e., the body of the IE, not including the Element ID and length octets)
ns3::SimpleRefCount
A template-based reference counting class.
Definition: simple-ref-count.h:74
ns3::WifiInformationElementId
uint8_t WifiInformationElementId
This type is used to represent an Information Element ID.
Definition: wifi-information-element.h:40
ns3::WifiInformationElement::GetSerializedSize
virtual uint16_t GetSerializedSize() const
Get the size of the serialized IE including Element ID and length fields.
Definition: wifi-information-element.cc:35
ns3::WifiInformationElement::DeserializeIfPresent
Buffer::Iterator DeserializeIfPresent(Buffer::Iterator i)
Deserialize entire IE if it is present.
Definition: wifi-information-element.cc:77
visualizer.core.start
def start()
Definition: core.py:1855
ns3::WifiInformationElement::Serialize
virtual Buffer::Iterator Serialize(Buffer::Iterator i) const
Serialize entire IE including Element ID and length fields.
Definition: wifi-information-element.cc:47
ns3::WifiInformationElement::~WifiInformationElement
virtual ~WifiInformationElement()
Definition: wifi-information-element.cc:25
ns3::WifiInformationElement::operator==
virtual bool operator==(WifiInformationElement const &a) const
Compare two IEs for equality by ID & Length, and then through memcmp of serialised version.
Definition: wifi-information-element.cc:117
ns3::WifiInformationElement::ElementIdExt
virtual WifiInformationElementId ElementIdExt() const
Definition: wifi-information-element.cc:41
ns3::WifiInformationElement::GetInformationFieldSize
virtual uint8_t GetInformationFieldSize() const =0
Length of serialized information (i.e., the length of the body of the IE, not including the Element I...
ns3::Buffer::Iterator
iterator in a Buffer instance
Definition: buffer.h:99
ns3::WifiInformationElement::Print
virtual void Print(std::ostream &os) const
Generate human-readable form of IE.
Definition: wifi-information-element.cc:30
ns3::WifiInformationElement::SerializeInformationField
virtual void SerializeInformationField(Buffer::Iterator start) const =0
Serialize information (i.e., the body of the IE, not including the Element ID and length octets)