A Discrete-Event Network Simulator
Home
Tutorials ▼
English
Portuguese
Docs ▼
Wiki
Manual
Models
Develop ▼
API
Bugs
API
Main Page
Related Pages
Modules
Namespaces
Classes
Files
File List
File Members
wifi-mac-header.cc
Go to the documentation of this file.
1
/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
2
/*
3
* Copyright (c) 2006, 2009 INRIA
4
* Copyright (c) 2009 MIRKO BANCHI
5
*
6
* This program is free software; you can redistribute it and/or modify
7
* it under the terms of the GNU General Public License version 2 as
8
* published by the Free Software Foundation;
9
*
10
* This program is distributed in the hope that it will be useful,
11
* but WITHOUT ANY WARRANTY; without even the implied warranty of
12
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13
* GNU General Public License for more details.
14
*
15
* You should have received a copy of the GNU General Public License
16
* along with this program; if not, write to the Free Software
17
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
18
*
19
* Author: Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
20
* Author: Mirko Banchi <mk.banchi@gmail.com>
21
*/
22
#include "ns3/assert.h"
23
#include "ns3/address-utils.h"
24
#include "
wifi-mac-header.h
"
25
26
namespace
ns3
{
27
28
NS_OBJECT_ENSURE_REGISTERED
(WifiMacHeader);
29
30
enum
31
{
32
TYPE_MGT
= 0,
33
TYPE_CTL
= 1,
34
TYPE_DATA
= 2
35
};
36
37
enum
38
{
39
SUBTYPE_CTL_BACKREQ
= 8,
40
SUBTYPE_CTL_BACKRESP
= 9,
41
SUBTYPE_CTL_RTS
= 11,
42
SUBTYPE_CTL_CTS
= 12,
43
SUBTYPE_CTL_ACK
= 13,
44
SUBTYPE_CTL_CTLWRAPPER
= 7
45
46
};
47
48
WifiMacHeader::WifiMacHeader
()
49
: m_ctrlMoreData (0),
50
m_ctrlWep (0),
51
m_ctrlOrder (1),
52
m_amsduPresent (0)
53
{
54
}
55
WifiMacHeader::~WifiMacHeader
()
56
{
57
}
58
59
void
60
WifiMacHeader::SetDsFrom
(
void
)
61
{
62
m_ctrlFromDs
= 1;
63
}
64
65
void
66
WifiMacHeader::SetDsNotFrom
(
void
)
67
{
68
m_ctrlFromDs
= 0;
69
}
70
71
void
72
WifiMacHeader::SetDsTo
(
void
)
73
{
74
m_ctrlToDs
= 1;
75
}
76
77
void
78
WifiMacHeader::SetDsNotTo
(
void
)
79
{
80
m_ctrlToDs
= 0;
81
}
82
83
void
84
WifiMacHeader::SetAddr1
(
Mac48Address
address
)
85
{
86
m_addr1
=
address
;
87
}
88
89
void
90
WifiMacHeader::SetAddr2
(
Mac48Address
address
)
91
{
92
m_addr2
=
address
;
93
}
94
95
void
96
WifiMacHeader::SetAddr3
(
Mac48Address
address
)
97
{
98
m_addr3
=
address
;
99
}
100
101
void
102
WifiMacHeader::SetAddr4
(
Mac48Address
address
)
103
{
104
m_addr4
=
address
;
105
}
106
107
void
108
WifiMacHeader::SetAssocReq
(
void
)
109
{
110
m_ctrlType
=
TYPE_MGT
;
111
m_ctrlSubtype
= 0;
112
}
113
114
void
115
WifiMacHeader::SetAssocResp
(
void
)
116
{
117
m_ctrlType
=
TYPE_MGT
;
118
m_ctrlSubtype
= 1;
119
}
120
121
void
122
WifiMacHeader::SetProbeReq
(
void
)
123
{
124
m_ctrlType
=
TYPE_MGT
;
125
m_ctrlSubtype
= 4;
126
}
127
128
void
129
WifiMacHeader::SetProbeResp
(
void
)
130
{
131
m_ctrlType
=
TYPE_MGT
;
132
m_ctrlSubtype
= 5;
133
}
134
135
void
136
WifiMacHeader::SetBeacon
(
void
)
137
{
138
m_ctrlType
=
TYPE_MGT
;
139
m_ctrlSubtype
= 8;
140
}
141
142
void
143
WifiMacHeader::SetBlockAckReq
(
void
)
144
{
145
m_ctrlType
=
TYPE_CTL
;
146
m_ctrlSubtype
= 8;
147
}
148
149
void
150
WifiMacHeader::SetBlockAck
(
void
)
151
{
152
m_ctrlType
=
TYPE_CTL
;
153
m_ctrlSubtype
= 9;
154
}
155
156
void
157
WifiMacHeader::SetTypeData
(
void
)
158
{
159
m_ctrlType
=
TYPE_DATA
;
160
m_ctrlSubtype
= 0;
161
}
162
163
void
164
WifiMacHeader::SetAction
(
void
)
165
{
166
m_ctrlType
=
TYPE_MGT
;
167
m_ctrlSubtype
= 0x0D;
168
}
169
170
void
171
WifiMacHeader::SetMultihopAction
(
void
)
172
{
173
m_ctrlType
=
TYPE_MGT
;
174
m_ctrlSubtype
= 0x0F;
175
}
176
177
void
178
WifiMacHeader::SetType
(
enum
WifiMacType
type)
179
{
180
switch
(type)
181
{
182
case
WIFI_MAC_CTL_BACKREQ
:
183
m_ctrlType
=
TYPE_CTL
;
184
m_ctrlSubtype
=
SUBTYPE_CTL_BACKREQ
;
185
break
;
186
case
WIFI_MAC_CTL_BACKRESP
:
187
m_ctrlType
=
TYPE_CTL
;
188
m_ctrlSubtype
=
SUBTYPE_CTL_BACKRESP
;
189
break
;
190
case
WIFI_MAC_CTL_RTS
:
191
m_ctrlType
=
TYPE_CTL
;
192
m_ctrlSubtype
=
SUBTYPE_CTL_RTS
;
193
break
;
194
case
WIFI_MAC_CTL_CTS
:
195
m_ctrlType
=
TYPE_CTL
;
196
m_ctrlSubtype
=
SUBTYPE_CTL_CTS
;
197
break
;
198
case
WIFI_MAC_CTL_ACK
:
199
m_ctrlType
=
TYPE_CTL
;
200
m_ctrlSubtype
=
SUBTYPE_CTL_ACK
;
201
break
;
202
case
WIFI_MAC_CTL_CTLWRAPPER
:
203
m_ctrlType
=
TYPE_CTL
;
204
m_ctrlSubtype
=
SUBTYPE_CTL_CTLWRAPPER
;
205
break
;
206
case
WIFI_MAC_MGT_ASSOCIATION_REQUEST
:
207
m_ctrlType
=
TYPE_MGT
;
208
m_ctrlSubtype
= 0;
209
break
;
210
case
WIFI_MAC_MGT_ASSOCIATION_RESPONSE
:
211
m_ctrlType
=
TYPE_MGT
;
212
m_ctrlSubtype
= 1;
213
break
;
214
case
WIFI_MAC_MGT_REASSOCIATION_REQUEST
:
215
m_ctrlType
=
TYPE_MGT
;
216
m_ctrlSubtype
= 2;
217
break
;
218
case
WIFI_MAC_MGT_REASSOCIATION_RESPONSE
:
219
m_ctrlType
=
TYPE_MGT
;
220
m_ctrlSubtype
= 3;
221
break
;
222
case
WIFI_MAC_MGT_PROBE_REQUEST
:
223
m_ctrlType
=
TYPE_MGT
;
224
m_ctrlSubtype
= 4;
225
break
;
226
case
WIFI_MAC_MGT_PROBE_RESPONSE
:
227
m_ctrlType
=
TYPE_MGT
;
228
m_ctrlSubtype
= 5;
229
break
;
230
case
WIFI_MAC_MGT_BEACON
:
231
m_ctrlType
=
TYPE_MGT
;
232
m_ctrlSubtype
= 8;
233
break
;
234
case
WIFI_MAC_MGT_DISASSOCIATION
:
235
m_ctrlType
=
TYPE_MGT
;
236
m_ctrlSubtype
= 10;
237
break
;
238
case
WIFI_MAC_MGT_AUTHENTICATION
:
239
m_ctrlType
=
TYPE_MGT
;
240
m_ctrlSubtype
= 11;
241
break
;
242
case
WIFI_MAC_MGT_DEAUTHENTICATION
:
243
m_ctrlType
=
TYPE_MGT
;
244
m_ctrlSubtype
= 12;
245
break
;
246
case
WIFI_MAC_MGT_ACTION
:
247
m_ctrlType
=
TYPE_MGT
;
248
m_ctrlSubtype
= 13;
249
break
;
250
case
WIFI_MAC_MGT_ACTION_NO_ACK
:
251
m_ctrlType
=
TYPE_MGT
;
252
m_ctrlSubtype
= 14;
253
break
;
254
case
WIFI_MAC_MGT_MULTIHOP_ACTION
:
255
m_ctrlType
=
TYPE_MGT
;
256
m_ctrlSubtype
= 15;
257
break
;
258
259
case
WIFI_MAC_DATA
:
260
m_ctrlType
=
TYPE_DATA
;
261
m_ctrlSubtype
= 0;
262
break
;
263
case
WIFI_MAC_DATA_CFACK
:
264
m_ctrlType
=
TYPE_DATA
;
265
m_ctrlSubtype
= 1;
266
break
;
267
case
WIFI_MAC_DATA_CFPOLL
:
268
m_ctrlType
=
TYPE_DATA
;
269
m_ctrlSubtype
= 2;
270
break
;
271
case
WIFI_MAC_DATA_CFACK_CFPOLL
:
272
m_ctrlType
=
TYPE_DATA
;
273
m_ctrlSubtype
= 3;
274
break
;
275
case
WIFI_MAC_DATA_NULL
:
276
m_ctrlType
=
TYPE_DATA
;
277
m_ctrlSubtype
= 4;
278
break
;
279
case
WIFI_MAC_DATA_NULL_CFACK
:
280
m_ctrlType
=
TYPE_DATA
;
281
m_ctrlSubtype
= 5;
282
break
;
283
case
WIFI_MAC_DATA_NULL_CFPOLL
:
284
m_ctrlType
=
TYPE_DATA
;
285
m_ctrlSubtype
= 6;
286
break
;
287
case
WIFI_MAC_DATA_NULL_CFACK_CFPOLL
:
288
m_ctrlType
=
TYPE_DATA
;
289
m_ctrlSubtype
= 7;
290
break
;
291
case
WIFI_MAC_QOSDATA
:
292
m_ctrlType
=
TYPE_DATA
;
293
m_ctrlSubtype
= 8;
294
break
;
295
case
WIFI_MAC_QOSDATA_CFACK
:
296
m_ctrlType
=
TYPE_DATA
;
297
m_ctrlSubtype
= 9;
298
break
;
299
case
WIFI_MAC_QOSDATA_CFPOLL
:
300
m_ctrlType
=
TYPE_DATA
;
301
m_ctrlSubtype
= 10;
302
break
;
303
case
WIFI_MAC_QOSDATA_CFACK_CFPOLL
:
304
m_ctrlType
=
TYPE_DATA
;
305
m_ctrlSubtype
= 11;
306
break
;
307
case
WIFI_MAC_QOSDATA_NULL
:
308
m_ctrlType
=
TYPE_DATA
;
309
m_ctrlSubtype
= 12;
310
break
;
311
case
WIFI_MAC_QOSDATA_NULL_CFPOLL
:
312
m_ctrlType
=
TYPE_DATA
;
313
m_ctrlSubtype
= 14;
314
break
;
315
case
WIFI_MAC_QOSDATA_NULL_CFACK_CFPOLL
:
316
m_ctrlType
=
TYPE_DATA
;
317
m_ctrlSubtype
= 15;
318
break
;
319
}
320
m_ctrlToDs
= 0;
321
m_ctrlFromDs
= 0;
322
}
323
324
void
325
WifiMacHeader::SetRawDuration
(uint16_t duration)
326
{
327
m_duration
= duration;
328
}
329
330
void
331
WifiMacHeader::SetDuration
(
Time
duration)
332
{
333
int64_t duration_us = ceil ((
double
)duration.
GetNanoSeconds
() / 1000);
334
NS_ASSERT
(duration_us >= 0 && duration_us <= 0x7fff);
335
m_duration
=
static_cast<
uint16_t
>
(duration_us);
336
}
337
338
void
WifiMacHeader::SetId
(uint16_t
id
)
339
{
340
m_duration
= id;
341
}
342
343
void
WifiMacHeader::SetSequenceNumber
(uint16_t seq)
344
{
345
m_seqSeq
= seq;
346
}
347
348
void
WifiMacHeader::SetFragmentNumber
(uint8_t frag)
349
{
350
m_seqFrag
= frag;
351
}
352
353
void
WifiMacHeader::SetNoMoreFragments
(
void
)
354
{
355
m_ctrlMoreFrag
= 0;
356
}
357
358
void
WifiMacHeader::SetMoreFragments
(
void
)
359
{
360
m_ctrlMoreFrag
= 1;
361
}
362
363
void
WifiMacHeader::SetOrder
(
void
)
364
{
365
m_ctrlOrder
= 1;
366
}
367
368
void
WifiMacHeader::SetNoOrder
(
void
)
369
{
370
m_ctrlOrder
= 0;
371
}
372
373
void
WifiMacHeader::SetRetry
(
void
)
374
{
375
m_ctrlRetry
= 1;
376
}
377
378
void
WifiMacHeader::SetNoRetry
(
void
)
379
{
380
m_ctrlRetry
= 0;
381
}
382
383
void
WifiMacHeader::SetQosTid
(uint8_t tid)
384
{
385
m_qosTid
= tid;
386
}
387
388
void
WifiMacHeader::SetQosEosp
()
389
{
390
m_qosEosp
= 1;
391
}
392
393
void
WifiMacHeader::SetQosNoEosp
()
394
{
395
m_qosEosp
= 0;
396
}
397
398
void
WifiMacHeader::SetQosAckPolicy
(
enum
QosAckPolicy
policy)
399
{
400
switch
(policy)
401
{
402
case
NORMAL_ACK
:
403
m_qosAckPolicy
= 0;
404
break
;
405
case
NO_ACK
:
406
m_qosAckPolicy
= 1;
407
break
;
408
case
NO_EXPLICIT_ACK
:
409
m_qosAckPolicy
= 2;
410
break
;
411
case
BLOCK_ACK
:
412
m_qosAckPolicy
= 3;
413
break
;
414
}
415
}
416
417
void
418
WifiMacHeader::SetQosNormalAck
()
419
{
420
m_qosAckPolicy
= 0;
421
}
422
423
void
424
WifiMacHeader::SetQosBlockAck
()
425
{
426
m_qosAckPolicy
= 3;
427
}
428
429
void
430
WifiMacHeader::SetQosNoAck
()
431
{
432
m_qosAckPolicy
= 1;
433
}
434
435
void
WifiMacHeader::SetQosAmsdu
(
void
)
436
{
437
m_amsduPresent
= 1;
438
}
439
440
void
WifiMacHeader::SetQosNoAmsdu
(
void
)
441
{
442
m_amsduPresent
= 0;
443
}
444
445
void
WifiMacHeader::SetQosTxopLimit
(uint8_t txop)
446
{
447
m_qosStuff
= txop;
448
}
449
450
void
WifiMacHeader::SetQosMeshControlPresent
(
void
)
451
{
452
// mark bit 0 of this variable instead of bit 8, since m_qosStuff is
453
// shifted by one byte when serialized
454
m_qosStuff
=
m_qosStuff
| 0x01;
// bit 8 of QoS Control Field
455
}
456
457
void
WifiMacHeader::SetQosNoMeshControlPresent
()
458
{
459
// clear bit 0 of this variable instead of bit 8, since m_qosStuff is
460
// shifted by one byte when serialized
461
m_qosStuff
=
m_qosStuff
& 0xfe;
// bit 8 of QoS Control Field
462
}
463
464
465
Mac48Address
466
WifiMacHeader::GetAddr1
(
void
)
const
467
{
468
return
m_addr1
;
469
}
470
471
Mac48Address
472
WifiMacHeader::GetAddr2
(
void
)
const
473
{
474
return
m_addr2
;
475
}
476
477
Mac48Address
478
WifiMacHeader::GetAddr3
(
void
)
const
479
{
480
return
m_addr3
;
481
}
482
483
Mac48Address
484
WifiMacHeader::GetAddr4
(
void
)
const
485
{
486
return
m_addr4
;
487
}
488
489
enum
WifiMacType
490
WifiMacHeader::GetType
(
void
)
const
491
{
492
switch
(
m_ctrlType
)
493
{
494
case
TYPE_MGT
:
495
switch
(
m_ctrlSubtype
)
496
{
497
case
0:
498
return
WIFI_MAC_MGT_ASSOCIATION_REQUEST
;
499
break
;
500
case
1:
501
return
WIFI_MAC_MGT_ASSOCIATION_RESPONSE
;
502
break
;
503
case
2:
504
return
WIFI_MAC_MGT_REASSOCIATION_REQUEST
;
505
break
;
506
case
3:
507
return
WIFI_MAC_MGT_REASSOCIATION_RESPONSE
;
508
break
;
509
case
4:
510
return
WIFI_MAC_MGT_PROBE_REQUEST
;
511
break
;
512
case
5:
513
return
WIFI_MAC_MGT_PROBE_RESPONSE
;
514
break
;
515
case
8:
516
return
WIFI_MAC_MGT_BEACON
;
517
break
;
518
case
10:
519
return
WIFI_MAC_MGT_DISASSOCIATION
;
520
break
;
521
case
11:
522
return
WIFI_MAC_MGT_AUTHENTICATION
;
523
break
;
524
case
12:
525
return
WIFI_MAC_MGT_DEAUTHENTICATION
;
526
break
;
527
case
13:
528
return
WIFI_MAC_MGT_ACTION
;
529
break
;
530
case
14:
531
return
WIFI_MAC_MGT_ACTION_NO_ACK
;
532
break
;
533
case
15:
534
return
WIFI_MAC_MGT_MULTIHOP_ACTION
;
535
break
;
536
}
537
break
;
538
case
TYPE_CTL
:
539
switch
(
m_ctrlSubtype
)
540
{
541
case
SUBTYPE_CTL_BACKREQ
:
542
return
WIFI_MAC_CTL_BACKREQ
;
543
break
;
544
case
SUBTYPE_CTL_BACKRESP
:
545
return
WIFI_MAC_CTL_BACKRESP
;
546
break
;
547
case
SUBTYPE_CTL_RTS
:
548
return
WIFI_MAC_CTL_RTS
;
549
break
;
550
case
SUBTYPE_CTL_CTS
:
551
return
WIFI_MAC_CTL_CTS
;
552
break
;
553
case
SUBTYPE_CTL_ACK
:
554
return
WIFI_MAC_CTL_ACK
;
555
break
;
556
}
557
break
;
558
case
TYPE_DATA
:
559
switch
(
m_ctrlSubtype
)
560
{
561
case
0:
562
return
WIFI_MAC_DATA
;
563
break
;
564
case
1:
565
return
WIFI_MAC_DATA_CFACK
;
566
break
;
567
case
2:
568
return
WIFI_MAC_DATA_CFPOLL
;
569
break
;
570
case
3:
571
return
WIFI_MAC_DATA_CFACK_CFPOLL
;
572
break
;
573
case
4:
574
return
WIFI_MAC_DATA_NULL
;
575
break
;
576
case
5:
577
return
WIFI_MAC_DATA_NULL_CFACK
;
578
break
;
579
case
6:
580
return
WIFI_MAC_DATA_NULL_CFPOLL
;
581
break
;
582
case
7:
583
return
WIFI_MAC_DATA_NULL_CFACK_CFPOLL
;
584
break
;
585
case
8:
586
return
WIFI_MAC_QOSDATA
;
587
break
;
588
case
9:
589
return
WIFI_MAC_QOSDATA_CFACK
;
590
break
;
591
case
10:
592
return
WIFI_MAC_QOSDATA_CFPOLL
;
593
break
;
594
case
11:
595
return
WIFI_MAC_QOSDATA_CFACK_CFPOLL
;
596
break
;
597
case
12:
598
return
WIFI_MAC_QOSDATA_NULL
;
599
break
;
600
case
14:
601
return
WIFI_MAC_QOSDATA_NULL_CFPOLL
;
602
break
;
603
case
15:
604
return
WIFI_MAC_QOSDATA_NULL_CFACK_CFPOLL
;
605
break
;
606
}
607
break
;
608
}
609
// NOTREACHED
610
NS_ASSERT
(
false
);
611
return
(
enum
WifiMacType
) -1;
612
}
613
614
bool
615
WifiMacHeader::IsFromDs
(
void
)
const
616
{
617
return
m_ctrlFromDs
== 1;
618
}
619
620
bool
621
WifiMacHeader::IsToDs
(
void
)
const
622
{
623
return
m_ctrlToDs
== 1;
624
}
625
626
bool
627
WifiMacHeader::IsData
(
void
)
const
628
{
629
return
(
m_ctrlType
==
TYPE_DATA
);
630
631
}
632
633
bool
634
WifiMacHeader::IsQosData
(
void
)
const
635
{
636
return
(
m_ctrlType
==
TYPE_DATA
&& (
m_ctrlSubtype
& 0x08));
637
}
638
639
bool
640
WifiMacHeader::IsCtl
(
void
)
const
641
{
642
return
(
m_ctrlType
==
TYPE_CTL
);
643
}
644
645
bool
646
WifiMacHeader::IsMgt
(
void
)
const
647
{
648
return
(
m_ctrlType
==
TYPE_MGT
);
649
}
650
651
bool
652
WifiMacHeader::IsCfpoll
(
void
)
const
653
{
654
switch
(
GetType
())
655
{
656
case
WIFI_MAC_DATA_CFPOLL
:
657
case
WIFI_MAC_DATA_CFACK_CFPOLL
:
658
case
WIFI_MAC_DATA_NULL_CFPOLL
:
659
case
WIFI_MAC_DATA_NULL_CFACK_CFPOLL
:
660
case
WIFI_MAC_QOSDATA_CFPOLL
:
661
case
WIFI_MAC_QOSDATA_CFACK_CFPOLL
:
662
case
WIFI_MAC_QOSDATA_NULL_CFPOLL
:
663
case
WIFI_MAC_QOSDATA_NULL_CFACK_CFPOLL
:
664
return
true
;
665
break
;
666
default
:
667
return
false
;
668
break
;
669
}
670
}
671
672
bool
673
WifiMacHeader::IsRts
(
void
)
const
674
{
675
return
(
GetType
() ==
WIFI_MAC_CTL_RTS
);
676
}
677
678
bool
679
WifiMacHeader::IsCts
(
void
)
const
680
{
681
return
(
GetType
() ==
WIFI_MAC_CTL_CTS
);
682
}
683
684
bool
685
WifiMacHeader::IsAck
(
void
)
const
686
{
687
return
(
GetType
() ==
WIFI_MAC_CTL_ACK
);
688
}
689
690
bool
691
WifiMacHeader::IsAssocReq
(
void
)
const
692
{
693
return
(
GetType
() ==
WIFI_MAC_MGT_ASSOCIATION_REQUEST
);
694
}
695
696
bool
697
WifiMacHeader::IsAssocResp
(
void
)
const
698
{
699
return
(
GetType
() ==
WIFI_MAC_MGT_ASSOCIATION_RESPONSE
);
700
}
701
702
bool
703
WifiMacHeader::IsReassocReq
(
void
)
const
704
{
705
return
(
GetType
() ==
WIFI_MAC_MGT_REASSOCIATION_REQUEST
);
706
}
707
708
bool
709
WifiMacHeader::IsReassocResp
(
void
)
const
710
{
711
return
(
GetType
() ==
WIFI_MAC_MGT_REASSOCIATION_RESPONSE
);
712
}
713
714
bool
715
WifiMacHeader::IsProbeReq
(
void
)
const
716
{
717
return
(
GetType
() ==
WIFI_MAC_MGT_PROBE_REQUEST
);
718
}
719
720
bool
721
WifiMacHeader::IsProbeResp
(
void
)
const
722
{
723
return
(
GetType
() ==
WIFI_MAC_MGT_PROBE_RESPONSE
);
724
}
725
726
bool
727
WifiMacHeader::IsBeacon
(
void
)
const
728
{
729
return
(
GetType
() ==
WIFI_MAC_MGT_BEACON
);
730
}
731
732
bool
733
WifiMacHeader::IsDisassociation
(
void
)
const
734
{
735
return
(
GetType
() ==
WIFI_MAC_MGT_DISASSOCIATION
);
736
}
737
738
bool
739
WifiMacHeader::IsAuthentication
(
void
)
const
740
{
741
return
(
GetType
() ==
WIFI_MAC_MGT_AUTHENTICATION
);
742
}
743
744
bool
745
WifiMacHeader::IsDeauthentication
(
void
)
const
746
{
747
return
(
GetType
() ==
WIFI_MAC_MGT_DEAUTHENTICATION
);
748
}
749
750
bool
751
WifiMacHeader::IsAction
(
void
)
const
752
{
753
return
(
GetType
() ==
WIFI_MAC_MGT_ACTION
);
754
}
755
756
bool
757
WifiMacHeader::IsMultihopAction
(
void
)
const
758
{
759
return
(
GetType
() ==
WIFI_MAC_MGT_MULTIHOP_ACTION
);
760
}
761
762
bool
763
WifiMacHeader::IsBlockAckReq
(
void
)
const
764
{
765
return
(
GetType
() ==
WIFI_MAC_CTL_BACKREQ
) ?
true
:
false
;
766
}
767
768
bool
769
WifiMacHeader::IsBlockAck
(
void
)
const
770
{
771
return
(
GetType
() ==
WIFI_MAC_CTL_BACKRESP
) ?
true
:
false
;
772
}
773
774
uint16_t
775
WifiMacHeader::GetRawDuration
(
void
)
const
776
{
777
return
m_duration
;
778
}
779
780
Time
781
WifiMacHeader::GetDuration
(
void
)
const
782
{
783
return
MicroSeconds
(
m_duration
);
784
}
785
786
uint16_t
787
WifiMacHeader::GetSequenceControl
(
void
)
const
788
{
789
return
(
m_seqSeq
<< 4) |
m_seqFrag
;
790
}
791
792
uint16_t
793
WifiMacHeader::GetSequenceNumber
(
void
)
const
794
{
795
return
m_seqSeq
;
796
}
797
798
uint16_t
799
WifiMacHeader::GetFragmentNumber
(
void
)
const
800
{
801
return
m_seqFrag
;
802
}
803
804
bool
805
WifiMacHeader::IsRetry
(
void
)
const
806
{
807
return
(
m_ctrlRetry
== 1);
808
}
809
810
bool
811
WifiMacHeader::IsMoreFragments
(
void
)
const
812
{
813
return
(
m_ctrlMoreFrag
== 1);
814
}
815
816
bool
817
WifiMacHeader::IsQosBlockAck
(
void
)
const
818
{
819
NS_ASSERT
(
IsQosData
());
820
return
(
m_qosAckPolicy
== 3);
821
}
822
823
bool
824
WifiMacHeader::IsQosNoAck
(
void
)
const
825
{
826
NS_ASSERT
(
IsQosData
());
827
return
(
m_qosAckPolicy
== 1);
828
}
829
830
bool
831
WifiMacHeader::IsQosAck
(
void
)
const
832
{
833
NS_ASSERT
(
IsQosData
());
834
return
(
m_qosAckPolicy
== 0);
835
}
836
837
bool
838
WifiMacHeader::IsQosEosp
(
void
)
const
839
{
840
NS_ASSERT
(
IsQosData
());
841
return
(
m_qosEosp
== 1);
842
}
843
844
bool
845
WifiMacHeader::IsQosAmsdu
(
void
)
const
846
{
847
NS_ASSERT
(
IsQosData
());
848
return
(
m_amsduPresent
== 1);
849
}
850
851
uint8_t
852
WifiMacHeader::GetQosTid
(
void
)
const
853
{
854
NS_ASSERT
(
IsQosData
());
855
return
m_qosTid
;
856
}
857
858
enum
WifiMacHeader::QosAckPolicy
859
WifiMacHeader::GetQosAckPolicy
(
void
)
const
860
{
861
switch
(
m_qosAckPolicy
)
862
{
863
case
0:
864
return
NORMAL_ACK
;
865
break
;
866
case
1:
867
return
NO_ACK
;
868
break
;
869
case
2:
870
return
NO_EXPLICIT_ACK
;
871
break
;
872
case
3:
873
return
BLOCK_ACK
;
874
break
;
875
}
876
// NOTREACHED
877
NS_ASSERT
(
false
);
878
return
(
enum
QosAckPolicy
) -1;
879
}
880
881
uint8_t
882
WifiMacHeader::GetQosTxopLimit
(
void
)
const
883
{
884
NS_ASSERT
(
IsQosData
());
885
return
m_qosStuff
;
886
}
887
888
uint16_t
889
WifiMacHeader::GetFrameControl
(
void
)
const
890
{
891
uint16_t val = 0;
892
val |= (
m_ctrlType
<< 2) & (0x3 << 2);
893
val |= (
m_ctrlSubtype
<< 4) & (0xf << 4);
894
val |= (
m_ctrlToDs
<< 8) & (0x1 << 8);
895
val |= (
m_ctrlFromDs
<< 9) & (0x1 << 9);
896
val |= (
m_ctrlMoreFrag
<< 10) & (0x1 << 10);
897
val |= (
m_ctrlRetry
<< 11) & (0x1 << 11);
898
val |= (
m_ctrlMoreData
<< 13) & (0x1 << 13);
899
val |= (
m_ctrlWep
<< 14) & (0x1 << 14);
900
val |= (
m_ctrlOrder
<< 15) & (0x1 << 15);
901
return
val;
902
}
903
904
uint16_t
905
WifiMacHeader::GetQosControl
(
void
)
const
906
{
907
uint16_t val = 0;
908
val |=
m_qosTid
;
909
val |=
m_qosEosp
<< 4;
910
val |=
m_qosAckPolicy
<< 5;
911
val |=
m_amsduPresent
<< 7;
912
val |=
m_qosStuff
<< 8;
913
return
val;
914
}
915
916
void
917
WifiMacHeader::SetFrameControl
(uint16_t ctrl)
918
{
919
m_ctrlType
= (ctrl >> 2) & 0x03;
920
m_ctrlSubtype
= (ctrl >> 4) & 0x0f;
921
m_ctrlToDs
= (ctrl >> 8) & 0x01;
922
m_ctrlFromDs
= (ctrl >> 9) & 0x01;
923
m_ctrlMoreFrag
= (ctrl >> 10) & 0x01;
924
m_ctrlRetry
= (ctrl >> 11) & 0x01;
925
m_ctrlMoreData
= (ctrl >> 13) & 0x01;
926
m_ctrlWep
= (ctrl >> 14) & 0x01;
927
m_ctrlOrder
= (ctrl >> 15) & 0x01;
928
}
929
void
930
WifiMacHeader::SetSequenceControl
(uint16_t seq)
931
{
932
m_seqFrag
= seq & 0x0f;
933
m_seqSeq
= (seq >> 4) & 0x0fff;
934
}
935
void
936
WifiMacHeader::SetQosControl
(uint16_t qos)
937
{
938
m_qosTid
= qos & 0x000f;
939
m_qosEosp
= (qos >> 4) & 0x0001;
940
m_qosAckPolicy
= (qos >> 5) & 0x0003;
941
m_amsduPresent
= (qos >> 7) & 0x0001;
942
m_qosStuff
= (qos >> 8) & 0x00ff;
943
}
944
945
uint32_t
946
WifiMacHeader::GetSize
(
void
)
const
947
{
948
uint32_t size = 0;
949
switch
(
m_ctrlType
)
950
{
951
case
TYPE_MGT
:
952
size = 2 + 2 + 6 + 6 + 6 + 2;
953
break
;
954
case
TYPE_CTL
:
955
switch
(
m_ctrlSubtype
)
956
{
957
case
SUBTYPE_CTL_RTS
:
958
size = 2 + 2 + 6 + 6;
959
break
;
960
case
SUBTYPE_CTL_CTS
:
961
case
SUBTYPE_CTL_ACK
:
962
size = 2 + 2 + 6;
963
break
;
964
case
SUBTYPE_CTL_BACKREQ
:
965
case
SUBTYPE_CTL_BACKRESP
:
966
size = 2 + 2 + 6 + 6;
967
break
;
968
case
SUBTYPE_CTL_CTLWRAPPER
:
969
size = 2 + 2 + 6 + 2 + 4;
970
break
;
971
}
972
break
;
973
case
TYPE_DATA
:
974
size = 2 + 2 + 6 + 6 + 6 + 2;
975
if
(
m_ctrlToDs
&&
m_ctrlFromDs
)
976
{
977
size += 6;
978
}
979
if
(
m_ctrlSubtype
& 0x08)
980
{
981
size += 2;
982
}
983
break
;
984
}
985
return
size;
986
}
987
988
const
char
*
989
WifiMacHeader::GetTypeString
(
void
)
const
990
{
991
#define FOO(x) \
992
case WIFI_MAC_ ## x: \
993
return # x; \
994
break;
995
996
switch
(
GetType
())
997
{
998
FOO
(CTL_RTS);
999
FOO
(CTL_CTS);
1000
FOO
(CTL_ACK);
1001
FOO
(CTL_BACKREQ);
1002
FOO
(CTL_BACKRESP);
1003
1004
FOO
(MGT_BEACON);
1005
FOO
(MGT_ASSOCIATION_REQUEST);
1006
FOO
(MGT_ASSOCIATION_RESPONSE);
1007
FOO
(MGT_DISASSOCIATION);
1008
FOO
(MGT_REASSOCIATION_REQUEST);
1009
FOO
(MGT_REASSOCIATION_RESPONSE);
1010
FOO
(MGT_PROBE_REQUEST);
1011
FOO
(MGT_PROBE_RESPONSE);
1012
FOO
(MGT_AUTHENTICATION);
1013
FOO
(MGT_DEAUTHENTICATION);
1014
FOO
(MGT_ACTION);
1015
FOO
(MGT_ACTION_NO_ACK);
1016
FOO
(MGT_MULTIHOP_ACTION);
1017
1018
FOO
(
DATA
);
1019
FOO
(DATA_CFACK);
1020
FOO
(DATA_CFPOLL);
1021
FOO
(DATA_CFACK_CFPOLL);
1022
FOO
(DATA_NULL);
1023
FOO
(DATA_NULL_CFACK);
1024
FOO
(DATA_NULL_CFPOLL);
1025
FOO
(DATA_NULL_CFACK_CFPOLL);
1026
FOO
(QOSDATA);
1027
FOO
(QOSDATA_CFACK);
1028
FOO
(QOSDATA_CFPOLL);
1029
FOO
(QOSDATA_CFACK_CFPOLL);
1030
FOO
(QOSDATA_NULL);
1031
FOO
(QOSDATA_NULL_CFPOLL);
1032
FOO
(QOSDATA_NULL_CFACK_CFPOLL);
1033
default
:
1034
return
"ERROR"
;
1035
}
1036
#undef FOO
1037
// needed to make gcc 4.0.1 ppc darwin happy.
1038
return
"BIG_ERROR"
;
1039
}
1040
1041
TypeId
1042
WifiMacHeader::GetTypeId
(
void
)
1043
{
1044
static
TypeId
tid =
TypeId
(
"ns3::WifiMacHeader"
)
1045
.
SetParent
<
Header
> ()
1046
.SetGroupName (
"Wifi"
)
1047
.AddConstructor<
WifiMacHeader
> ()
1048
;
1049
return
tid;
1050
}
1051
1052
TypeId
1053
WifiMacHeader::GetInstanceTypeId
(
void
)
const
1054
{
1055
return
GetTypeId
();
1056
}
1057
1058
void
1059
WifiMacHeader::PrintFrameControl
(std::ostream &os)
const
1060
{
1061
os <<
"ToDS="
<< std::hex << (int)
m_ctrlToDs
<<
", FromDS="
<< std::hex << (
int
)
m_ctrlFromDs
1062
<<
", MoreFrag="
<< std::hex << (int)
m_ctrlMoreFrag
<<
", Retry="
<< std::hex << (
int
)
m_ctrlRetry
1063
<<
", MoreData="
<< std::hex << (int)
m_ctrlMoreData
<< std::dec
1064
;
1065
}
1066
1067
void
1068
WifiMacHeader::Print
(std::ostream &os)
const
1069
{
1070
os <<
GetTypeString
() <<
" "
;
1071
switch
(
GetType
())
1072
{
1073
case
WIFI_MAC_CTL_RTS
:
1074
os <<
"Duration/ID="
<<
m_duration
<<
"us"
1075
<<
", RA="
<<
m_addr1
<<
", TA="
<<
m_addr2
;
1076
break
;
1077
case
WIFI_MAC_CTL_CTS
:
1078
case
WIFI_MAC_CTL_ACK
:
1079
os <<
"Duration/ID="
<<
m_duration
<<
"us"
1080
<<
", RA="
<<
m_addr1
;
1081
break
;
1082
case
WIFI_MAC_CTL_BACKREQ
:
1083
break
;
1084
case
WIFI_MAC_CTL_BACKRESP
:
1085
break
;
1086
case
WIFI_MAC_CTL_CTLWRAPPER
:
1087
break
;
1088
1089
case
WIFI_MAC_MGT_BEACON
:
1090
case
WIFI_MAC_MGT_ASSOCIATION_REQUEST
:
1091
case
WIFI_MAC_MGT_ASSOCIATION_RESPONSE
:
1092
case
WIFI_MAC_MGT_DISASSOCIATION
:
1093
case
WIFI_MAC_MGT_REASSOCIATION_REQUEST
:
1094
case
WIFI_MAC_MGT_REASSOCIATION_RESPONSE
:
1095
case
WIFI_MAC_MGT_PROBE_REQUEST
:
1096
case
WIFI_MAC_MGT_PROBE_RESPONSE
:
1097
case
WIFI_MAC_MGT_AUTHENTICATION
:
1098
case
WIFI_MAC_MGT_DEAUTHENTICATION
:
1099
PrintFrameControl
(os);
1100
os <<
" Duration/ID="
<<
m_duration
<<
"us"
1101
<<
", DA="
<< m_addr1 <<
", SA="
<< m_addr2
1102
<<
", BSSID="
<<
m_addr3
<<
", FragNumber="
<< std::hex << (int)
m_seqFrag
<< std::dec
1103
<<
", SeqNumber="
<<
m_seqSeq
;
1104
break
;
1105
case
WIFI_MAC_MGT_ACTION
:
1106
case
WIFI_MAC_MGT_ACTION_NO_ACK
:
1107
PrintFrameControl
(os);
1108
os <<
" Duration/ID="
<<
m_duration
<<
"us"
1109
<<
", DA="
<< m_addr1 <<
", SA="
<< m_addr2 <<
", BSSID="
<<
m_addr3
1110
<<
", FragNumber="
<< std::hex << (int)
m_seqFrag
<< std::dec <<
", SeqNumber="
<<
m_seqSeq
;
1111
break
;
1112
case
WIFI_MAC_MGT_MULTIHOP_ACTION
:
1113
os <<
" Duration/ID="
<<
m_duration
<<
"us"
1114
<<
", RA="
<< m_addr1 <<
", TA="
<< m_addr2 <<
", DA="
<<
m_addr3
1115
<<
", FragNumber="
<< std::hex << (int)
m_seqFrag
<< std::dec <<
", SeqNumber="
<<
m_seqSeq
;
1116
break
;
1117
case
WIFI_MAC_DATA
:
1118
PrintFrameControl
(os);
1119
os <<
" Duration/ID="
<<
m_duration
<<
"us"
;
1120
if
(!
m_ctrlToDs
&& !
m_ctrlFromDs
)
1121
{
1122
os <<
", DA="
<< m_addr1 <<
", SA="
<< m_addr2 <<
", BSSID="
<<
m_addr3
;
1123
}
1124
else
if
(!
m_ctrlToDs
&&
m_ctrlFromDs
)
1125
{
1126
os <<
", DA="
<< m_addr1 <<
", SA="
<<
m_addr3
<<
", BSSID="
<<
m_addr2
;
1127
}
1128
else
if
(
m_ctrlToDs
&& !
m_ctrlFromDs
)
1129
{
1130
os <<
", DA="
<<
m_addr3
<<
", SA="
<< m_addr2 <<
", BSSID="
<<
m_addr1
;
1131
}
1132
else
if
(
m_ctrlToDs
&&
m_ctrlFromDs
)
1133
{
1134
os <<
", DA="
<<
m_addr3
<<
", SA="
<<
m_addr4
<<
", RA="
<< m_addr1 <<
", TA="
<<
m_addr2
;
1135
}
1136
else
1137
{
1138
NS_FATAL_ERROR
(
"Impossible ToDs and FromDs flags combination"
);
1139
}
1140
os <<
", FragNumber="
<< std::hex << (int)
m_seqFrag
<< std::dec
1141
<<
", SeqNumber="
<<
m_seqSeq
;
1142
break
;
1143
case
WIFI_MAC_DATA_CFACK
:
1144
case
WIFI_MAC_DATA_CFPOLL
:
1145
case
WIFI_MAC_DATA_CFACK_CFPOLL
:
1146
case
WIFI_MAC_DATA_NULL
:
1147
case
WIFI_MAC_DATA_NULL_CFACK
:
1148
case
WIFI_MAC_DATA_NULL_CFPOLL
:
1149
case
WIFI_MAC_DATA_NULL_CFACK_CFPOLL
:
1150
case
WIFI_MAC_QOSDATA
:
1151
case
WIFI_MAC_QOSDATA_CFACK
:
1152
case
WIFI_MAC_QOSDATA_CFPOLL
:
1153
case
WIFI_MAC_QOSDATA_CFACK_CFPOLL
:
1154
case
WIFI_MAC_QOSDATA_NULL
:
1155
case
WIFI_MAC_QOSDATA_NULL_CFPOLL
:
1156
case
WIFI_MAC_QOSDATA_NULL_CFACK_CFPOLL
:
1157
break
;
1158
}
1159
}
1160
1161
uint32_t
1162
WifiMacHeader::GetSerializedSize
(
void
)
const
1163
{
1164
return
GetSize
();
1165
}
1166
1167
void
1168
WifiMacHeader::Serialize
(
Buffer::Iterator
i)
const
1169
{
1170
i.
WriteHtolsbU16
(
GetFrameControl
());
1171
i.
WriteHtolsbU16
(
m_duration
);
1172
WriteTo
(i,
m_addr1
);
1173
switch
(
m_ctrlType
)
1174
{
1175
case
TYPE_MGT
:
1176
WriteTo
(i,
m_addr2
);
1177
WriteTo
(i,
m_addr3
);
1178
i.
WriteHtolsbU16
(
GetSequenceControl
());
1179
break
;
1180
case
TYPE_CTL
:
1181
switch
(
m_ctrlSubtype
)
1182
{
1183
case
SUBTYPE_CTL_RTS
:
1184
WriteTo
(i,
m_addr2
);
1185
break
;
1186
case
SUBTYPE_CTL_CTS
:
1187
case
SUBTYPE_CTL_ACK
:
1188
break
;
1189
case
SUBTYPE_CTL_BACKREQ
:
1190
case
SUBTYPE_CTL_BACKRESP
:
1191
WriteTo
(i,
m_addr2
);
1192
break
;
1193
default
:
1194
//NOTREACHED
1195
NS_ASSERT
(
false
);
1196
break
;
1197
}
1198
break
;
1199
case
TYPE_DATA
:
1200
{
1201
WriteTo
(i,
m_addr2
);
1202
WriteTo
(i,
m_addr3
);
1203
i.
WriteHtolsbU16
(
GetSequenceControl
());
1204
if
(
m_ctrlToDs
&&
m_ctrlFromDs
)
1205
{
1206
WriteTo
(i,
m_addr4
);
1207
}
1208
if
(
m_ctrlSubtype
& 0x08)
1209
{
1210
i.
WriteHtolsbU16
(
GetQosControl
());
1211
}
1212
}
break
;
1213
default
:
1214
//NOTREACHED
1215
NS_ASSERT
(
false
);
1216
break
;
1217
}
1218
}
1219
1220
uint32_t
1221
WifiMacHeader::Deserialize
(
Buffer::Iterator
start
)
1222
{
1223
Buffer::Iterator
i =
start
;
1224
uint16_t frame_control = i.
ReadLsbtohU16
();
1225
SetFrameControl
(frame_control);
1226
m_duration
= i.
ReadLsbtohU16
();
1227
ReadFrom
(i,
m_addr1
);
1228
switch
(
m_ctrlType
)
1229
{
1230
case
TYPE_MGT
:
1231
ReadFrom
(i,
m_addr2
);
1232
ReadFrom
(i,
m_addr3
);
1233
SetSequenceControl
(i.
ReadLsbtohU16
());
1234
break
;
1235
case
TYPE_CTL
:
1236
switch
(
m_ctrlSubtype
)
1237
{
1238
case
SUBTYPE_CTL_RTS
:
1239
ReadFrom
(i,
m_addr2
);
1240
break
;
1241
case
SUBTYPE_CTL_CTS
:
1242
case
SUBTYPE_CTL_ACK
:
1243
break
;
1244
case
SUBTYPE_CTL_BACKREQ
:
1245
case
SUBTYPE_CTL_BACKRESP
:
1246
ReadFrom
(i,
m_addr2
);
1247
break
;
1248
}
1249
break
;
1250
case
TYPE_DATA
:
1251
ReadFrom
(i,
m_addr2
);
1252
ReadFrom
(i,
m_addr3
);
1253
SetSequenceControl
(i.
ReadLsbtohU16
());
1254
if
(
m_ctrlToDs
&&
m_ctrlFromDs
)
1255
{
1256
ReadFrom
(i,
m_addr4
);
1257
}
1258
if
(
m_ctrlSubtype
& 0x08)
1259
{
1260
SetQosControl
(i.
ReadLsbtohU16
());
1261
}
1262
break
;
1263
}
1264
return
i.
GetDistanceFrom
(start);
1265
}
1266
1267
}
//namespace ns3
ns3::WifiMacHeader::m_ctrlMoreData
uint8_t m_ctrlMoreData
Definition:
wifi-mac-header.h:644
ns3::WifiMacHeader::NO_EXPLICIT_ACK
Definition:
wifi-mac-header.h:90
ns3::Header
Protocol header serialization and deserialization.
Definition:
header.h:42
ns3::DATA
Definition:
ul-job.h:38
ns3::WIFI_MAC_QOSDATA_CFACK_CFPOLL
Definition:
wifi-mac-header.h:69
ns3::WIFI_MAC_CTL_CTS
Definition:
wifi-mac-header.h:38
ns3::WifiMacHeader::IsBeacon
bool IsBeacon(void) const
Return true if the header is a Beacon header.
Definition:
wifi-mac-header.cc:727
ns3::WifiMacHeader::SetAction
void SetAction()
Set Type/Subtype values for an action header.
Definition:
wifi-mac-header.cc:164
ns3::WifiMacHeader::SetRetry
void SetRetry(void)
Set the Retry bit in the Frame Control field.
Definition:
wifi-mac-header.cc:373
ns3::WifiMacHeader::SetMoreFragments
void SetMoreFragments(void)
Set the More Fragment bit in the Frame Control field.
Definition:
wifi-mac-header.cc:358
ns3::WIFI_MAC_CTL_CTLWRAPPER
Definition:
wifi-mac-header.h:42
ns3::Time
Simulation virtual time values and global simulation resolution.
Definition:
nstime.h:102
ns3::WIFI_MAC_QOSDATA_NULL
Definition:
wifi-mac-header.h:70
ns3::WifiMacHeader::GetSize
uint32_t GetSize(void) const
Return the size of the WifiMacHeader in octets.
Definition:
wifi-mac-header.cc:946
ns3::WIFI_MAC_MGT_PROBE_REQUEST
Definition:
wifi-mac-header.h:50
ns3::WifiMacHeader::GetFragmentNumber
uint16_t GetFragmentNumber(void) const
Return the fragment number of the header.
Definition:
wifi-mac-header.cc:799
ns3::WifiMacHeader::SetQosAckPolicy
void SetQosAckPolicy(enum QosAckPolicy policy)
Set the QoS ACK policy in the QoS control field.
Definition:
wifi-mac-header.cc:398
ns3::WifiMacHeader::SetRawDuration
void SetRawDuration(uint16_t duration)
Set the Duration/ID field with the given raw uint16_t value.
Definition:
wifi-mac-header.cc:325
ns3::WifiMacHeader::SetFrameControl
void SetFrameControl(uint16_t control)
Set the Frame Control field with the given raw value.
Definition:
wifi-mac-header.cc:917
ns3::WIFI_MAC_DATA_NULL_CFACK
Definition:
wifi-mac-header.h:63
ns3::WIFI_MAC_MGT_ACTION_NO_ACK
Definition:
wifi-mac-header.h:55
ns3::WifiMacHeader::IsReassocResp
bool IsReassocResp(void) const
Return true if the header is a Reassociation Response header.
Definition:
wifi-mac-header.cc:709
NS_OBJECT_ENSURE_REGISTERED
#define NS_OBJECT_ENSURE_REGISTERED(type)
Register an Object subclass with the TypeId system.
Definition:
object-base.h:44
ns3::WifiMacHeader::SetProbeReq
void SetProbeReq(void)
Set Type/Subtype values for a probe request header.
Definition:
wifi-mac-header.cc:122
ns3::WifiMacHeader::GetRawDuration
uint16_t GetRawDuration(void) const
Return the raw duration from the Duration/ID field.
Definition:
wifi-mac-header.cc:775
ns3::SUBTYPE_CTL_BACKRESP
Definition:
wifi-mac-header.cc:40
ns3::WifiMacHeader::SetDuration
void SetDuration(Time duration)
Set the Duration/ID field with the given duration (Time object).
Definition:
wifi-mac-header.cc:331
ns3::TYPE_MGT
Definition:
wifi-mac-header.cc:32
ns3::WIFI_MAC_DATA_CFACK_CFPOLL
Definition:
wifi-mac-header.h:61
ns3::WifiMacHeader::m_ctrlType
uint8_t m_ctrlType
Definition:
wifi-mac-header.h:638
ns3::WIFI_MAC_MGT_ASSOCIATION_REQUEST
Definition:
wifi-mac-header.h:45
ns3::WIFI_MAC_MGT_AUTHENTICATION
Definition:
wifi-mac-header.h:52
ns3::WifiMacHeader::IsAction
bool IsAction() const
Return true if the header is an Action header.
Definition:
wifi-mac-header.cc:751
ns3::ReadFrom
void ReadFrom(Buffer::Iterator &i, Ipv4Address &ad)
Read an Ipv4Address from a Buffer.
Definition:
address-utils.cc:70
visualizer.core.start
def start()
Definition:
core.py:1482
ns3::WifiMacHeader::m_addr2
Mac48Address m_addr2
Definition:
wifi-mac-header.h:649
ns3::WifiMacHeader::GetAddr3
Mac48Address GetAddr3(void) const
Return the address in the Address 3 field.
Definition:
wifi-mac-header.cc:478
ns3::WifiMacHeader::SetNoMoreFragments
void SetNoMoreFragments(void)
Un-set the More Fragment bit in the Frame Control Field.
Definition:
wifi-mac-header.cc:353
ns3::WifiMacHeader::m_qosAckPolicy
uint8_t m_qosAckPolicy
Definition:
wifi-mac-header.h:656
ns3::WifiMacHeader::GetAddr4
Mac48Address GetAddr4(void) const
Return the address in the Address 4 field.
Definition:
wifi-mac-header.cc:484
NS_ASSERT
#define NS_ASSERT(condition)
At runtime, in debugging builds, if this condition is not true, the program prints the source file...
Definition:
assert.h:67
ns3::WriteTo
void WriteTo(Buffer::Iterator &i, Ipv4Address ad)
Write an Ipv4Address to a Buffer.
Definition:
address-utils.cc:28
ns3::WifiMacHeader::GetType
enum WifiMacType GetType(void) const
Return the type (enum WifiMacType)
Definition:
wifi-mac-header.cc:490
ns3::WifiMacHeader::m_qosEosp
uint8_t m_qosEosp
Definition:
wifi-mac-header.h:655
ns3::WifiMacHeader::SetId
void SetId(uint16_t id)
Set the Duration/ID field with the given ID.
Definition:
wifi-mac-header.cc:338
ns3::WifiMacHeader::IsAssocReq
bool IsAssocReq(void) const
Return true if the header is an Association Request header.
Definition:
wifi-mac-header.cc:691
ns3::WifiMacHeader::GetQosControl
uint16_t GetQosControl(void) const
Return the raw QoS Control field.
Definition:
wifi-mac-header.cc:905
ns3::WIFI_MAC_QOSDATA_NULL_CFPOLL
Definition:
wifi-mac-header.h:71
NS_FATAL_ERROR
#define NS_FATAL_ERROR(msg)
Report a fatal error with a message and terminate.
Definition:
fatal-error.h:145
ns3::WifiMacHeader::IsBlockAck
bool IsBlockAck(void) const
Return true if the header is a Block ACK header.
Definition:
wifi-mac-header.cc:769
ns3::WifiMacHeader::IsAssocResp
bool IsAssocResp(void) const
Return true if the header is an Association Response header.
Definition:
wifi-mac-header.cc:697
ns3::WifiMacHeader::SetQosControl
void SetQosControl(uint16_t qos)
Set the QoS Control field with the given raw value.
Definition:
wifi-mac-header.cc:936
ns3::WifiMacHeader::GetFrameControl
uint16_t GetFrameControl(void) const
Return the raw Frame Control field.
Definition:
wifi-mac-header.cc:889
ns3::WifiMacHeader::IsCtl
bool IsCtl(void) const
Return true if the Type is Control.
Definition:
wifi-mac-header.cc:640
ns3::WifiMacHeader::SetProbeResp
void SetProbeResp(void)
Set Type/Subtype values for a probe response header.
Definition:
wifi-mac-header.cc:129
ns3::WifiMacHeader::m_seqFrag
uint8_t m_seqFrag
Definition:
wifi-mac-header.h:651
ns3::WifiMacHeader::SetQosNoAck
void SetQosNoAck(void)
Set the QoS ACK policy in the QoS control field to no ACK.
Definition:
wifi-mac-header.cc:430
ns3::WifiMacHeader::IsQosAmsdu
bool IsQosAmsdu(void) const
Check if the A-MSDU present bit is set in the QoS control field.
Definition:
wifi-mac-header.cc:845
ns3::WifiMacHeader::IsProbeResp
bool IsProbeResp(void) const
Return true if the header is a Probe Response header.
Definition:
wifi-mac-header.cc:721
ns3::WifiMacHeader::m_addr1
Mac48Address m_addr1
Definition:
wifi-mac-header.h:648
ns3::Buffer::Iterator::GetDistanceFrom
uint32_t GetDistanceFrom(Iterator const &o) const
Definition:
buffer.cc:783
ns3::WifiMacHeader::m_addr3
Mac48Address m_addr3
Definition:
wifi-mac-header.h:650
ns3::Buffer::Iterator
iterator in a Buffer instance
Definition:
buffer.h:98
ns3::WIFI_MAC_DATA_CFACK
Definition:
wifi-mac-header.h:59
ns3::WifiMacHeader::IsCfpoll
bool IsCfpoll(void) const
Return true if the Type/Subtype is one of the possible CF-Poll headers.
Definition:
wifi-mac-header.cc:652
ns3::WIFI_MAC_DATA_NULL
Definition:
wifi-mac-header.h:62
ns3::WifiMacHeader::IsMoreFragments
bool IsMoreFragments(void) const
Return if the More Fragment bit is set.
Definition:
wifi-mac-header.cc:811
ns3::WifiMacHeader::GetDuration
Time GetDuration(void) const
Return the duration from the Duration/ID field (Time object).
Definition:
wifi-mac-header.cc:781
ns3::WifiMacHeader::GetQosTid
uint8_t GetQosTid(void) const
Return the Traffic ID of a QoS header.
Definition:
wifi-mac-header.cc:852
ns3::WIFI_MAC_MGT_REASSOCIATION_REQUEST
Definition:
wifi-mac-header.h:48
ns3::TYPE_CTL
Definition:
wifi-mac-header.cc:33
ns3::WifiMacHeader::IsReassocReq
bool IsReassocReq(void) const
Return true if the header is a Reassociation Request header.
Definition:
wifi-mac-header.cc:703
ns3::WifiMacHeader::GetSerializedSize
virtual uint32_t GetSerializedSize(void) const
Definition:
wifi-mac-header.cc:1162
ns3::WifiMacHeader::GetQosTxopLimit
uint8_t GetQosTxopLimit(void) const
Return the TXOP limit.
Definition:
wifi-mac-header.cc:882
ns3::WifiMacHeader::SetAddr1
void SetAddr1(Mac48Address address)
Fill the Address 1 field with the given address.
Definition:
wifi-mac-header.cc:84
ns3::WifiMacHeader::m_ctrlToDs
uint8_t m_ctrlToDs
Definition:
wifi-mac-header.h:640
ns3::SUBTYPE_CTL_BACKREQ
Definition:
wifi-mac-header.cc:39
ns3::SUBTYPE_CTL_CTS
Definition:
wifi-mac-header.cc:42
ns3::WifiMacHeader::SetBeacon
void SetBeacon(void)
Set Type/Subtype values for a beacon header.
Definition:
wifi-mac-header.cc:136
ns3::WifiMacHeader::SetDsNotTo
void SetDsNotTo(void)
Un-set the To DS bit in the Frame Control field.
Definition:
wifi-mac-header.cc:78
ns3::WifiMacHeader::SetAddr3
void SetAddr3(Mac48Address address)
Fill the Address 3 field with the given address.
Definition:
wifi-mac-header.cc:96
ns3::WifiMacHeader::SetAddr4
void SetAddr4(Mac48Address address)
Fill the Address 4 field with the given address.
Definition:
wifi-mac-header.cc:102
ns3::WifiMacType
WifiMacType
Combination of valid MAC header type/subtype.
Definition:
wifi-mac-header.h:35
ns3::WifiMacHeader::GetSequenceControl
uint16_t GetSequenceControl(void) const
Return the raw Sequence Control field.
Definition:
wifi-mac-header.cc:787
ns3::WifiMacHeader::IsProbeReq
bool IsProbeReq(void) const
Return true if the header is a Probe Request header.
Definition:
wifi-mac-header.cc:715
ns3::WIFI_MAC_MGT_MULTIHOP_ACTION
Definition:
wifi-mac-header.h:56
ns3::WifiMacHeader::Print
virtual void Print(std::ostream &os) const
Definition:
wifi-mac-header.cc:1068
ns3::WifiMacHeader::SetOrder
void SetOrder(void)
Set order bit in the frame control field.
Definition:
wifi-mac-header.cc:363
ns3::WifiMacHeader::IsAuthentication
bool IsAuthentication(void) const
Return true if the header is an Authentication header.
Definition:
wifi-mac-header.cc:739
wifi-mac-header.h
ns3::WifiMacHeader::IsQosBlockAck
bool IsQosBlockAck(void) const
Return if the QoS ACK policy is Block ACK.
Definition:
wifi-mac-header.cc:817
ns3::WifiMacHeader::m_amsduPresent
uint8_t m_amsduPresent
Definition:
wifi-mac-header.h:657
ns3::WifiMacHeader::NORMAL_ACK
Definition:
wifi-mac-header.h:88
ns3::WifiMacHeader::m_addr4
Mac48Address m_addr4
Definition:
wifi-mac-header.h:653
ns3::WifiMacHeader::m_ctrlMoreFrag
uint8_t m_ctrlMoreFrag
Definition:
wifi-mac-header.h:642
ns3::WifiMacHeader::m_ctrlFromDs
uint8_t m_ctrlFromDs
Definition:
wifi-mac-header.h:641
ns3::WifiMacHeader::IsMgt
bool IsMgt(void) const
Return true if the Type is Management.
Definition:
wifi-mac-header.cc:646
ns3::WifiMacHeader::SetAssocReq
void SetAssocReq(void)
Set Type/Subtype values for an association request header.
Definition:
wifi-mac-header.cc:108
ns3::WifiMacHeader::m_ctrlOrder
uint8_t m_ctrlOrder
Definition:
wifi-mac-header.h:646
ns3::WifiMacHeader::SetQosTid
void SetQosTid(uint8_t tid)
Set the TID for the QoS header.
Definition:
wifi-mac-header.cc:383
ns3::WifiMacHeader::GetInstanceTypeId
virtual TypeId GetInstanceTypeId(void) const
Get the most derived TypeId for this Object.
Definition:
wifi-mac-header.cc:1053
ns3::WifiMacHeader::SetSequenceControl
void SetSequenceControl(uint16_t seq)
Set the Sequence Control field with the given raw value.
Definition:
wifi-mac-header.cc:930
ns3::WifiMacHeader::SetNoRetry
void SetNoRetry(void)
Un-set the Retry bit in the Frame Control field.
Definition:
wifi-mac-header.cc:378
ns3::WifiMacHeader::IsToDs
bool IsToDs(void) const
Definition:
wifi-mac-header.cc:621
ns3
Every class exported by the ns3 library is enclosed in the ns3 namespace.
ns3::WifiMacHeader::m_seqSeq
uint16_t m_seqSeq
Definition:
wifi-mac-header.h:652
ns3::WifiMacHeader::IsDisassociation
bool IsDisassociation(void) const
Return true if the header is a Disassociation header.
Definition:
wifi-mac-header.cc:733
ns3::WifiMacHeader::SetAddr2
void SetAddr2(Mac48Address address)
Fill the Address 2 field with the given address.
Definition:
wifi-mac-header.cc:90
ns3::WIFI_MAC_MGT_DISASSOCIATION
Definition:
wifi-mac-header.h:47
ns3::WIFI_MAC_MGT_PROBE_RESPONSE
Definition:
wifi-mac-header.h:51
ns3::WifiMacHeader::QosAckPolicy
QosAckPolicy
ACK policy for QoS frames.
Definition:
wifi-mac-header.h:86
ns3::TYPE_DATA
Definition:
wifi-mac-header.cc:34
ns3::Mac48Address
an EUI-48 address
Definition:
mac48-address.h:43
ns3::WIFI_MAC_DATA
Definition:
wifi-mac-header.h:58
ns3::WIFI_MAC_QOSDATA_NULL_CFACK_CFPOLL
Definition:
wifi-mac-header.h:72
ns3::WifiMacHeader::SetBlockAck
void SetBlockAck(void)
Set Type/Subtype values for a Block Ack header.
Definition:
wifi-mac-header.cc:150
ns3::WIFI_MAC_DATA_NULL_CFPOLL
Definition:
wifi-mac-header.h:64
ns3::WifiMacHeader::PrintFrameControl
void PrintFrameControl(std::ostream &os) const
Print the Frame Control field to the output stream.
Definition:
wifi-mac-header.cc:1059
ns3::WifiMacHeader::GetTypeString
const char * GetTypeString(void) const
Return a string corresponds to the header type.
Definition:
wifi-mac-header.cc:989
FOO
#define FOO(x)
ns3::Buffer::Iterator::WriteHtolsbU16
void WriteHtolsbU16(uint16_t data)
Definition:
buffer.cc:910
ns3::WifiMacHeader::WifiMacHeader
WifiMacHeader()
Definition:
wifi-mac-header.cc:48
ns3::WifiMacHeader::m_duration
uint16_t m_duration
Definition:
wifi-mac-header.h:647
ns3::Time::GetNanoSeconds
int64_t GetNanoSeconds(void) const
Get an approximation of the time stored in this instance in the indicated unit.
Definition:
nstime.h:353
ns3::WifiMacHeader::SetAssocResp
void SetAssocResp(void)
Set Type/Subtype values for an association response header.
Definition:
wifi-mac-header.cc:115
ns3::WifiMacHeader::m_ctrlRetry
uint8_t m_ctrlRetry
Definition:
wifi-mac-header.h:643
ns3::SUBTYPE_CTL_ACK
Definition:
wifi-mac-header.cc:43
ns3::WIFI_MAC_QOSDATA_CFPOLL
Definition:
wifi-mac-header.h:68
ns3::SUBTYPE_CTL_RTS
Definition:
wifi-mac-header.cc:41
ns3::WifiMacHeader::SetQosTxopLimit
void SetQosTxopLimit(uint8_t txop)
Set TXOP limit in the QoS control field.
Definition:
wifi-mac-header.cc:445
ns3::WifiMacHeader::m_qosStuff
uint16_t m_qosStuff
Definition:
wifi-mac-header.h:658
ns3::WifiMacHeader::SetSequenceNumber
void SetSequenceNumber(uint16_t seq)
Set the sequence number of the header.
Definition:
wifi-mac-header.cc:343
ns3::WifiMacHeader::IsData
bool IsData(void) const
Return true if the Type is DATA.
Definition:
wifi-mac-header.cc:627
ns3::WifiMacHeader::IsQosData
bool IsQosData(void) const
Return true if the Type is DATA and Subtype is one of the possible values for QoS DATA...
Definition:
wifi-mac-header.cc:634
ns3::WIFI_MAC_DATA_NULL_CFACK_CFPOLL
Definition:
wifi-mac-header.h:65
ns3::WifiMacHeader::IsBlockAckReq
bool IsBlockAckReq(void) const
Return true if the header is a Block ACK Request header.
Definition:
wifi-mac-header.cc:763
ns3::WifiMacHeader::SetQosNormalAck
void SetQosNormalAck(void)
Set the QoS ACK policy in the QoS control field to normal ACK.
Definition:
wifi-mac-header.cc:418
ns3::WifiMacHeader::SetTypeData
void SetTypeData(void)
Set Type/Subtype values for a data packet with no subtype equal to 0.
Definition:
wifi-mac-header.cc:157
ns3::WIFI_MAC_QOSDATA
Definition:
wifi-mac-header.h:66
ns3::WIFI_MAC_CTL_BACKREQ
Definition:
wifi-mac-header.h:40
ns3::WifiMacHeader::SetQosNoAmsdu
void SetQosNoAmsdu(void)
Set that A-MSDU is not present.
Definition:
wifi-mac-header.cc:440
ns3::WIFI_MAC_MGT_BEACON
Definition:
wifi-mac-header.h:44
ns3::WIFI_MAC_MGT_REASSOCIATION_RESPONSE
Definition:
wifi-mac-header.h:49
ns3::WifiMacHeader::Serialize
virtual void Serialize(Buffer::Iterator start) const
Definition:
wifi-mac-header.cc:1168
ns3::WifiMacHeader::SetDsTo
void SetDsTo(void)
Set the To DS bit in the Frame Control field.
Definition:
wifi-mac-header.cc:72
ns3::WifiMacHeader::IsFromDs
bool IsFromDs(void) const
Definition:
wifi-mac-header.cc:615
ns3::WifiMacHeader::SetQosEosp
void SetQosEosp()
Set the end of service period (EOSP) bit in the QoS control field.
Definition:
wifi-mac-header.cc:388
ns3::WifiMacHeader::IsQosEosp
bool IsQosEosp(void) const
Return if the end of service period (EOSP) is set.
Definition:
wifi-mac-header.cc:838
ns3::WifiMacHeader::~WifiMacHeader
~WifiMacHeader()
Definition:
wifi-mac-header.cc:55
ns3::WifiMacHeader::Deserialize
virtual uint32_t Deserialize(Buffer::Iterator start)
Definition:
wifi-mac-header.cc:1221
ns3::WifiMacHeader::SetDsFrom
void SetDsFrom(void)
Set the From DS bit in the Frame Control field.
Definition:
wifi-mac-header.cc:60
ns3::WifiMacHeader::SetNoOrder
void SetNoOrder(void)
Unset order bit in the frame control field.
Definition:
wifi-mac-header.cc:368
ns3::Buffer::Iterator::ReadLsbtohU16
uint16_t ReadLsbtohU16(void)
Definition:
buffer.cc:1065
ns3::WifiMacHeader::IsMultihopAction
bool IsMultihopAction() const
Check if the header is a Multihop action header.
Definition:
wifi-mac-header.cc:757
ns3::MicroSeconds
Time MicroSeconds(uint64_t value)
Construct a Time in the indicated unit.
Definition:
nstime.h:911
ns3::WIFI_MAC_CTL_BACKRESP
Definition:
wifi-mac-header.h:41
ns3::WIFI_MAC_MGT_ASSOCIATION_RESPONSE
Definition:
wifi-mac-header.h:46
ns3::WifiMacHeader::SetType
void SetType(enum WifiMacType type)
Set Type/Subtype values with the correct values depending on the given type.
Definition:
wifi-mac-header.cc:178
ns3::WIFI_MAC_CTL_ACK
Definition:
wifi-mac-header.h:39
ns3::WifiMacHeader::IsCts
bool IsCts(void) const
Return true if the header is a CTS header.
Definition:
wifi-mac-header.cc:679
ns3::WifiMacHeader::GetAddr1
Mac48Address GetAddr1(void) const
Return the address in the Address 1 field.
Definition:
wifi-mac-header.cc:466
ns3::WIFI_MAC_CTL_RTS
Definition:
wifi-mac-header.h:37
first.address
tuple address
Definition:
first.py:37
ns3::WifiMacHeader::m_qosTid
uint8_t m_qosTid
Definition:
wifi-mac-header.h:654
ns3::SUBTYPE_CTL_CTLWRAPPER
Definition:
wifi-mac-header.cc:44
ns3::WifiMacHeader::SetQosMeshControlPresent
void SetQosMeshControlPresent()
Set the Mesh Control Present flag for the QoS header.
Definition:
wifi-mac-header.cc:450
ns3::WifiMacHeader::SetQosNoMeshControlPresent
void SetQosNoMeshControlPresent()
Clear the Mesh Control Present flag for the QoS header.
Definition:
wifi-mac-header.cc:457
ns3::WifiMacHeader::m_ctrlSubtype
uint8_t m_ctrlSubtype
Definition:
wifi-mac-header.h:639
ns3::WIFI_MAC_MGT_ACTION
Definition:
wifi-mac-header.h:54
ns3::WifiMacHeader::SetMultihopAction
void SetMultihopAction()
Set Type/Subtype values for a multihop action header.
Definition:
wifi-mac-header.cc:171
ns3::WifiMacHeader::IsDeauthentication
bool IsDeauthentication(void) const
Return true if the header is a Deauthentication header.
Definition:
wifi-mac-header.cc:745
ns3::WifiMacHeader::IsRts
bool IsRts(void) const
Return true if the header is a RTS header.
Definition:
wifi-mac-header.cc:673
ns3::WifiMacHeader::SetQosNoEosp
void SetQosNoEosp()
Un-set the end of service period (EOSP) bit in the QoS control field.
Definition:
wifi-mac-header.cc:393
ns3::WifiMacHeader::IsAck
bool IsAck(void) const
Return true if the header is an ACK header.
Definition:
wifi-mac-header.cc:685
ns3::WifiMacHeader::GetTypeId
static TypeId GetTypeId(void)
Definition:
wifi-mac-header.cc:1042
ns3::WifiMacHeader::SetFragmentNumber
void SetFragmentNumber(uint8_t frag)
Set the fragment number of the header.
Definition:
wifi-mac-header.cc:348
ns3::WifiMacHeader::SetBlockAckReq
void SetBlockAckReq(void)
Set Type/Subtype values for a Block Ack Request header.
Definition:
wifi-mac-header.cc:143
ns3::WIFI_MAC_DATA_CFPOLL
Definition:
wifi-mac-header.h:60
ns3::WifiMacHeader::BLOCK_ACK
Definition:
wifi-mac-header.h:91
ns3::TypeId
a unique identifier for an interface.
Definition:
type-id.h:58
ns3::TypeId::SetParent
TypeId SetParent(TypeId tid)
Set the parent TypeId.
Definition:
type-id.cc:826
ns3::WifiMacHeader::SetQosAmsdu
void SetQosAmsdu(void)
Set that A-MSDU is present.
Definition:
wifi-mac-header.cc:435
ns3::WifiMacHeader::GetQosAckPolicy
enum QosAckPolicy GetQosAckPolicy(void) const
Return the QoS ACK Policy of a QoS header.
Definition:
wifi-mac-header.cc:859
ns3::WIFI_MAC_MGT_DEAUTHENTICATION
Definition:
wifi-mac-header.h:53
ns3::WifiMacHeader::IsRetry
bool IsRetry(void) const
Return if the Retry bit is set.
Definition:
wifi-mac-header.cc:805
ns3::WifiMacHeader
Implements the IEEE 802.11 MAC header.
Definition:
wifi-mac-header.h:80
ns3::WifiMacHeader::GetAddr2
Mac48Address GetAddr2(void) const
Return the address in the Address 2 field.
Definition:
wifi-mac-header.cc:472
ns3::WifiMacHeader::IsQosNoAck
bool IsQosNoAck(void) const
Return if the QoS ACK policy is No ACK.
Definition:
wifi-mac-header.cc:824
ns3::WifiMacHeader::SetQosBlockAck
void SetQosBlockAck(void)
Set the QoS ACK policy in the QoS control field to block ACK.
Definition:
wifi-mac-header.cc:424
ns3::WifiMacHeader::m_ctrlWep
uint8_t m_ctrlWep
Definition:
wifi-mac-header.h:645
ns3::WifiMacHeader::IsQosAck
bool IsQosAck(void) const
Return if the QoS ACK policy is Normal ACK.
Definition:
wifi-mac-header.cc:831
ns3::WifiMacHeader::SetDsNotFrom
void SetDsNotFrom(void)
Un-set the From DS bit in the Frame Control field.
Definition:
wifi-mac-header.cc:66
ns3::WifiMacHeader::NO_ACK
Definition:
wifi-mac-header.h:89
ns3::WIFI_MAC_QOSDATA_CFACK
Definition:
wifi-mac-header.h:67
ns3::WifiMacHeader::GetSequenceNumber
uint16_t GetSequenceNumber(void) const
Return the sequence number of the header.
Definition:
wifi-mac-header.cc:793
src
wifi
model
wifi-mac-header.cc
Generated on Wed Sep 30 2015 15:55:53 for ns-3 by
1.8.9.1