A Discrete-Event Network Simulator
API
Loading...
Searching...
No Matches
mgt-headers.h
Go to the documentation of this file.
1/*
2 * Copyright (c) 2006 INRIA
3 * Copyright (c) 2009 MIRKO BANCHI
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 * Authors: Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
19 * Mirko Banchi <mk.banchi@gmail.com>
20 */
21
22#ifndef MGT_HEADERS_H
23#define MGT_HEADERS_H
24
26#include "edca-parameter-set.h"
29#include "ssid.h"
30#include "status-code.h"
31#include "supported-rates.h"
32#include "wifi-mgt-header.h"
33
34#include "ns3/dsss-parameter-set.h"
35#include "ns3/eht-capabilities.h"
36#include "ns3/eht-operation.h"
37#include "ns3/erp-information.h"
38#include "ns3/he-capabilities.h"
39#include "ns3/he-operation.h"
40#include "ns3/ht-capabilities.h"
41#include "ns3/ht-operation.h"
42#include "ns3/mac48-address.h"
43#include "ns3/mu-edca-parameter-set.h"
44#include "ns3/multi-link-element.h"
45#include "ns3/tid-to-link-mapping-element.h"
46#include "ns3/vht-capabilities.h"
47#include "ns3/vht-operation.h"
48
49#include <list>
50
51namespace ns3
52{
53
54class Packet;
55
72template <>
74{
75};
76
78template <>
79struct CanBeInPerStaProfile<TidToLinkMapping> : std::false_type
80{
81};
82
84template <>
85struct CanBeInPerStaProfile<MultiLinkElement> : std::false_type
86{
87};
88
90template <>
91struct CanBeInPerStaProfile<Ssid> : std::false_type
92{
93};
94
96using ProbeRequestElems = std::tuple<Ssid,
98 std::optional<ExtendedSupportedRatesIE>,
99 std::optional<HtCapabilities>,
100 std::optional<ExtendedCapabilities>,
101 std::optional<VhtCapabilities>,
102 std::optional<HeCapabilities>,
103 std::optional<EhtCapabilities>>;
104
106using ProbeResponseElems = std::tuple<Ssid,
108 std::optional<DsssParameterSet>,
109 std::optional<ErpInformation>,
110 std::optional<ExtendedSupportedRatesIE>,
111 std::optional<EdcaParameterSet>,
112 std::optional<HtCapabilities>,
113 std::optional<HtOperation>,
114 std::optional<ExtendedCapabilities>,
115 std::optional<VhtCapabilities>,
116 std::optional<VhtOperation>,
117 std::optional<ReducedNeighborReport>,
118 std::optional<HeCapabilities>,
119 std::optional<HeOperation>,
120 std::optional<MuEdcaParameterSet>,
121 std::optional<MultiLinkElement>,
122 std::optional<EhtCapabilities>,
123 std::optional<EhtOperation>,
124 std::optional<TidToLinkMapping>>;
125
127using AssocRequestElems = std::tuple<Ssid,
129 std::optional<ExtendedSupportedRatesIE>,
130 std::optional<HtCapabilities>,
131 std::optional<ExtendedCapabilities>,
132 std::optional<VhtCapabilities>,
133 std::optional<HeCapabilities>,
134 std::optional<MultiLinkElement>,
135 std::optional<EhtCapabilities>,
136 std::optional<TidToLinkMapping>>;
137
140 std::optional<ExtendedSupportedRatesIE>,
141 std::optional<EdcaParameterSet>,
142 std::optional<HtCapabilities>,
143 std::optional<HtOperation>,
144 std::optional<ExtendedCapabilities>,
145 std::optional<VhtCapabilities>,
146 std::optional<VhtOperation>,
147 std::optional<HeCapabilities>,
148 std::optional<HeOperation>,
149 std::optional<MuEdcaParameterSet>,
150 std::optional<MultiLinkElement>,
151 std::optional<EhtCapabilities>,
152 std::optional<EhtOperation>,
153 std::optional<TidToLinkMapping>>;
154
160 : public MgtHeaderInPerStaProfile<MgtAssocRequestHeader, AssocRequestElems>
161{
164
165 public:
166 ~MgtAssocRequestHeader() override = default;
167
172 static TypeId GetTypeId();
173
175 TypeId GetInstanceTypeId() const override;
176
182 void SetListenInterval(uint16_t interval);
188 uint16_t GetListenInterval() const;
196 const CapabilityInformation& Capabilities() const;
197
198 protected:
202 void SerializeImpl(Buffer::Iterator start) const;
205
212
220 const MgtAssocRequestHeader& frame) const;
221
231 uint16_t length,
232 const MgtAssocRequestHeader& frame);
233
234 private:
236 uint16_t m_listenInterval{0};
237};
238
244 : public MgtHeaderInPerStaProfile<MgtReassocRequestHeader, AssocRequestElems>
245{
248
249 public:
250 ~MgtReassocRequestHeader() override = default;
251
256 static TypeId GetTypeId();
257
259 TypeId GetInstanceTypeId() const override;
260
266 void SetListenInterval(uint16_t interval);
272 uint16_t GetListenInterval() const;
280 const CapabilityInformation& Capabilities() const;
286 void SetCurrentApAddress(Mac48Address currentApAddr);
287
288 protected:
292 void SerializeImpl(Buffer::Iterator start) const;
296 void PrintImpl(std::ostream& os) const;
297
304
312 const MgtReassocRequestHeader& frame) const;
313
323 uint16_t length,
324 const MgtReassocRequestHeader& frame);
325
326 private:
329 uint16_t m_listenInterval{0};
330};
331
337 : public MgtHeaderInPerStaProfile<MgtAssocResponseHeader, AssocResponseElems>
338{
341
342 public:
343 ~MgtAssocResponseHeader() override = default;
344
349 static TypeId GetTypeId();
350
352 TypeId GetInstanceTypeId() const override;
353
365 void SetStatusCode(StatusCode code);
373 const CapabilityInformation& Capabilities() const;
379 uint16_t GetAssociationId() const;
385 void SetAssociationId(uint16_t aid);
386
387 protected:
391 void SerializeImpl(Buffer::Iterator start) const;
395 void PrintImpl(std::ostream& os) const;
396
403
411 const MgtAssocResponseHeader& frame) const;
412
422 uint16_t length,
423 const MgtAssocResponseHeader& frame);
424
425 private:
428 uint16_t m_aid{0};
429};
430
435class MgtProbeRequestHeader : public WifiMgtHeader<MgtProbeRequestHeader, ProbeRequestElems>
436{
437 public:
438 ~MgtProbeRequestHeader() override = default;
439
444 static TypeId GetTypeId();
445
447 TypeId GetInstanceTypeId() const override;
448};
449
454class MgtProbeResponseHeader : public WifiMgtHeader<MgtProbeResponseHeader, ProbeResponseElems>
455{
457
458 public:
459 ~MgtProbeResponseHeader() override = default;
460
465 static TypeId GetTypeId();
466
468 TypeId GetInstanceTypeId() const override;
469
475 uint64_t GetBeaconIntervalUs() const;
481 void SetBeaconIntervalUs(uint64_t us);
489 const CapabilityInformation& Capabilities() const;
495 uint64_t GetTimestamp() const;
496
497 protected:
501 void SerializeImpl(Buffer::Iterator start) const;
504
505 private:
506 uint64_t m_timestamp;
509};
510
516{
517 public:
518 ~MgtBeaconHeader() override = default;
519
524 static TypeId GetTypeId();
525};
526
527/****************************
528 * Action frames
529 *****************************/
530
539{
540 public:
542 ~WifiActionHeader() override;
543
544 /*
545 * Compatible with table 8-38 IEEE 802.11, Part11, (Year 2012)
546 * Category values - see 802.11-2012 Table 8-38
547 */
548
550 enum CategoryValue // table 9-51 of IEEE 802.11-2020
551 {
552 QOS = 1,
555 RADIO_MEASUREMENT = 5, // Category: Radio Measurement
556 MESH = 13, // Category: Mesh
557 MULTIHOP = 14, // not used so far
558 SELF_PROTECTED = 15, // Category: Self Protected
559 DMG = 16, // Category: DMG
560 FST = 18, // Category: Fast Session Transfer
561 UNPROTECTED_DMG = 20, // Category: Unprotected DMG
562 PROTECTED_EHT = 37, // Category: Protected EHT
563 // Since vendor specific action has no stationary Action value,the parse process is not
564 // here. Refer to vendor-specific-action in wave module.
566 };
567
570 {
573 DELTS = 2,
576 };
577
583 {
587 };
588
591 {
594 };
595
598 {
605 };
606
609 {
610 LINK_METRIC_REPORT = 0, // Action Value:0 in Category 13: Mesh
611 PATH_SELECTION = 1, // Action Value:1 in Category 13: Mesh
612 PORTAL_ANNOUNCEMENT = 2, // Action Value:2 in Category 13: Mesh
613 CONGESTION_CONTROL_NOTIFICATION = 3, // Action Value:3 in Category 13: Mesh
615 4, // Action Value:4 in Category 13: Mesh MCCA-Setup-Request (not used so far)
617 5, // Action Value:5 in Category 13: Mesh MCCA-Setup-Reply (not used so far)
619 6, // Action Value:6 in Category 13: Mesh MCCA-Advertisement-Request (not used so far)
620 MDAOP_ADVERTISEMENTS = 7, // Action Value:7 in Category 13: Mesh (not used so far)
621 MDAOP_SET_TEARDOWN = 8, // Action Value:8 in Category 13: Mesh (not used so far)
622 TBTT_ADJUSTMENT_REQUEST = 9, // Action Value:9 in Category 13: Mesh (not used so far)
623 TBTT_ADJUSTMENT_RESPONSE = 10, // Action Value:10 in Category 13: Mesh (not used so far)
624 };
625
628 {
629 PROXY_UPDATE = 0, // not used so far
630 PROXY_UPDATE_CONFIRMATION = 1, // not used so far
631 };
632
634 enum SelfProtectedActionValue // Category: 15 (Self Protected)
635 {
636 PEER_LINK_OPEN = 1, // Mesh Peering Open
637 PEER_LINK_CONFIRM = 2, // Mesh Peering Confirm
638 PEER_LINK_CLOSE = 3, // Mesh Peering Close
639 GROUP_KEY_INFORM = 4, // Mesh Group Key Inform
640 GROUP_KEY_ACK = 5, // Mesh Group Key Acknowledge
641 };
642
648 {
672 };
673
679 {
686 };
687
693 {
700 };
701
707 {
718 };
719
723 typedef union {
735 } ActionValue;
736
743 void SetAction(CategoryValue type, ActionValue action);
744
756 ActionValue GetAction() const;
757
764 static std::pair<CategoryValue, ActionValue> Peek(Ptr<const Packet> pkt);
765
772 static std::pair<CategoryValue, ActionValue> Remove(Ptr<Packet> pkt);
773
778 static TypeId GetTypeId();
779 TypeId GetInstanceTypeId() const override;
780 void Print(std::ostream& os) const override;
781 uint32_t GetSerializedSize() const override;
782 void Serialize(Buffer::Iterator start) const override;
783 uint32_t Deserialize(Buffer::Iterator start) override;
784
785 private:
786 uint8_t m_category;
788};
789
795{
796 public:
798
803 static TypeId GetTypeId();
804 TypeId GetInstanceTypeId() const override;
805 void Print(std::ostream& os) const override;
806 uint32_t GetSerializedSize() const override;
807 void Serialize(Buffer::Iterator start) const override;
808 uint32_t Deserialize(Buffer::Iterator start) override;
809
813 void SetDelayedBlockAck();
823 void SetTid(uint8_t tid);
829 void SetTimeout(uint16_t timeout);
835 void SetBufferSize(uint16_t size);
841 void SetStartingSequence(uint16_t seq);
847 void SetAmsduSupport(bool supported);
848
854 uint16_t GetStartingSequence() const;
860 uint8_t GetTid() const;
866 bool IsImmediateBlockAck() const;
872 uint16_t GetTimeout() const;
878 uint16_t GetBufferSize() const;
884 bool IsAmsduSupported() const;
885
886 private:
892 uint16_t GetParameterSet() const;
898 void SetParameterSet(uint16_t params);
904 uint16_t GetStartingSequenceControl() const;
910 void SetStartingSequenceControl(uint16_t seqControl);
911
914 uint8_t m_policy;
915 uint8_t m_tid;
916 uint16_t m_bufferSize;
917 uint16_t m_timeoutValue;
918 uint16_t m_startingSeq;
919};
920
926{
927 public:
929
934 static TypeId GetTypeId();
935 TypeId GetInstanceTypeId() const override;
936 void Print(std::ostream& os) const override;
937 uint32_t GetSerializedSize() const override;
938 void Serialize(Buffer::Iterator start) const override;
939 uint32_t Deserialize(Buffer::Iterator start) override;
940
944 void SetDelayedBlockAck();
954 void SetTid(uint8_t tid);
960 void SetTimeout(uint16_t timeout);
966 void SetBufferSize(uint16_t size);
972 void SetStatusCode(StatusCode code);
978 void SetAmsduSupport(bool supported);
979
991 uint8_t GetTid() const;
997 bool IsImmediateBlockAck() const;
1003 uint16_t GetTimeout() const;
1009 uint16_t GetBufferSize() const;
1015 bool IsAmsduSupported() const;
1016
1017 private:
1023 uint16_t GetParameterSet() const;
1029 void SetParameterSet(uint16_t params);
1030
1034 uint8_t m_policy;
1035 uint8_t m_tid;
1036 uint16_t m_bufferSize;
1038};
1039
1045{
1046 public:
1048
1053 static TypeId GetTypeId();
1054
1055 TypeId GetInstanceTypeId() const override;
1056 void Print(std::ostream& os) const override;
1057 uint32_t GetSerializedSize() const override;
1058 void Serialize(Buffer::Iterator start) const override;
1059 uint32_t Deserialize(Buffer::Iterator start) override;
1060
1067 bool IsByOriginator() const;
1073 uint8_t GetTid() const;
1079 void SetTid(uint8_t tid);
1083 void SetByOriginator();
1087 void SetByRecipient();
1088
1089 private:
1095 uint16_t GetParameterSet() const;
1101 void SetParameterSet(uint16_t params);
1102
1103 uint16_t m_initiator;
1104 uint16_t m_tid;
1105 uint16_t m_reasonCode;
1106};
1107
1113{
1114 public:
1116
1121 static TypeId GetTypeId();
1122 TypeId GetInstanceTypeId() const override;
1123 void Print(std::ostream& os) const override;
1124 uint32_t GetSerializedSize() const override;
1125 void Serialize(Buffer::Iterator start) const override;
1126 uint32_t Deserialize(Buffer::Iterator start) override;
1127
1132 {
1133 uint8_t emlsrMode : 1;
1134 uint8_t emlmrMode : 1;
1136 uint8_t : 5;
1137 std::optional<uint16_t> linkBitmap;
1138 std::optional<uint8_t> mcsMapCountCtrl;
1139 // TODO Add EMLMR Supported MCS And NSS Set subfield when EMLMR is supported
1140 };
1141
1146 {
1147 uint8_t paddingDelay : 3;
1148 uint8_t transitionDelay : 3;
1149 };
1150
1156 void SetLinkIdInBitmap(uint8_t linkId);
1160 std::list<uint8_t> GetLinkBitmap() const;
1161
1162 uint8_t m_dialogToken{0};
1164 std::optional<EmlsrParamUpdate> m_emlsrParamUpdate{};
1165};
1166
1167} // namespace ns3
1168
1169#endif /* MGT_HEADERS_H */
iterator in a Buffer instance
Definition: buffer.h:100
Protocol header serialization and deserialization.
Definition: header.h:44
an EUI-48 address
Definition: mac48-address.h:46
Implement the header for management frames of type Add Block Ack request.
Definition: mgt-headers.h:795
void SetParameterSet(uint16_t params)
Set the parameter set from the given raw value.
uint16_t m_startingSeq
Starting sequence number.
Definition: mgt-headers.h:918
void Serialize(Buffer::Iterator start) const override
uint16_t GetStartingSequenceControl() const
Return the raw sequence control.
void SetStartingSequenceControl(uint16_t seqControl)
Set sequence control with the given raw value.
uint8_t m_tid
Traffic ID.
Definition: mgt-headers.h:915
static TypeId GetTypeId()
Register this type.
uint8_t m_amsduSupport
Flag if A-MSDU is supported.
Definition: mgt-headers.h:913
void SetBufferSize(uint16_t size)
Set buffer size.
void Print(std::ostream &os) const override
void SetDelayedBlockAck()
Enable delayed BlockAck.
uint8_t m_dialogToken
Not used for now.
Definition: mgt-headers.h:912
uint16_t GetParameterSet() const
Return the raw parameter set.
uint32_t Deserialize(Buffer::Iterator start) override
void SetAmsduSupport(bool supported)
Enable or disable A-MSDU support.
void SetImmediateBlockAck()
Enable immediate BlockAck.
uint16_t GetBufferSize() const
Return the buffer size.
uint16_t m_bufferSize
Buffer size.
Definition: mgt-headers.h:916
uint16_t GetTimeout() const
Return the timeout.
uint8_t GetTid() const
Return the Traffic ID (TID).
uint16_t GetStartingSequence() const
Return the starting sequence number.
TypeId GetInstanceTypeId() const override
Get the most derived TypeId for this Object.
uint32_t GetSerializedSize() const override
bool IsAmsduSupported() const
Return whether A-MSDU capability is supported.
bool IsImmediateBlockAck() const
Return whether the Block Ack policy is immediate Block Ack.
uint16_t m_timeoutValue
Timeout.
Definition: mgt-headers.h:917
void SetTimeout(uint16_t timeout)
Set timeout.
void SetTid(uint8_t tid)
Set Traffic ID (TID).
uint8_t m_policy
Block Ack policy.
Definition: mgt-headers.h:914
void SetStartingSequence(uint16_t seq)
Set the starting sequence number.
Implement the header for management frames of type Add Block Ack response.
Definition: mgt-headers.h:926
uint16_t m_bufferSize
Buffer size.
Definition: mgt-headers.h:1036
void SetTid(uint8_t tid)
Set Traffic ID (TID).
uint32_t GetSerializedSize() const override
uint8_t m_amsduSupport
Flag if A-MSDU is supported.
Definition: mgt-headers.h:1033
uint8_t m_dialogToken
Not used for now.
Definition: mgt-headers.h:1031
void Serialize(Buffer::Iterator start) const override
void SetParameterSet(uint16_t params)
Set the parameter set from the given raw value.
uint16_t GetBufferSize() const
Return the buffer size.
bool IsAmsduSupported() const
Return whether A-MSDU capability is supported.
StatusCode GetStatusCode() const
Return the status code.
void SetTimeout(uint16_t timeout)
Set timeout.
uint8_t m_policy
Block ACK policy.
Definition: mgt-headers.h:1034
TypeId GetInstanceTypeId() const override
Get the most derived TypeId for this Object.
void SetBufferSize(uint16_t size)
Set buffer size.
uint16_t m_timeoutValue
Timeout.
Definition: mgt-headers.h:1037
void Print(std::ostream &os) const override
void SetStatusCode(StatusCode code)
Set the status code.
uint8_t m_tid
Traffic ID.
Definition: mgt-headers.h:1035
uint8_t GetTid() const
Return the Traffic ID (TID).
bool IsImmediateBlockAck() const
Return whether the Block Ack policy is immediate Block Ack.
void SetAmsduSupport(bool supported)
Enable or disable A-MSDU support.
uint16_t GetParameterSet() const
Return the raw parameter set.
uint32_t Deserialize(Buffer::Iterator start) override
uint16_t GetTimeout() const
Return the timeout.
void SetDelayedBlockAck()
Enable delayed BlockAck.
void SetImmediateBlockAck()
Enable immediate BlockAck.
static TypeId GetTypeId()
Register this type.
StatusCode m_code
Status code.
Definition: mgt-headers.h:1032
Implement the header for management frames of type association request.
Definition: mgt-headers.h:161
uint32_t GetSerializedSizeImpl() const
Definition: mgt-headers.cc:200
uint32_t DeserializeImpl(Buffer::Iterator start)
Definition: mgt-headers.cc:245
CapabilityInformation & Capabilities()
Definition: mgt-headers.cc:194
uint32_t DeserializeFromPerStaProfileImpl(Buffer::Iterator start, uint16_t length, const MgtAssocRequestHeader &frame)
Deserialize this header from a Per-STA Profile subelement of a Multi-Link Element.
Definition: mgt-headers.cc:271
~MgtAssocRequestHeader() override=default
void SerializeImpl(Buffer::Iterator start) const
Definition: mgt-headers.cc:224
CapabilityInformation m_capability
Capability information.
Definition: mgt-headers.h:235
void SerializeInPerStaProfileImpl(Buffer::Iterator start, const MgtAssocRequestHeader &frame) const
Serialize this header into a Per-STA Profile subelement of a Multi-Link Element.
Definition: mgt-headers.cc:235
void SetListenInterval(uint16_t interval)
Set the listen interval.
Definition: mgt-headers.cc:182
uint16_t GetListenInterval() const
Return the listen interval.
Definition: mgt-headers.cc:176
uint16_t m_listenInterval
listen interval
Definition: mgt-headers.h:236
uint32_t GetSerializedSizeInPerStaProfileImpl(const MgtAssocRequestHeader &frame) const
Definition: mgt-headers.cc:212
static TypeId GetTypeId()
Register this type.
Definition: mgt-headers.cc:160
TypeId GetInstanceTypeId() const override
Get the most derived TypeId for this Object.
Definition: mgt-headers.cc:170
Implement the header for management frames of type association and reassociation response.
Definition: mgt-headers.h:338
CapabilityInformation & Capabilities()
Definition: mgt-headers.cc:475
static TypeId GetTypeId()
Register this type.
Definition: mgt-headers.cc:441
StatusCode GetStatusCode()
Return the status code.
Definition: mgt-headers.cc:457
~MgtAssocResponseHeader() override=default
uint32_t GetSerializedSizeImpl() const
Definition: mgt-headers.cc:493
uint32_t DeserializeFromPerStaProfileImpl(Buffer::Iterator start, uint16_t length, const MgtAssocResponseHeader &frame)
Deserialize this header from a Per-STA Profile subelement of a Multi-Link Element.
Definition: mgt-headers.cc:574
uint32_t DeserializeImpl(Buffer::Iterator start)
Definition: mgt-headers.cc:550
void SetStatusCode(StatusCode code)
Set the status code.
Definition: mgt-headers.cc:463
uint32_t GetSerializedSizeInPerStaProfileImpl(const MgtAssocResponseHeader &frame) const
Definition: mgt-headers.cc:506
void SetAssociationId(uint16_t aid)
Set the association ID.
Definition: mgt-headers.cc:481
CapabilityInformation m_capability
Capability information.
Definition: mgt-headers.h:426
void SerializeImpl(Buffer::Iterator start) const
Definition: mgt-headers.cc:527
void PrintImpl(std::ostream &os) const
Definition: mgt-headers.cc:519
TypeId GetInstanceTypeId() const override
Get the most derived TypeId for this Object.
Definition: mgt-headers.cc:451
void SerializeInPerStaProfileImpl(Buffer::Iterator start, const MgtAssocResponseHeader &frame) const
Serialize this header into a Per-STA Profile subelement of a Multi-Link Element.
Definition: mgt-headers.cc:539
uint16_t GetAssociationId() const
Return the association ID.
Definition: mgt-headers.cc:487
StatusCode m_code
Status code.
Definition: mgt-headers.h:427
Implement the header for management frames of type beacon.
Definition: mgt-headers.h:516
static TypeId GetTypeId()
Register this type.
Definition: mgt-headers.cc:144
~MgtBeaconHeader() override=default
Implement the header for management frames of type Delete Block Ack.
Definition: mgt-headers.h:1045
static TypeId GetTypeId()
Register this type.
void SetTid(uint8_t tid)
Set Traffic ID (TID).
uint32_t Deserialize(Buffer::Iterator start) override
void SetByRecipient()
Un-set the initiator bit in the DELBA.
void Print(std::ostream &os) const override
uint16_t m_initiator
initiator
Definition: mgt-headers.h:1103
void SetParameterSet(uint16_t params)
Set the parameter set from the given raw value.
TypeId GetInstanceTypeId() const override
Get the most derived TypeId for this Object.
uint8_t GetTid() const
Return the Traffic ID (TID).
uint16_t m_reasonCode
Not used for now.
Definition: mgt-headers.h:1105
bool IsByOriginator() const
Check if the initiator bit in the DELBA is set.
uint16_t GetParameterSet() const
Return the raw parameter set.
void Serialize(Buffer::Iterator start) const override
uint16_t m_tid
Traffic ID.
Definition: mgt-headers.h:1104
uint32_t GetSerializedSize() const override
void SetByOriginator()
Set the initiator bit in the DELBA.
Implement the header for Action frames of type EML Operating Mode Notification.
Definition: mgt-headers.h:1113
void SetLinkIdInBitmap(uint8_t linkId)
Set the bit position in the link bitmap corresponding to the given link.
TypeId GetInstanceTypeId() const override
Get the most derived TypeId for this Object.
uint8_t m_dialogToken
Dialog Token.
Definition: mgt-headers.h:1162
EmlControl m_emlControl
EML Control field.
Definition: mgt-headers.h:1163
uint32_t Deserialize(Buffer::Iterator start) override
static TypeId GetTypeId()
Register this type.
std::list< uint8_t > GetLinkBitmap() const
std::optional< EmlsrParamUpdate > m_emlsrParamUpdate
EMLSR Parameter Update field.
Definition: mgt-headers.h:1164
void Print(std::ostream &os) const override
uint32_t GetSerializedSize() const override
void Serialize(Buffer::Iterator start) const override
Implement the header for management frames that can be included in a Per-STA Profile subelement of a ...
Implement the header for management frames of type probe request.
Definition: mgt-headers.h:436
~MgtProbeRequestHeader() override=default
static TypeId GetTypeId()
Register this type.
Definition: mgt-headers.cc:38
TypeId GetInstanceTypeId() const override
Get the most derived TypeId for this Object.
Definition: mgt-headers.cc:48
Implement the header for management frames of type probe response.
Definition: mgt-headers.h:455
uint64_t GetTimestamp() const
Return the time stamp.
Definition: mgt-headers.cc:100
uint64_t m_beaconInterval
Beacon interval.
Definition: mgt-headers.h:507
uint32_t GetSerializedSizeImpl() const
Definition: mgt-headers.cc:106
static TypeId GetTypeId()
Register this type.
Definition: mgt-headers.cc:60
TypeId GetInstanceTypeId() const override
Get the most derived TypeId for this Object.
Definition: mgt-headers.cc:70
uint32_t DeserializeImpl(Buffer::Iterator start)
Definition: mgt-headers.cc:125
~MgtProbeResponseHeader() override=default
void SetBeaconIntervalUs(uint64_t us)
Set the beacon interval in microseconds unit.
Definition: mgt-headers.cc:82
uint64_t GetBeaconIntervalUs() const
Return the beacon interval in microseconds unit.
Definition: mgt-headers.cc:76
void SerializeImpl(Buffer::Iterator start) const
Definition: mgt-headers.cc:115
CapabilityInformation m_capability
Capability information.
Definition: mgt-headers.h:508
uint64_t m_timestamp
Timestamp.
Definition: mgt-headers.h:506
CapabilityInformation & Capabilities()
Definition: mgt-headers.cc:94
Implement the header for management frames of type reassociation request.
Definition: mgt-headers.h:245
Mac48Address m_currentApAddr
Address of the current access point.
Definition: mgt-headers.h:327
uint16_t m_listenInterval
listen interval
Definition: mgt-headers.h:329
uint16_t GetListenInterval() const
Return the listen interval.
Definition: mgt-headers.cc:308
static TypeId GetTypeId()
Register this type.
Definition: mgt-headers.cc:292
CapabilityInformation & Capabilities()
Definition: mgt-headers.cc:326
void PrintImpl(std::ostream &os) const
Definition: mgt-headers.cc:363
void SerializeInPerStaProfileImpl(Buffer::Iterator start, const MgtReassocRequestHeader &frame) const
Serialize this header into a Per-STA Profile subelement of a Multi-Link Element.
Definition: mgt-headers.cc:382
uint32_t DeserializeImpl(Buffer::Iterator start)
Definition: mgt-headers.cc:392
void SerializeImpl(Buffer::Iterator start) const
Definition: mgt-headers.cc:370
void SetListenInterval(uint16_t interval)
Set the listen interval.
Definition: mgt-headers.cc:314
~MgtReassocRequestHeader() override=default
CapabilityInformation m_capability
Capability information.
Definition: mgt-headers.h:328
uint32_t GetSerializedSizeInPerStaProfileImpl(const MgtReassocRequestHeader &frame) const
Definition: mgt-headers.cc:351
uint32_t DeserializeFromPerStaProfileImpl(Buffer::Iterator start, uint16_t length, const MgtReassocRequestHeader &frame)
Deserialize this header from a Per-STA Profile subelement of a Multi-Link Element.
Definition: mgt-headers.cc:419
uint32_t GetSerializedSizeImpl() const
Definition: mgt-headers.cc:338
void SetCurrentApAddress(Mac48Address currentApAddr)
Set the address of the current access point.
Definition: mgt-headers.cc:332
TypeId GetInstanceTypeId() const override
Get the most derived TypeId for this Object.
Definition: mgt-headers.cc:302
network packets
Definition: packet.h:239
Smart pointer class similar to boost::intrusive_ptr.
Definition: ptr.h:78
The Reduced Neighbor Report element.
The IEEE 802.11 SSID Information Element.
Definition: ssid.h:36
Status code for association response.
Definition: status-code.h:32
The Supported Rates Information Element.
a unique identifier for an interface.
Definition: type-id.h:59
See IEEE 802.11 chapter 7.3.1.11 Header format: | category: 1 | action value: 1 |.
Definition: mgt-headers.h:539
MultihopActionValue
MultihopActionValue enumeration.
Definition: mgt-headers.h:628
uint32_t GetSerializedSize() const override
SelfProtectedActionValue
SelfProtectedActionValue enumeration.
Definition: mgt-headers.h:635
uint8_t m_category
Category of the action.
Definition: mgt-headers.h:786
RadioMeasurementActionValue
RadioMeasurementActionValue enumeration.
Definition: mgt-headers.h:598
TypeId GetInstanceTypeId() const override
Get the most derived TypeId for this Object.
PublicActionValue
PublicActionValue enumeration.
Definition: mgt-headers.h:591
CategoryValue
CategoryValue enumeration.
Definition: mgt-headers.h:551
BlockAckActionValue
Block Ack Action field values See 802.11 Table 8-202.
Definition: mgt-headers.h:583
UnprotectedDmgActionValue
Unprotected DMG action field values See 802.11ad Table 8-281ae.
Definition: mgt-headers.h:693
uint8_t m_actionValue
Action value.
Definition: mgt-headers.h:787
uint32_t Deserialize(Buffer::Iterator start) override
MeshActionValue
MeshActionValue enumeration.
Definition: mgt-headers.h:609
static std::pair< CategoryValue, ActionValue > Peek(Ptr< const Packet > pkt)
Peek an Action header from the given packet.
void Print(std::ostream &os) const override
static std::pair< CategoryValue, ActionValue > Remove(Ptr< Packet > pkt)
Remove an Action header from the given packet.
static TypeId GetTypeId()
Register this type.
void SetAction(CategoryValue type, ActionValue action)
Set action for this Action header.
Definition: mgt-headers.cc:601
~WifiActionHeader() override
Definition: mgt-headers.cc:596
void Serialize(Buffer::Iterator start) const override
FstActionValue
FST Action field values See 802.11ad Table 8-281x.
Definition: mgt-headers.h:679
DmgActionValue
DMG Action field values See 802.11ad Table 8-281b.
Definition: mgt-headers.h:648
@ DMG_MULTI_RELAY_CHANNEL_MEASUREMENT_REQUEST
Definition: mgt-headers.h:659
@ DMG_MULTI_RELAY_CHANNEL_MEASUREMENT_REPORT
Definition: mgt-headers.h:660
CategoryValue GetCategory() const
Return the category value.
Definition: mgt-headers.cc:658
ActionValue GetAction() const
Return the action value.
Definition: mgt-headers.cc:693
ProtectedEhtActionValue
Protected EHT action field values See 802.11be D3.0 Table 9-623c.
Definition: mgt-headers.h:707
@ PROTECTED_EHT_EML_OPERATING_MODE_NOTIFICATION
Definition: mgt-headers.h:714
@ PROTECTED_EHT_EPCS_PRIORITY_ACCESS_TEARDOWN
Definition: mgt-headers.h:713
@ PROTECTED_EHT_TID_TO_LINK_MAPPING_TEARDOWN
Definition: mgt-headers.h:710
@ PROTECTED_EHT_TID_TO_LINK_MAPPING_RESPONSE
Definition: mgt-headers.h:709
@ PROTECTED_EHT_EPCS_PRIORITY_ACCESS_ENABLE_RESPONSE
Definition: mgt-headers.h:712
@ PROTECTED_EHT_MULTI_LINK_OPERATION_UPDATE_RESPONSE
Definition: mgt-headers.h:717
@ PROTECTED_EHT_TID_TO_LINK_MAPPING_REQUEST
Definition: mgt-headers.h:708
@ PROTECTED_EHT_EPCS_PRIORITY_ACCESS_ENABLE_REQUEST
Definition: mgt-headers.h:711
@ PROTECTED_EHT_MULTI_LINK_OPERATION_UPDATE_REQUEST
Definition: mgt-headers.h:716
QosActionValue
QosActionValue enumeration.
Definition: mgt-headers.h:570
Implement the header for management frames.
Every class exported by the ns3 library is enclosed in the ns3 namespace.
std::tuple< Ssid, SupportedRates, std::optional< ExtendedSupportedRatesIE >, std::optional< HtCapabilities >, std::optional< ExtendedCapabilities >, std::optional< VhtCapabilities >, std::optional< HeCapabilities >, std::optional< MultiLinkElement >, std::optional< EhtCapabilities >, std::optional< TidToLinkMapping > > AssocRequestElems
List of Information Elements included in Association Request frames.
Definition: mgt-headers.h:136
std::tuple< Ssid, SupportedRates, std::optional< ExtendedSupportedRatesIE >, std::optional< HtCapabilities >, std::optional< ExtendedCapabilities >, std::optional< VhtCapabilities >, std::optional< HeCapabilities >, std::optional< EhtCapabilities > > ProbeRequestElems
List of Information Elements included in Probe Request frames.
Definition: mgt-headers.h:103
std::tuple< Ssid, SupportedRates, std::optional< DsssParameterSet >, std::optional< ErpInformation >, std::optional< ExtendedSupportedRatesIE >, std::optional< EdcaParameterSet >, std::optional< HtCapabilities >, std::optional< HtOperation >, std::optional< ExtendedCapabilities >, std::optional< VhtCapabilities >, std::optional< VhtOperation >, std::optional< ReducedNeighborReport >, std::optional< HeCapabilities >, std::optional< HeOperation >, std::optional< MuEdcaParameterSet >, std::optional< MultiLinkElement >, std::optional< EhtCapabilities >, std::optional< EhtOperation >, std::optional< TidToLinkMapping > > ProbeResponseElems
List of Information Elements included in Probe Response frames.
Definition: mgt-headers.h:124
std::tuple< SupportedRates, std::optional< ExtendedSupportedRatesIE >, std::optional< EdcaParameterSet >, std::optional< HtCapabilities >, std::optional< HtOperation >, std::optional< ExtendedCapabilities >, std::optional< VhtCapabilities >, std::optional< VhtOperation >, std::optional< HeCapabilities >, std::optional< HeOperation >, std::optional< MuEdcaParameterSet >, std::optional< MultiLinkElement >, std::optional< EhtCapabilities >, std::optional< EhtOperation >, std::optional< TidToLinkMapping > > AssocResponseElems
List of Information Elements included in Association Response frames.
Definition: mgt-headers.h:153
ns3::Time timeout
Inspect a type to deduce whether it is an Information Element that can be included in a Per-STA Profi...
std::optional< uint8_t > mcsMapCountCtrl
MCS Map Count Control.
Definition: mgt-headers.h:1138
uint8_t emlsrParamUpdateCtrl
EMLSR Parameter Update Control.
Definition: mgt-headers.h:1135
std::optional< uint16_t > linkBitmap
EMLSR/EMLMR Link Bitmap.
Definition: mgt-headers.h:1137
typedef for union of different ActionValues
Definition: mgt-headers.h:723
UnprotectedDmgActionValue unprotectedDmgAction
unprotected dmg
Definition: mgt-headers.h:733
ProtectedEhtActionValue protectedEhtAction
protected eht
Definition: mgt-headers.h:734
SelfProtectedActionValue selfProtectedAction
self protected
Definition: mgt-headers.h:728
MultihopActionValue multihopAction
multi hop
Definition: mgt-headers.h:729
RadioMeasurementActionValue radioMeasurementAction
radio measurement
Definition: mgt-headers.h:726
PublicActionValue publicAction
public
Definition: mgt-headers.h:727
MeshActionValue meshAction
mesh
Definition: mgt-headers.h:730
BlockAckActionValue blockAck
block ack
Definition: mgt-headers.h:725