A Discrete-Event Network Simulator
API
Loading...
Searching...
No Matches
wimax-tlv.h
Go to the documentation of this file.
1/*
2 * Copyright (c) 2009 INRIA, UDcast
3 *
4 * SPDX-License-Identifier: GPL-2.0-only
5 *
6 * Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
7 *
8 */
9
10#ifndef WIMAX_TLV_H
11#define WIMAX_TLV_H
12
13#define WIMAX_TLV_EXTENDED_LENGTH_MASK 0x80
14
15#include "ns3/assert.h"
16#include "ns3/header.h"
17#include "ns3/ipv4-address.h"
18#include "ns3/log.h"
19#include "ns3/uinteger.h"
20
21#include <cstdlib>
22#include <vector>
23
24namespace ns3
25{
26
27/**
28 * \ingroup wimax
29 * The value field of a tlv can take different values (uint8_t, uint16,
30 * vector, ...). This class is a virtual interface
31 * from which all the types of tlv values should derive
32 */
34{
35 public:
36 virtual ~TlvValue()
37 {
38 }
39
40 /**
41 * Get serialized size in bytes
42 * \returns the serialized size
43 */
44 virtual uint32_t GetSerializedSize() const = 0;
45 /**
46 * Serialize to a buffer
47 * \param start the iterator
48 */
49 virtual void Serialize(Buffer::Iterator start) const = 0;
50 /**
51 * Deserialize from a buffer
52 * \param start the iterator
53 * \param valueLen the maximum length of the value
54 * \returns the
55 */
56 virtual uint32_t Deserialize(Buffer::Iterator start, uint64_t valueLen) = 0;
57 /**
58 * Copy function
59 * \returns the TLV value
60 */
61 virtual TlvValue* Copy() const = 0;
62
63 private:
64};
65
66// =============================================================================
67/**
68 * \ingroup wimax
69 * \brief This class implements the Type-Len-Value structure channel encodings as described by "IEEE
70 * Standard for Local and metropolitan area networks Part 16: Air Interface for Fixed Broadband
71 * Wireless Access Systems"
72 * 11. TLV encodings, page 645
73 *
74 */
75class Tlv : public Header
76{
77 public:
78 /// CommonTypes enumeration
89
90 /**
91 * Constructor
92 *
93 * \param type type
94 * \param length the length
95 * \param value TLV value
96 */
97 Tlv(uint8_t type, uint64_t length, const TlvValue& value);
98 Tlv();
99 ~Tlv() override;
100 /**
101 * Register this type.
102 * \return the TypeId.
103 */
104 static TypeId GetTypeId();
105 TypeId GetInstanceTypeId() const override;
106 void Print(std::ostream& os) const override;
107 uint32_t GetSerializedSize() const override;
108 void Serialize(Buffer::Iterator start) const override;
109 uint32_t Deserialize(Buffer::Iterator start) override;
110 /**
111 * Get size of length field
112 * \returns the size of length field
113 */
114 uint8_t GetSizeOfLen() const;
115 /**
116 * Get type value
117 * \returns the type
118 */
119 uint8_t GetType() const;
120 /**
121 * Get length value
122 * \returns the length
123 */
124 uint64_t GetLength() const;
125 /**
126 * Peek value
127 * \returns the TLV value
128 */
130 /**
131 * Copy TLV
132 * \returns a pointer to a TLV copy
133 */
134 Tlv* Copy() const;
135 /**
136 * Copy TlvValue
137 * \returns the TLV value
138 */
139 TlvValue* CopyValue() const;
140 /**
141 * assignment operator
142 * \param o the TLV to assign
143 * \returns the TLV
144 */
145 Tlv& operator=(const Tlv& o);
146 /**
147 * type conversion operator
148 * \param tlv the TLV
149 */
150 Tlv(const Tlv& tlv);
151
152 private:
153 uint8_t m_type; ///< type
154 uint64_t m_length; ///< length
155 TlvValue* m_value; ///< value
156};
157
158// ==============================================================================
159/**
160 * \ingroup wimax
161 * \brief U8TlvValue class
162 */
163class U8TlvValue : public TlvValue
164{
165 public:
166 /**
167 * Constructor
168 *
169 * \param value value to encode
170 */
171 U8TlvValue(uint8_t value);
172 U8TlvValue();
173 ~U8TlvValue() override;
174 uint32_t GetSerializedSize() const override;
175 void Serialize(Buffer::Iterator start) const override;
176 uint32_t Deserialize(Buffer::Iterator start, uint64_t valueLen) override;
177 /**
178 * Deserialize from a buffer
179 * \param start the iterator
180 * \returns the size of the item
181 */
183 /**
184 * Get value
185 * \returns the value
186 */
187 uint8_t GetValue() const;
188 /**
189 * Copy
190 * \returns a U8 TLV value
191 */
192 U8TlvValue* Copy() const override;
193
194 private:
195 uint8_t m_value; ///< value
196};
197
198// ==============================================================================
199/**
200 * \ingroup wimax
201 * \brief U16TlvValue class
202 */
203class U16TlvValue : public TlvValue
204{
205 public:
206 /**
207 * Constructor
208 *
209 * \param value value to encode
210 */
211 U16TlvValue(uint16_t value);
212 U16TlvValue();
213 ~U16TlvValue() override;
214 uint32_t GetSerializedSize() const override;
215 void Serialize(Buffer::Iterator start) const override;
216 uint32_t Deserialize(Buffer::Iterator start, uint64_t valueLen) override;
217 /**
218 * Deserialize from a buffer
219 * \param start the iterator
220 * \returns the size
221 */
223 /**
224 * Get value
225 * \returns the value
226 */
227 uint16_t GetValue() const;
228 /**
229 * Copy
230 * \returns the U16 TLV value
231 */
232 U16TlvValue* Copy() const override;
233
234 private:
235 uint16_t m_value; ///< value
236};
237
238// ==============================================================================
239/**
240 * \ingroup wimax
241 * \brief U32TlvValue class
242 */
243class U32TlvValue : public TlvValue
244{
245 public:
246 /**
247 * Constructor
248 *
249 * \param value to encode
250 */
251 U32TlvValue(uint32_t value);
252 U32TlvValue();
253 ~U32TlvValue() override;
254
255 uint32_t GetSerializedSize() const override;
256 void Serialize(Buffer::Iterator start) const override;
257 uint32_t Deserialize(Buffer::Iterator start, uint64_t valueLen) override;
258 /**
259 * Deserialize from a buffer
260 * \param start the iterator
261 * \returns the size
262 */
264 /**
265 * Get value
266 * \returns the value
267 */
268 uint32_t GetValue() const;
269 /**
270 * Copy
271 * \returns the U32 TLV Value
272 */
273 U32TlvValue* Copy() const override;
274
275 private:
276 uint32_t m_value; ///< value
277};
278
279// ==============================================================================
280
281/**
282 * \ingroup wimax
283 * \brief this class is used to implement a vector of values in one tlv value field
284 */
286{
287 public:
288 /// TLV vector iterator typedef
289 typedef std::vector<Tlv*>::const_iterator Iterator;
291 ~VectorTlvValue() override;
292 uint32_t GetSerializedSize() const override;
293 void Serialize(Buffer::Iterator start) const override;
294 uint32_t Deserialize(Buffer::Iterator start, uint64_t valueLength) override = 0;
295 /**
296 * Begin iterator
297 * \returns the beginning element
298 */
299 Iterator Begin() const;
300 /**
301 * End iterator
302 * \returns the ending element
303 */
304 Iterator End() const;
305 /**
306 * Add a TLV
307 * \param val the TLV value
308 */
309 void Add(const Tlv& val);
310 /**
311 * Copy
312 * \returns the vector TLV value
313 */
314 VectorTlvValue* Copy() const override = 0;
315
316 private:
317 std::vector<Tlv*>* m_tlvList; ///< tlv list
318};
319
320// ==============================================================================
321/**
322 * \ingroup wimax
323 * \brief SfVectorTlvValue class
324 */
366
367// ==============================================================================
368
369/**
370 * \ingroup wimax
371 * \brief this class implements the convergence sub-layer descriptor as a tlv vector
372 */
374{
375 public:
376 /// Type enumeration
382
384 uint32_t Deserialize(Buffer::Iterator start, uint64_t valueLength) override;
385 CsParamVectorTlvValue* Copy() const override;
386
387 private:
388};
389
390// ==============================================================================
391
392/**
393 * \ingroup wimax
394 * \brief this class implements the classifier descriptor as a tlv vector
395 */
397{
398 public:
399 /// ClassificationRuleTlvType enumeration
401 {
402 Priority = 1,
403 ToS = 2,
409 Index = 14,
410 };
411
413 uint32_t Deserialize(Buffer::Iterator start, uint64_t valueLength) override;
414 ClassificationRuleVectorTlvValue* Copy() const override;
415
416 private:
417};
418
419// ==============================================================================
420/**
421 * \ingroup wimax
422 * \brief TosTlvValue class
423 */
424class TosTlvValue : public TlvValue
425{
426 public:
427 TosTlvValue();
428 /**
429 * Constructor
430 *
431 * \param low low value
432 * \param high high value
433 * \param mask the mask
434 */
435 TosTlvValue(uint8_t low, uint8_t high, uint8_t mask);
436 ~TosTlvValue() override;
437 uint32_t GetSerializedSize() const override;
438 void Serialize(Buffer::Iterator start) const override;
439 uint32_t Deserialize(Buffer::Iterator start, uint64_t valueLength) override;
440 /**
441 * Get low part
442 * \returns the low part
443 */
444 uint8_t GetLow() const;
445 /**
446 * Get high part
447 * \returns the high part
448 */
449 uint8_t GetHigh() const;
450 /**
451 * Get the mask
452 * \returns the mask
453 */
454 uint8_t GetMask() const;
455 /**
456 * Copy
457 * \returns the TOS TLV value
458 */
459 TosTlvValue* Copy() const override;
460
461 private:
462 uint8_t m_low; ///< low
463 uint8_t m_high; ///< high
464 uint8_t m_mask; ///< mask
465};
466
467// ==============================================================================
468/**
469 * \ingroup wimax
470 * \brief PortRangeTlvValue class
471 */
473{
474 public:
475 /// PortRange structure
477 {
478 uint16_t PortLow; ///< low
479 uint16_t PortHigh; ///< high
480 };
481
482 /// PortRange vector iterator typedef
483 typedef std::vector<PortRange>::const_iterator Iterator;
485 ~PortRangeTlvValue() override;
486 uint32_t GetSerializedSize() const override;
487 void Serialize(Buffer::Iterator start) const override;
488 uint32_t Deserialize(Buffer::Iterator start, uint64_t valueLength) override;
489 /**
490 * Add a range
491 * \param portLow the low port of the range
492 * \param portHigh the high port of the range
493 */
494 void Add(uint16_t portLow, uint16_t portHigh);
495 /**
496 * Begin iterator
497 * \returns the beginning element
498 */
499 Iterator Begin() const;
500 /**
501 * End iterator
502 * \returns the ending element
503 */
504 Iterator End() const;
505 /**
506 * Copy
507 * \returns the port range tlv value
508 */
509 PortRangeTlvValue* Copy() const override;
510
511 private:
512 std::vector<PortRange>* m_portRange; ///< port range
513};
514
515// ==============================================================================
516/**
517 * \ingroup wimax
518 * \brief ProtocolTlvValue class
519 */
521{
522 public:
524 ~ProtocolTlvValue() override;
525 /// Iterator typedef
526 typedef std::vector<uint8_t>::const_iterator Iterator;
527 uint32_t GetSerializedSize() const override;
528 void Serialize(Buffer::Iterator start) const override;
529 uint32_t Deserialize(Buffer::Iterator start, uint64_t valueLength) override;
530 /**
531 * Add protocol number
532 * \param protocol the protocol number
533 */
534 void Add(uint8_t protocol);
535 /**
536 * Begin iterator
537 * \returns the beginning element
538 */
539 Iterator Begin() const;
540 /**
541 * End iterator
542 * \return the ending element
543 */
544 Iterator End() const;
545 /**
546 * Copy
547 * \returns the protocol tlv value
548 */
549 ProtocolTlvValue* Copy() const override;
550
551 private:
552 std::vector<uint8_t>* m_protocol; ///< protocol
553};
554
555// ==============================================================================
556
557/**
558 * \ingroup wimax
559 * \brief Ipv4AddressTlvValue class
560 */
562{
563 public:
564 /// Ipv4Addr structure
565 struct Ipv4Addr
566 {
567 Ipv4Address Address; ///< address
568 Ipv4Mask Mask; ///< mask
569 };
570
571 /// IPv4 address vector iterator typedef
572 typedef std::vector<Ipv4Addr>::const_iterator Iterator;
574 ~Ipv4AddressTlvValue() override;
575 uint32_t GetSerializedSize() const override;
576 void Serialize(Buffer::Iterator start) const override;
577 uint32_t Deserialize(Buffer::Iterator start, uint64_t valueLength) override;
578 /**
579 * Add IPv4 address and mask
580 * \param address the IPv4 address
581 * \param mask the IPv4 mask
582 */
583 void Add(Ipv4Address address, Ipv4Mask mask);
584 /**
585 * Begin iterator
586 * \returns the beginning element
587 */
588 Iterator Begin() const;
589 /**
590 * End iterator
591 * \returns the ending element
592 */
593 Iterator End() const;
594 Ipv4AddressTlvValue* Copy() const override;
595
596 private:
597 std::vector<Ipv4Addr>* m_ipv4Addr; ///< ipv4 addr
598};
599
600} // namespace ns3
601
602#endif /* WIMAX_TLV_H */
iterator in a Buffer instance
Definition buffer.h:89
this class implements the classifier descriptor as a tlv vector
Definition wimax-tlv.h:397
ClassificationRuleVectorTlvValue * Copy() const override
Copy.
Definition wimax-tlv.cc:690
ClassificationRuleTlvType
ClassificationRuleTlvType enumeration.
Definition wimax-tlv.h:401
uint32_t Deserialize(Buffer::Iterator start, uint64_t valueLength) override
Deserialize from a buffer.
Definition wimax-tlv.cc:701
this class implements the convergence sub-layer descriptor as a tlv vector
Definition wimax-tlv.h:374
CsParamVectorTlvValue * Copy() const override
Copy.
Definition wimax-tlv.cc:673
Type
Type enumeration.
Definition wimax-tlv.h:378
uint32_t Deserialize(Buffer::Iterator start, uint64_t valueLength) override
Deserialize from a buffer.
Definition wimax-tlv.cc:622
Protocol header serialization and deserialization.
Definition header.h:33
Ipv4 addresses are stored in host order in this class.
Ipv4AddressTlvValue class.
Definition wimax-tlv.h:562
Iterator End() const
End iterator.
std::vector< Ipv4Addr >::const_iterator Iterator
IPv4 address vector iterator typedef.
Definition wimax-tlv.h:572
void Serialize(Buffer::Iterator start) const override
Serialize to a buffer.
void Add(Ipv4Address address, Ipv4Mask mask)
Add IPv4 address and mask.
std::vector< Ipv4Addr > * m_ipv4Addr
ipv4 addr
Definition wimax-tlv.h:597
Ipv4AddressTlvValue * Copy() const override
Copy function.
uint32_t GetSerializedSize() const override
Get serialized size in bytes.
Iterator Begin() const
Begin iterator.
~Ipv4AddressTlvValue() override
uint32_t Deserialize(Buffer::Iterator start, uint64_t valueLength) override
Deserialize from a buffer.
a class to represent an Ipv4 address mask
PortRangeTlvValue class.
Definition wimax-tlv.h:473
uint32_t GetSerializedSize() const override
Get serialized size in bytes.
Definition wimax-tlv.cc:862
uint32_t Deserialize(Buffer::Iterator start, uint64_t valueLength) override
Deserialize from a buffer.
Definition wimax-tlv.cc:878
std::vector< PortRange > * m_portRange
port range
Definition wimax-tlv.h:512
std::vector< PortRange >::const_iterator Iterator
PortRange vector iterator typedef.
Definition wimax-tlv.h:483
Iterator End() const
End iterator.
Definition wimax-tlv.cc:907
void Serialize(Buffer::Iterator start) const override
Serialize to a buffer.
Definition wimax-tlv.cc:868
~PortRangeTlvValue() override
Definition wimax-tlv.cc:855
Iterator Begin() const
Begin iterator.
Definition wimax-tlv.cc:901
void Add(uint16_t portLow, uint16_t portHigh)
Add a range.
Definition wimax-tlv.cc:892
PortRangeTlvValue * Copy() const override
Copy.
Definition wimax-tlv.cc:913
ProtocolTlvValue class.
Definition wimax-tlv.h:521
~ProtocolTlvValue() override
Definition wimax-tlv.cc:930
std::vector< uint8_t > * m_protocol
protocol
Definition wimax-tlv.h:552
void Add(uint8_t protocol)
Add protocol number.
Definition wimax-tlv.cc:968
Iterator Begin() const
Begin iterator.
Definition wimax-tlv.cc:974
uint32_t GetSerializedSize() const override
Get serialized size in bytes.
Definition wimax-tlv.cc:941
ProtocolTlvValue * Copy() const override
Copy.
Definition wimax-tlv.cc:986
std::vector< uint8_t >::const_iterator Iterator
Iterator typedef.
Definition wimax-tlv.h:526
Iterator End() const
End iterator.
Definition wimax-tlv.cc:980
uint32_t Deserialize(Buffer::Iterator start, uint64_t valueLength) override
Deserialize from a buffer.
Definition wimax-tlv.cc:956
void Serialize(Buffer::Iterator start) const override
Serialize to a buffer.
Definition wimax-tlv.cc:947
SfVectorTlvValue class.
Definition wimax-tlv.h:326
uint32_t Deserialize(Buffer::Iterator start, uint64_t valueLength) override
Deserialize from a buffer.
Definition wimax-tlv.cc:295
Type
Type enumeration.
Definition wimax-tlv.h:330
@ Fixed_length_versus_Variable_length_SDU_Indicator
Definition wimax-tlv.h:345
SfVectorTlvValue * Copy() const override
Copy.
Definition wimax-tlv.cc:284
This class implements the Type-Len-Value structure channel encodings as described by "IEEEStandard fo...
Definition wimax-tlv.h:76
uint8_t m_type
type
Definition wimax-tlv.h:153
TlvValue * CopyValue() const
Copy TlvValue.
Definition wimax-tlv.cc:64
~Tlv() override
Definition wimax-tlv.cc:54
uint64_t m_length
length
Definition wimax-tlv.h:154
Tlv * Copy() const
Copy TLV.
Definition wimax-tlv.cc:218
uint8_t GetType() const
Get type value.
Definition wimax-tlv.cc:200
TypeId GetInstanceTypeId() const override
Get the most derived TypeId for this Object.
Definition wimax-tlv.cc:29
Tlv & operator=(const Tlv &o)
assignment operator
Definition wimax-tlv.cc:77
TlvValue * PeekValue()
Peek value.
Definition wimax-tlv.cc:212
static TypeId GetTypeId()
Register this type.
Definition wimax-tlv.cc:21
uint64_t GetLength() const
Get length value.
Definition wimax-tlv.cc:206
CommonTypes
CommonTypes enumeration.
Definition wimax-tlv.h:80
@ UPLINK_SERVICE_FLOW
Definition wimax-tlv.h:85
@ VENDOR_ID_EMCODING
Definition wimax-tlv.h:86
@ DOWNLINK_SERVICE_FLOW
Definition wimax-tlv.h:84
@ CURRENT_TRANSMIT_POWER
Definition wimax-tlv.h:83
@ HMAC_TUPLE
Definition wimax-tlv.h:81
@ MAC_VERSION_ENCODING
Definition wimax-tlv.h:82
@ VENDOR_SPECIFIC_INFORMATION
Definition wimax-tlv.h:87
uint8_t GetSizeOfLen() const
Get size of length field.
Definition wimax-tlv.cc:97
void Print(std::ostream &os) const override
Definition wimax-tlv.cc:35
TlvValue * m_value
value
Definition wimax-tlv.h:155
uint32_t GetSerializedSize() const override
Definition wimax-tlv.cc:91
void Serialize(Buffer::Iterator start) const override
Definition wimax-tlv.cc:115
uint32_t Deserialize(Buffer::Iterator start) override
Definition wimax-tlv.cc:135
The value field of a tlv can take different values (uint8_t, uint16, vector, ...).
Definition wimax-tlv.h:34
virtual ~TlvValue()
Definition wimax-tlv.h:36
virtual uint32_t Deserialize(Buffer::Iterator start, uint64_t valueLen)=0
Deserialize from a buffer.
virtual uint32_t GetSerializedSize() const =0
Get serialized size in bytes.
virtual TlvValue * Copy() const =0
Copy function.
virtual void Serialize(Buffer::Iterator start) const =0
Serialize to a buffer.
TosTlvValue class.
Definition wimax-tlv.h:425
void Serialize(Buffer::Iterator start) const override
Serialize to a buffer.
Definition wimax-tlv.cc:809
uint8_t m_high
high
Definition wimax-tlv.h:463
uint8_t GetHigh() const
Get high part.
Definition wimax-tlv.cc:832
uint32_t GetSerializedSize() const override
Get serialized size in bytes.
Definition wimax-tlv.cc:803
~TosTlvValue() override
Definition wimax-tlv.cc:798
uint8_t GetLow() const
Get low part.
Definition wimax-tlv.cc:826
uint8_t GetMask() const
Get the mask.
Definition wimax-tlv.cc:838
uint32_t Deserialize(Buffer::Iterator start, uint64_t valueLength) override
Deserialize from a buffer.
Definition wimax-tlv.cc:817
TosTlvValue * Copy() const override
Copy.
Definition wimax-tlv.cc:844
uint8_t m_mask
mask
Definition wimax-tlv.h:464
uint8_t m_low
low
Definition wimax-tlv.h:462
a unique identifier for an interface.
Definition type-id.h:48
U16TlvValue class.
Definition wimax-tlv.h:204
void Serialize(Buffer::Iterator start) const override
Serialize to a buffer.
Definition wimax-tlv.cc:536
U16TlvValue * Copy() const override
Copy.
Definition wimax-tlv.cc:561
uint16_t m_value
value
Definition wimax-tlv.h:235
uint32_t GetSerializedSize() const override
Get serialized size in bytes.
Definition wimax-tlv.cc:530
uint32_t Deserialize(Buffer::Iterator start, uint64_t valueLen) override
Deserialize from a buffer.
Definition wimax-tlv.cc:542
uint16_t GetValue() const
Get value.
Definition wimax-tlv.cc:555
~U16TlvValue() override
Definition wimax-tlv.cc:525
U32TlvValue class.
Definition wimax-tlv.h:244
uint32_t GetValue() const
Get value.
Definition wimax-tlv.cc:608
uint32_t GetSerializedSize() const override
Get serialized size in bytes.
Definition wimax-tlv.cc:583
~U32TlvValue() override
Definition wimax-tlv.cc:578
void Serialize(Buffer::Iterator start) const override
Serialize to a buffer.
Definition wimax-tlv.cc:589
U32TlvValue * Copy() const override
Copy.
Definition wimax-tlv.cc:614
uint32_t Deserialize(Buffer::Iterator start, uint64_t valueLen) override
Deserialize from a buffer.
Definition wimax-tlv.cc:595
uint32_t m_value
value
Definition wimax-tlv.h:276
U8TlvValue class.
Definition wimax-tlv.h:164
~U8TlvValue() override
Definition wimax-tlv.cc:472
uint32_t Deserialize(Buffer::Iterator start, uint64_t valueLen) override
Deserialize from a buffer.
Definition wimax-tlv.cc:489
uint8_t GetValue() const
Get value.
Definition wimax-tlv.cc:502
uint8_t m_value
value
Definition wimax-tlv.h:195
uint32_t GetSerializedSize() const override
Get serialized size in bytes.
Definition wimax-tlv.cc:477
void Serialize(Buffer::Iterator start) const override
Serialize to a buffer.
Definition wimax-tlv.cc:483
U8TlvValue * Copy() const override
Copy.
Definition wimax-tlv.cc:508
this class is used to implement a vector of values in one tlv value field
Definition wimax-tlv.h:286
uint32_t GetSerializedSize() const override
Get serialized size in bytes.
Definition wimax-tlv.cc:240
~VectorTlvValue() override
Definition wimax-tlv.cc:229
std::vector< Tlv * >::const_iterator Iterator
TLV vector iterator typedef.
Definition wimax-tlv.h:289
void Serialize(Buffer::Iterator start) const override
Serialize to a buffer.
Definition wimax-tlv.cc:251
VectorTlvValue * Copy() const override=0
Copy.
Iterator End() const
End iterator.
Definition wimax-tlv.cc:267
Iterator Begin() const
Begin iterator.
Definition wimax-tlv.cc:261
void Add(const Tlv &val)
Add a TLV.
Definition wimax-tlv.cc:273
std::vector< Tlv * > * m_tlvList
tlv list
Definition wimax-tlv.h:317
uint32_t Deserialize(Buffer::Iterator start, uint64_t valueLength) override=0
Deserialize from a buffer.
Every class exported by the ns3 library is enclosed in the ns3 namespace.