View | Details | Raw Unified | Return to bug 1363
Collapse All | Expand All

(-)a/src/mesh/doc/mesh.h (-1 / +1 lines)
 Lines 15-21    Link Here 
15
 * along with this program; if not, write to the Free Software
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
16
 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
17
 *
17
 *
18
 * Authors:     Kirill Andreev <andreev@itp.ru>      
18
 * Authors:     Kirill Andreev <andreev@itp.ru>
19
 *              Aleksander Safonov <safa@iitp.ru>
19
 *              Aleksander Safonov <safa@iitp.ru>
20
 *              Pavel Boyko <boyko@iitp.ru>
20
 *              Pavel Boyko <boyko@iitp.ru>
21
 *
21
 *
(-)a/src/mesh/examples/mesh.cc (-1 / +8 lines)
 Lines 52-57    Link Here 
52
#include "ns3/mesh-module.h"
52
#include "ns3/mesh-module.h"
53
#include "ns3/mobility-module.h"
53
#include "ns3/mobility-module.h"
54
#include "ns3/mesh-helper.h"
54
#include "ns3/mesh-helper.h"
55
#include "ns3/trace-helper.h"
55
56
56
#include <iostream>
57
#include <iostream>
57
#include <sstream>
58
#include <sstream>
 Lines 90-95    Link Here 
90
  Ipv4InterfaceContainer interfaces;
91
  Ipv4InterfaceContainer interfaces;
91
  // MeshHelper. Report is not static methods
92
  // MeshHelper. Report is not static methods
92
  MeshHelper mesh;
93
  MeshHelper mesh;
94
95
  AsciiTraceHelper ascii;
93
private:
96
private:
94
  /// Create nodes and setup their mobility
97
  /// Create nodes and setup their mobility
95
  void CreateNodes ();
98
  void CreateNodes ();
 Lines 106-112    Link Here 
106
  m_step (100.0),
109
  m_step (100.0),
107
  m_randomStart (0.1),
110
  m_randomStart (0.1),
108
  m_totalTime (100.0),
111
  m_totalTime (100.0),
109
  m_packetInterval (0.1),
112
  m_packetInterval (1),
110
  m_packetSize (1024),
113
  m_packetSize (1024),
111
  m_nIfaces (1),
114
  m_nIfaces (1),
112
  m_chan (true),
115
  m_chan (true),
 Lines 146-151    Link Here 
146
  /*
149
  /*
147
   * Create m_ySize*m_xSize stations to form a grid topology
150
   * Create m_ySize*m_xSize stations to form a grid topology
148
   */
151
   */
152
  ns3::PacketMetadata::Enable ();
149
  nodes.Create (m_ySize*m_xSize);
153
  nodes.Create (m_ySize*m_xSize);
150
  // Configure YansWifiChannel
154
  // Configure YansWifiChannel
151
  YansWifiPhyHelper wifiPhy = YansWifiPhyHelper::Default ();
155
  YansWifiPhyHelper wifiPhy = YansWifiPhyHelper::Default ();
 Lines 193-198    Link Here 
193
  mobility.Install (nodes);
197
  mobility.Install (nodes);
194
  if (m_pcap)
198
  if (m_pcap)
195
    wifiPhy.EnablePcapAll (std::string ("mp-"));
199
    wifiPhy.EnablePcapAll (std::string ("mp-"));
200
201
  wifiPhy.EnableAsciiAll (ascii.CreateFileStream ("test.tr"));
202
196
}
203
}
197
void
204
void
198
MeshTest::InstallInternetStack ()
205
MeshTest::InstallInternetStack ()
(-)a/src/mesh/model/dot11s/peer-link-frame.cc (+270 lines)
26
26
27
namespace ns3 {
27
namespace ns3 {
28
namespace dot11s {
28
namespace dot11s {
29
30
NS_OBJECT_ENSURE_REGISTERED (PeerLinkOpenFrame);
31
32
PeerLinkOpenFrame::PeerLinkOpenFrame () :
33
  m_protocolVersion (IePeeringProtocol ()),
34
  m_capability (0),
35
  m_supportedRates (SupportedRates  ()),
36
  m_meshId (IeMeshId ()),
37
  m_config (IeConfiguration ())
38
{}
39
40
PeerLinkOpenFrame::PeerLinkOpenFrame (const IePeeringProtocol & protocol,
41
                                      uint16_t capability,
42
                                      const SupportedRates & supportedRates,
43
                                      const IeMeshId & meshId,
44
                                      const IeConfiguration & config) :
45
  m_protocolVersion (protocol),
46
  m_capability (capability),
47
  m_supportedRates (supportedRates),
48
  m_meshId (meshId),
49
  m_config (config)
50
{}
51
52
TypeId PeerLinkOpenFrame::GetTypeId ()
53
{
54
  static TypeId tid = TypeId ("ns3::dot11s::PeerLinkOpenFrame")
55
    .SetParent<Header> ()
56
    .AddConstructor<PeerLinkOpenFrame> ();
57
  return tid;
58
}
59
60
TypeId
61
PeerLinkOpenFrame::GetInstanceTypeId () const
62
{
63
  return GetTypeId ();
64
}
65
void
66
PeerLinkOpenFrame::Print (std::ostream &os) const
67
{
68
69
}
70
71
uint32_t
72
PeerLinkOpenFrame::GetSerializedSize () const
73
{
74
  return m_protocolVersion.GetSerializedSize ()
75
         + 2 // capability
76
         + m_supportedRates.GetSerializedSize ()
77
         + m_supportedRates.extended.GetSerializedSize () +
78
         +m_meshId.GetSerializedSize ()
79
         + m_config.GetSerializedSize ();
80
}
81
82
void
83
PeerLinkOpenFrame::Serialize (Buffer::Iterator start) const
84
{
85
  Buffer::Iterator i = start;
86
  i = m_protocolVersion.Serialize (i);
87
  i.WriteHtolsbU16 (m_capability);
88
  i = m_supportedRates.Serialize (i);
89
  i = m_supportedRates.extended.Serialize (i);
90
  i = m_meshId.Serialize (i);
91
  i = m_config.Serialize (i);
92
}
93
94
uint32_t
95
PeerLinkOpenFrame::Deserialize (Buffer::Iterator start)
96
{
97
  Buffer::Iterator i = start;
98
  //1. Read protocol:
99
  uint8_t id = i.ReadU8 ();
100
  uint8_t length = i.ReadU8 ();
101
  m_protocolVersion.DeserializeInformationField (i, length);
102
  i.Next (m_protocolVersion.GetInformationFieldSize ());
103
  // 2. Read capability:
104
  m_capability = i.ReadLsbtohU16 ();
105
  // 3. read supported rates:
106
  i = m_supportedRates.Deserialize (i);
107
  i = m_supportedRates.extended.DeserializeIfPresent (i);
108
  // 4. read MESH ID
109
  id = i.ReadU8 ();
110
  length = i.ReadU8 ();
111
  m_meshId.DeserializeInformationField (i, length);
112
  i.Next (m_meshId.GetInformationFieldSize ());
113
  // 5. Read Configuration:
114
  id = i.ReadU8 ();
115
  length = i.ReadU8 ();
116
  m_config.DeserializeInformationField (i, length);
117
  i.Next (m_config.GetInformationFieldSize ());
118
  return i.GetDistanceFrom (start);
119
}
120
121
NS_OBJECT_ENSURE_REGISTERED (PeerLinkConfirmFrame);
122
123
PeerLinkConfirmFrame::PeerLinkConfirmFrame () :
124
  m_protocolVersion (IePeeringProtocol ()),
125
  m_capability (0),
126
  m_aid (0),
127
  m_supportedRates (SupportedRates  ()),
128
  m_config (IeConfiguration ())
129
{}
130
131
PeerLinkConfirmFrame::PeerLinkConfirmFrame (const IePeeringProtocol & protocol,
132
                                            uint16_t capability,
133
                                            uint16_t assocId,
134
                                            const SupportedRates & supportedRates,
135
                                            const IeConfiguration & config) :
136
  m_protocolVersion (protocol),
137
  m_capability (capability),
138
  m_aid (assocId),
139
  m_supportedRates (supportedRates),
140
  m_config (config)
141
{}
142
143
TypeId PeerLinkConfirmFrame::GetTypeId ()
144
{
145
  static TypeId tid = TypeId ("ns3::dot11s::PeerLinkConfirmFrame")
146
    .SetParent<Header> ()
147
    .AddConstructor<PeerLinkConfirmFrame> ();
148
  return tid;
149
}
150
151
TypeId
152
PeerLinkConfirmFrame::GetInstanceTypeId () const
153
{
154
  return GetTypeId ();
155
}
156
void
157
PeerLinkConfirmFrame::Print (std::ostream &os) const
158
{
159
160
}
161
162
uint32_t
163
PeerLinkConfirmFrame::GetSerializedSize () const
164
{
165
  return m_protocolVersion.GetSerializedSize ()
166
         + 2 // capability
167
         + 2 // aid
168
         + m_supportedRates.GetSerializedSize ()
169
         + m_supportedRates.extended.GetSerializedSize () +
170
         +m_config.GetSerializedSize ();
171
}
172
173
void
174
PeerLinkConfirmFrame::Serialize (Buffer::Iterator start) const
175
{
176
  Buffer::Iterator i = start;
177
  i = m_protocolVersion.Serialize (i);
178
  i.WriteHtolsbU16 (m_capability);
179
  i.WriteHtolsbU16 (m_aid);
180
  i = m_supportedRates.Serialize (i);
181
  i = m_supportedRates.extended.Serialize (i);
182
  i = m_config.Serialize (i);
183
}
184
185
uint32_t
186
PeerLinkConfirmFrame::Deserialize (Buffer::Iterator start)
187
{
188
  Buffer::Iterator i = start;
189
  //1. Read protocol:
190
  uint8_t id = i.ReadU8 ();
191
  uint8_t length = i.ReadU8 ();
192
  m_protocolVersion.DeserializeInformationField (i, length);
193
  i.Next (m_protocolVersion.GetInformationFieldSize ());
194
  // 2. Read capability:
195
  m_capability = i.ReadLsbtohU16 ();
196
  // 3. Read AID
197
  m_aid = i.ReadLsbtohU16 ();
198
  // 4. read supported rates:
199
  i = m_supportedRates.Deserialize (i);
200
  i = m_supportedRates.extended.DeserializeIfPresent (i);
201
  // 5. Read Configuration:
202
  id = i.ReadU8 ();
203
  length = i.ReadU8 ();
204
  m_config.DeserializeInformationField (i, length);
205
  i.Next (m_config.GetInformationFieldSize ());
206
  return i.GetDistanceFrom (start);
207
}
208
209
210
PeerLinkCloseFrame::PeerLinkCloseFrame () :
211
  m_protocolVersion (IePeeringProtocol ()),
212
  m_meshId (IeMeshId ()),
213
  m_reasonCode (0)
214
{}
215
PeerLinkCloseFrame::PeerLinkCloseFrame (const IePeeringProtocol & protocol,
216
                                        const IeMeshId & meshId,
217
                                        uint16_t reason) :
218
  m_protocolVersion (protocol),
219
  m_meshId (meshId),
220
  m_reasonCode (reason)
221
{}
222
223
TypeId
224
PeerLinkCloseFrame::GetTypeId ()
225
{
226
  static TypeId tid = TypeId ("ns3::dot11s::PeerLinkCloseFrame")
227
    .SetParent<Header> ()
228
    .AddConstructor<PeerLinkCloseFrame> ();
229
  return tid;
230
}
231
232
TypeId
233
PeerLinkCloseFrame::GetInstanceTypeId () const
234
{
235
  return GetTypeId ();
236
}
237
238
void
239
PeerLinkCloseFrame::Print (std::ostream &os) const
240
{
241
}
242
243
uint32_t
244
PeerLinkCloseFrame::GetSerializedSize () const
245
{
246
  return m_protocolVersion.GetSerializedSize () +
247
         m_meshId.GetSerializedSize () +
248
         2;
249
}
250
251
void
252
PeerLinkCloseFrame::Serialize (Buffer::Iterator start) const
253
{
254
  Buffer::Iterator i = start;
255
  i = m_protocolVersion.Serialize (i);
256
  i = m_meshId.Serialize (i);
257
  i.WriteHtolsbU16 (m_reasonCode);
258
}
259
260
uint32_t
261
PeerLinkCloseFrame::Deserialize (Buffer::Iterator start)
262
{
263
  Buffer::Iterator i = start;
264
  //1. Read protocol:
265
  uint8_t id = i.ReadU8 ();
266
  uint8_t length = i.ReadU8 ();
267
  m_protocolVersion.DeserializeInformationField (i, length);
268
  // 2. read MESH ID
269
  id = i.ReadU8 ();
270
  length = i.ReadU8 ();
271
  m_meshId.DeserializeInformationField (i, length);
272
  m_reasonCode = i.ReadLsbtohU16 ();
273
  return i.GetDistanceFrom (start);
274
}
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
29
NS_OBJECT_ENSURE_REGISTERED (PeerLinkFrameStart);
297
NS_OBJECT_ENSURE_REGISTERED (PeerLinkFrameStart);
30
298
31
PeerLinkFrameStart::PeerLinkFrameStart () :
299
PeerLinkFrameStart::PeerLinkFrameStart () :
82
  retval.reasonCode = m_reasonCode;
350
  retval.reasonCode = m_reasonCode;
83
  return retval;
351
  return retval;
84
}
352
}
353
85
TypeId
354
TypeId
86
PeerLinkFrameStart::GetTypeId ()
355
PeerLinkFrameStart::GetTypeId ()
87
{
356
{
172
PeerLinkFrameStart::Deserialize (Buffer::Iterator start)
441
PeerLinkFrameStart::Deserialize (Buffer::Iterator start)
173
{
442
{
174
  Buffer::Iterator i = start;
443
  Buffer::Iterator i = start;
444
  std::cout << "m_subtype = " << (uint32_t)m_subtype << std::endl;
175
  NS_ASSERT (m_subtype < 3);
445
  NS_ASSERT (m_subtype < 3);
176
  {
446
  {
177
    uint8_t id = i.ReadU8 ();
447
    uint8_t id = i.ReadU8 ();
(-)a/src/mesh/model/dot11s/peer-link-frame.h (-2 / +84 lines)
42
 * - Supported rates
42
 * - Supported rates
43
 * - Mesh ID of mesh
43
 * - Mesh ID of mesh
44
 */
44
 */
45
46
class PeerLinkOpenFrame : public Header
47
{
48
public:
49
  PeerLinkOpenFrame ();
50
  PeerLinkOpenFrame (const IePeeringProtocol & protocol,
51
                     uint16_t capability,
52
                     const SupportedRates & supportedRates,
53
                     const IeMeshId & meshId,
54
                     const IeConfiguration & config);
55
  ///\name Inherited from header:
56
  ///\{
57
  static TypeId GetTypeId ();
58
  TypeId GetInstanceTypeId () const;
59
  void Print (std::ostream &os) const;
60
  uint32_t GetSerializedSize () const;
61
  void Serialize (Buffer::Iterator start) const;
62
  uint32_t Deserialize (Buffer::Iterator start);
63
  ///\}
64
private:
65
  /// 3 octets protocol version
66
  IePeeringProtocol m_protocolVersion;
67
  /// capability fiels
68
  uint16_t m_capability;
69
  /// Supported rates:
70
  SupportedRates m_supportedRates;
71
  /// Mesh network identificator
72
  IeMeshId m_meshId;
73
  /// Mesh configuration:
74
  IeConfiguration m_config;     //open and confirm
75
};
76
77
class PeerLinkConfirmFrame : public Header
78
{
79
public:
80
  PeerLinkConfirmFrame ();
81
  PeerLinkConfirmFrame (const IePeeringProtocol & protocol,
82
                        uint16_t capability,
83
                        uint16_t assocId,
84
                        const SupportedRates & supportedRates,
85
                        const IeConfiguration & config);
86
  ///\name Inherited from header:
87
  ///\{
88
  static TypeId GetTypeId ();
89
  TypeId GetInstanceTypeId () const;
90
  void Print (std::ostream &os) const;
91
  uint32_t GetSerializedSize () const;
92
  void Serialize (Buffer::Iterator start) const;
93
  uint32_t Deserialize (Buffer::Iterator start);
94
  ///\}
95
private:
96
  /// 3 octets protocol version
97
  IePeeringProtocol m_protocolVersion;
98
  /// capability fiels
99
  uint16_t m_capability;
100
  uint16_t m_aid;
101
  SupportedRates m_supportedRates;
102
  IeConfiguration m_config;
103
};
104
105
class PeerLinkCloseFrame : public Header
106
{
107
public:
108
  PeerLinkCloseFrame ();
109
  PeerLinkCloseFrame (const IePeeringProtocol & protocol,
110
                      const IeMeshId & meshId,
111
                      uint16_t reason);
112
  ///\name Inherited from header:
113
  ///\{
114
  static TypeId GetTypeId ();
115
  TypeId GetInstanceTypeId () const;
116
  void Print (std::ostream &os) const;
117
  uint32_t GetSerializedSize () const;
118
  void Serialize (Buffer::Iterator start) const;
119
  uint32_t Deserialize (Buffer::Iterator start);
120
  ///\}
121
private:
122
  IePeeringProtocol m_protocolVersion;
123
  IeMeshId m_meshId;
124
  uint16_t m_reasonCode;
125
};
126
45
class PeerLinkFrameStart : public Header
127
class PeerLinkFrameStart : public Header
46
{
128
{
47
public:
129
public:
64
  void SetPlinkFrameStart (PlinkFrameStartFields);
146
  void SetPlinkFrameStart (PlinkFrameStartFields);
65
  PlinkFrameStartFields GetFields () const;
147
  PlinkFrameStartFields GetFields () const;
66
  /** \name Inherited from header:
148
  /** \name Inherited from header:
67
   * \{
149
    * \{
68
   */
150
    */
69
  static  TypeId   GetTypeId ();
151
  static  TypeId   GetTypeId ();
70
  virtual TypeId   GetInstanceTypeId () const;
152
  virtual TypeId   GetInstanceTypeId () const;
71
  virtual void     Print (std::ostream &os) const;
153
  virtual void     Print (std::ostream &os) const;
(-)a/src/mesh/model/dot11s/peer-management-protocol-mac.cc (-26 / +20 lines)
 Lines 167-184    Link Here 
167
    {
167
    {
168
      return true;
168
      return true;
169
    }
169
    }
170
  else
170
  if (m_protocol->IsActiveLink (m_ifIndex, header.GetAddr1 ()))
171
    {
171
    {
172
      if (m_protocol->IsActiveLink (m_ifIndex, header.GetAddr1 ()))
172
      return true;
173
        {
174
          return true;
175
        }
176
      else
177
        {
178
          m_stats.dropped++;
179
          return false;
180
        }
181
    }
173
    }
174
  m_stats.dropped++;
175
  return false;
182
}
176
}
183
void
177
void
184
PeerManagementProtocolMac::UpdateBeacon (MeshWifiBeacon & beacon) const
178
PeerManagementProtocolMac::UpdateBeacon (MeshWifiBeacon & beacon) const
 Lines 202-213    Link Here 
202
  MeshInformationElementVector elements;
196
  MeshInformationElementVector elements;
203
  elements.AddInformationElement (Ptr<IePeerManagement> (&peerElement));
197
  elements.AddInformationElement (Ptr<IePeerManagement> (&peerElement));
204
  packet->AddHeader (elements);
198
  packet->AddHeader (elements);
205
  PeerLinkFrameStart::PlinkFrameStartFields fields;
206
  fields.rates = m_parent->GetSupportedRates ();
207
  fields.capability = 0;
208
  fields.meshId = *(m_protocol->GetMeshId ());
209
  fields.config = meshConfig;
210
  PeerLinkFrameStart plinkFrame;
211
  //Create an 802.11 frame header:
199
  //Create an 802.11 frame header:
212
  //Send management frame to MAC:
200
  //Send management frame to MAC:
213
  WifiActionHeader actionHdr;
201
  WifiActionHeader actionHdr;
 Lines 216-251    Link Here 
216
      m_stats.txOpen++;
204
      m_stats.txOpen++;
217
      WifiActionHeader::ActionValue action;
205
      WifiActionHeader::ActionValue action;
218
      action.peerLink = WifiActionHeader::PEER_LINK_OPEN;
206
      action.peerLink = WifiActionHeader::PEER_LINK_OPEN;
219
      fields.subtype = WifiActionHeader::PEER_LINK_OPEN;
220
      actionHdr.SetAction (WifiActionHeader::MESH_PEERING_MGT, action);
207
      actionHdr.SetAction (WifiActionHeader::MESH_PEERING_MGT, action);
208
      packet->AddHeader (PeerLinkOpenFrame (IePeeringProtocol (), 0, m_parent->GetSupportedRates (), *(m_protocol->GetMeshId ()), meshConfig));
221
    }
209
    }
222
  if (peerElement.SubtypeIsConfirm ())
210
  else if (peerElement.SubtypeIsConfirm ())
223
    {
211
    {
224
      m_stats.txConfirm++;
212
      m_stats.txConfirm++;
225
      WifiActionHeader::ActionValue action;
213
      WifiActionHeader::ActionValue action;
226
      action.peerLink = WifiActionHeader::PEER_LINK_CONFIRM;
214
      action.peerLink = WifiActionHeader::PEER_LINK_CONFIRM;
227
      fields.aid = aid;
228
      fields.subtype = WifiActionHeader::PEER_LINK_CONFIRM;
229
      actionHdr.SetAction (WifiActionHeader::MESH_PEERING_MGT, action);
215
      actionHdr.SetAction (WifiActionHeader::MESH_PEERING_MGT, action);
216
      packet->AddHeader (PeerLinkConfirmFrame (IePeeringProtocol (), 0, aid, m_parent->GetSupportedRates (), meshConfig));
230
    }
217
    }
231
  if (peerElement.SubtypeIsClose ())
218
  else if (peerElement.SubtypeIsClose ())
232
    {
219
    {
233
      m_stats.txClose++;
220
      m_stats.txClose++;
234
      WifiActionHeader::ActionValue action;
221
      WifiActionHeader::ActionValue action;
235
      action.peerLink = WifiActionHeader::PEER_LINK_CLOSE;
222
      action.peerLink = WifiActionHeader::PEER_LINK_CLOSE;
236
      fields.subtype = WifiActionHeader::PEER_LINK_CLOSE;
237
      fields.reasonCode = peerElement.GetReasonCode ();
238
      actionHdr.SetAction (WifiActionHeader::MESH_PEERING_MGT, action);
223
      actionHdr.SetAction (WifiActionHeader::MESH_PEERING_MGT, action);
224
      packet->AddHeader (PeerLinkCloseFrame (IePeeringProtocol (), *(m_protocol->GetMeshId ()), peerElement.GetReasonCode ()));
239
    }
225
    }
240
  plinkFrame.SetPlinkFrameStart (fields);
226
  else
241
  packet->AddHeader (plinkFrame);
227
    {
228
      NS_FATAL_ERROR ("Can not determine the type of peering frame");
229
    }
242
  packet->AddHeader (actionHdr);
230
  packet->AddHeader (actionHdr);
231
  SendManagementFrame (packet, peerAddress);
232
}
233
234
void
235
PeerManagementProtocolMac::SendManagementFrame (Ptr<Packet> packet, Mac48Address to)
236
{
243
  m_stats.txMgt++;
237
  m_stats.txMgt++;
244
  m_stats.txMgtBytes += packet->GetSize ();
238
  m_stats.txMgtBytes += packet->GetSize ();
245
  // Wifi Mac header:
239
  // Wifi Mac header:
246
  WifiMacHeader hdr;
240
  WifiMacHeader hdr;
247
  hdr.SetAction ();
241
  hdr.SetAction ();
248
  hdr.SetAddr1 (peerAddress);
242
  hdr.SetAddr1 (to);
249
  hdr.SetAddr2 (m_parent->GetAddress ());
243
  hdr.SetAddr2 (m_parent->GetAddress ());
250
  //Addr is not used here, we use it as our MP address
244
  //Addr is not used here, we use it as our MP address
251
  hdr.SetAddr3 (m_protocol->GetAddress ());
245
  hdr.SetAddr3 (m_protocol->GetAddress ());
(-)a/src/mesh/model/dot11s/peer-management-protocol-mac.h (+2 lines)
 Lines 95-100    Link Here 
95
    IePeerManagement peerElement,
95
    IePeerManagement peerElement,
96
    IeConfiguration meshConfig
96
    IeConfiguration meshConfig
97
    );
97
    );
98
  /// Construct 802.11 header and pass a packet to MAC
99
  void SendManagementFrame (Ptr<Packet> packet, Mac48Address to);
98
  ///\brief debug only, used to print established links
100
  ///\brief debug only, used to print established links
99
  Mac48Address GetAddress () const;
101
  Mac48Address GetAddress () const;
100
  ///\name Statistics
102
  ///\name Statistics
(-)a/src/mesh/model/mesh-information-element-vector.cc (+22 lines)
 Lines 36-41    Link Here 
36
36
37
namespace ns3 {
37
namespace ns3 {
38
38
39
40
NS_OBJECT_ENSURE_REGISTERED (MeshInformationElementVector);
41
42
MeshInformationElementVector::MeshInformationElementVector () :
43
  WifiInformationElementVector ()
44
{}
45
46
TypeId
47
MeshInformationElementVector::GetTypeId ()
48
{
49
  static TypeId tid = TypeId ("ns3::MeshInformationElementVector")
50
    .SetParent<WifiInformationElementVector> ()
51
    .AddConstructor<MeshInformationElementVector> ();
52
  return tid;
53
}
54
55
TypeId
56
MeshInformationElementVector::GetInstanceTypeId () const
57
{
58
  return GetTypeId ();
59
}
60
39
uint32_t
61
uint32_t
40
MeshInformationElementVector::DeserializeSingleIe (Buffer::Iterator start)
62
MeshInformationElementVector::DeserializeSingleIe (Buffer::Iterator start)
41
{
63
{
(-)a/src/mesh/model/mesh-information-element-vector.h (+3 lines)
 Lines 30-35    Link Here 
30
class MeshInformationElementVector : public WifiInformationElementVector
30
class MeshInformationElementVector : public WifiInformationElementVector
31
{
31
{
32
public:
32
public:
33
  static TypeId GetTypeId ();
34
  TypeId GetInstanceTypeId () const;
35
  MeshInformationElementVector ();
33
  virtual uint32_t DeserializeSingleIe (Buffer::Iterator start);
36
  virtual uint32_t DeserializeSingleIe (Buffer::Iterator start);
34
};
37
};
35
38
(-)a/src/mesh/model/mesh-wifi-beacon.h (-1 / +1 lines)
 Lines 67-73    Link Here 
67
  /// Beacon header
67
  /// Beacon header
68
  MgtBeaconHeader m_header;
68
  MgtBeaconHeader m_header;
69
  /// List of information elements added
69
  /// List of information elements added
70
  WifiInformationElementVector m_elements;
70
  MeshInformationElementVector m_elements;
71
};
71
};
72
72
73
}
73
}

Return to bug 1363