A Discrete-Event Network Simulator
API
ie-dot11s-peer-management.h
Go to the documentation of this file.
1 /*
2  * Copyright (c) 2008,2009 IITP RAS
3  *
4  * This program is free software; you can redistribute it and/or modify
5  * it under the terms of the GNU General Public License version 2 as
6  * published by the Free Software Foundation;
7  *
8  * This program is distributed in the hope that it will be useful,
9  * but WITHOUT ANY WARRANTY; without even the implied warranty of
10  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11  * GNU General Public License for more details.
12  *
13  * You should have received a copy of the GNU General Public License
14  * along with this program; if not, write to the Free Software
15  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
16  *
17  * Authors: Kirill Andreev <andreev@iitp.ru>
18  * Aleksey Kovalenko <kovalenko@iitp.ru>
19  */
20 
21 #ifndef IE_DOT11S_PEER_MANAGEMENT_H
22 #define IE_DOT11S_PEER_MANAGEMENT_H
23 
24 #include "ns3/mesh-information-element-vector.h"
25 
26 namespace ns3
27 {
28 namespace dot11s
29 {
30 
36 {
37  REASON11S_PEERING_CANCELLED = 52, // according to IEEE 802.11 - 2012
47 };
48 
51 {
52  public:
54 
56  enum Subtype
57  {
58  PEER_OPEN = 1,
61  };
62 
67  void SetPeerOpen(uint16_t localLinkId);
74  void SetPeerClose(uint16_t localLinkID, uint16_t peerLinkId, PmpReasonCode reasonCode);
80  void SetPeerConfirm(uint16_t localLinkID, uint16_t peerLinkId);
81 
91  uint16_t GetLocalLinkId() const;
96  uint16_t GetPeerLinkId() const;
101  bool SubtypeIsOpen() const;
106  bool SubtypeIsClose() const;
111  bool SubtypeIsConfirm() const;
116  uint8_t GetSubtype() const;
117 
118  // Inherited from WifiInformationElement
119  WifiInformationElementId ElementId() const override;
120  uint16_t GetInformationFieldSize() const override;
121  void SerializeInformationField(Buffer::Iterator i) const override;
122  uint16_t DeserializeInformationField(Buffer::Iterator i, uint16_t length) override;
123  void Print(std::ostream& os) const override;
124 
125  private:
126  uint8_t m_length;
127  uint8_t m_subtype;
128  uint16_t m_localLinkId;
132  uint16_t m_peerLinkId;
144  friend bool operator==(const IePeerManagement& a, const IePeerManagement& b);
145 };
146 
147 bool operator==(const IePeerManagement& a, const IePeerManagement& b);
148 std::ostream& operator<<(std::ostream& os, const IePeerManagement& peerMan);
149 } // namespace dot11s
150 } // namespace ns3
151 
152 #endif /* IE_DOT11S_PEER_MANAGEMENT_H */
iterator in a Buffer instance
Definition: buffer.h:100
Information element, as defined in 802.11-2007 standard.
according to IEEE 802.11 - 2012
uint16_t m_peerLinkId
Present within confirm and may be present in close.
bool SubtypeIsOpen() const
Subtype is open function.
PmpReasonCode m_reasonCode
Present only within close frame.
bool SubtypeIsClose() const
Subtype is close function.
PmpReasonCode GetReasonCode() const
Get reason code function.
void SerializeInformationField(Buffer::Iterator i) const override
Serialize information (i.e., the body of the IE, not including the Element ID and length octets)
uint16_t GetInformationFieldSize() const override
Length of serialized information (i.e., the length of the body of the IE, not including the Element I...
bool SubtypeIsConfirm() const
Subtype is confirm function.
void SetPeerConfirm(uint16_t localLinkID, uint16_t peerLinkId)
Set peer confirm function.
uint8_t GetSubtype() const
Get subtype function.
uint16_t GetPeerLinkId() const
Get peer link ID function.
void SetPeerOpen(uint16_t localLinkId)
Set peer open function.
WifiInformationElementId ElementId() const override
Get the wifi information element ID.
friend bool operator==(const IePeerManagement &a, const IePeerManagement &b)
equality operator
void SetPeerClose(uint16_t localLinkID, uint16_t peerLinkId, PmpReasonCode reasonCode)
Set peer close function.
void Print(std::ostream &os) const override
Generate human-readable form of IE.
uint16_t GetLocalLinkId() const
Get local link ID function.
uint16_t DeserializeInformationField(Buffer::Iterator i, uint16_t length) override
Deserialize information (i.e., the body of the IE, not including the Element ID and length octets)
PmpReasonCode
Codes used by 802.11s Peer Management Protocol.
bool operator==(const MeshHeader &a, const MeshHeader &b)
std::ostream & operator<<(std::ostream &os, const IeBeaconTiming &a)
Every class exported by the ns3 library is enclosed in the ns3 namespace.
uint8_t WifiInformationElementId
This type is used to represent an Information Element ID.