This documentation is not the
Latest Release
.
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
23
#include "ns3/assert.h"
24
#include "ns3/address-utils.h"
25
#include "
wifi-mac-header.h
"
26
27
namespace
ns3
{
28
29
NS_OBJECT_ENSURE_REGISTERED
(WifiMacHeader);
30
31
enum
32
{
33
TYPE_MGT
= 0,
34
TYPE_CTL
= 1,
35
TYPE_DATA
= 2
36
};
37
38
enum
39
{
40
//Reserved: 0 - 6
41
SUBTYPE_CTL_CTLWRAPPER
= 7,
42
SUBTYPE_CTL_BACKREQ
= 8,
43
SUBTYPE_CTL_BACKRESP
= 9,
44
SUBTYPE_CTL_RTS
= 11,
45
SUBTYPE_CTL_CTS
= 12,
46
SUBTYPE_CTL_ACK
= 13
47
};
48
49
WifiMacHeader::WifiMacHeader
()
50
: m_ctrlMoreData (0),
51
m_ctrlWep (0),
52
m_ctrlOrder (1),
53
m_amsduPresent (0)
54
{
55
}
56
57
WifiMacHeader::~WifiMacHeader
()
58
{
59
}
60
61
void
62
WifiMacHeader::SetDsFrom
(
void
)
63
{
64
m_ctrlFromDs
= 1;
65
}
66
67
void
68
WifiMacHeader::SetDsNotFrom
(
void
)
69
{
70
m_ctrlFromDs
= 0;
71
}
72
73
void
74
WifiMacHeader::SetDsTo
(
void
)
75
{
76
m_ctrlToDs
= 1;
77
}
78
79
void
80
WifiMacHeader::SetDsNotTo
(
void
)
81
{
82
m_ctrlToDs
= 0;
83
}
84
85
void
86
WifiMacHeader::SetAddr1
(
Mac48Address
address
)
87
{
88
m_addr1
=
address
;
89
}
90
91
void
92
WifiMacHeader::SetAddr2
(
Mac48Address
address
)
93
{
94
m_addr2
=
address
;
95
}
96
97
void
98
WifiMacHeader::SetAddr3
(
Mac48Address
address
)
99
{
100
m_addr3
=
address
;
101
}
102
103
void
104
WifiMacHeader::SetAddr4
(
Mac48Address
address
)
105
{
106
m_addr4
=
address
;
107
}
108
109
void
110
WifiMacHeader::SetAssocReq
(
void
)
111
{
112
m_ctrlType
=
TYPE_MGT
;
113
m_ctrlSubtype
= 0;
114
}
115
116
void
117
WifiMacHeader::SetAssocResp
(
void
)
118
{
119
m_ctrlType
=
TYPE_MGT
;
120
m_ctrlSubtype
= 1;
121
}
122
123
void
124
WifiMacHeader::SetProbeReq
(
void
)
125
{
126
m_ctrlType
=
TYPE_MGT
;
127
m_ctrlSubtype
= 4;
128
}
129
130
void
131
WifiMacHeader::SetProbeResp
(
void
)
132
{
133
m_ctrlType
=
TYPE_MGT
;
134
m_ctrlSubtype
= 5;
135
}
136
137
void
138
WifiMacHeader::SetBeacon
(
void
)
139
{
140
m_ctrlType
=
TYPE_MGT
;
141
m_ctrlSubtype
= 8;
142
}
143
144
void
145
WifiMacHeader::SetBlockAckReq
(
void
)
146
{
147
m_ctrlType
=
TYPE_CTL
;
148
m_ctrlSubtype
= 8;
149
}
150
151
void
152
WifiMacHeader::SetBlockAck
(
void
)
153
{
154
m_ctrlType
=
TYPE_CTL
;
155
m_ctrlSubtype
= 9;
156
}
157
158
void
159
WifiMacHeader::SetTypeData
(
void
)
160
{
161
m_ctrlType
=
TYPE_DATA
;
162
m_ctrlSubtype
= 0;
163
}
164
165
void
166
WifiMacHeader::SetAction
(
void
)
167
{
168
m_ctrlType
=
TYPE_MGT
;
169
m_ctrlSubtype
= 0x0D;
170
}
171
172
void
173
WifiMacHeader::SetMultihopAction
(
void
)
174
{
175
m_ctrlType
=
TYPE_MGT
;
176
m_ctrlSubtype
= 0x0F;
177
}
178
179
void
180
WifiMacHeader::SetType
(
enum
WifiMacType
type)
181
{
182
switch
(type)
183
{
184
case
WIFI_MAC_CTL_CTLWRAPPER
:
185
m_ctrlType
=
TYPE_CTL
;
186
m_ctrlSubtype
=
SUBTYPE_CTL_CTLWRAPPER
;
187
break
;
188
case
WIFI_MAC_CTL_BACKREQ
:
189
m_ctrlType
=
TYPE_CTL
;
190
m_ctrlSubtype
=
SUBTYPE_CTL_BACKREQ
;
191
break
;
192
case
WIFI_MAC_CTL_BACKRESP
:
193
m_ctrlType
=
TYPE_CTL
;
194
m_ctrlSubtype
=
SUBTYPE_CTL_BACKRESP
;
195
break
;
196
case
WIFI_MAC_CTL_RTS
:
197
m_ctrlType
=
TYPE_CTL
;
198
m_ctrlSubtype
=
SUBTYPE_CTL_RTS
;
199
break
;
200
case
WIFI_MAC_CTL_CTS
:
201
m_ctrlType
=
TYPE_CTL
;
202
m_ctrlSubtype
=
SUBTYPE_CTL_CTS
;
203
break
;
204
case
WIFI_MAC_CTL_ACK
:
205
m_ctrlType
=
TYPE_CTL
;
206
m_ctrlSubtype
=
SUBTYPE_CTL_ACK
;
207
break
;
208
case
WIFI_MAC_MGT_ASSOCIATION_REQUEST
:
209
m_ctrlType
=
TYPE_MGT
;
210
m_ctrlSubtype
= 0;
211
break
;
212
case
WIFI_MAC_MGT_ASSOCIATION_RESPONSE
:
213
m_ctrlType
=
TYPE_MGT
;
214
m_ctrlSubtype
= 1;
215
break
;
216
case
WIFI_MAC_MGT_REASSOCIATION_REQUEST
:
217
m_ctrlType
=
TYPE_MGT
;
218
m_ctrlSubtype
= 2;
219
break
;
220
case
WIFI_MAC_MGT_REASSOCIATION_RESPONSE
:
221
m_ctrlType
=
TYPE_MGT
;
222
m_ctrlSubtype
= 3;
223
break
;
224
case
WIFI_MAC_MGT_PROBE_REQUEST
:
225
m_ctrlType
=
TYPE_MGT
;
226
m_ctrlSubtype
= 4;
227
break
;
228
case
WIFI_MAC_MGT_PROBE_RESPONSE
:
229
m_ctrlType
=
TYPE_MGT
;
230
m_ctrlSubtype
= 5;
231
break
;
232
case
WIFI_MAC_MGT_BEACON
:
233
m_ctrlType
=
TYPE_MGT
;
234
m_ctrlSubtype
= 8;
235
break
;
236
case
WIFI_MAC_MGT_DISASSOCIATION
:
237
m_ctrlType
=
TYPE_MGT
;
238
m_ctrlSubtype
= 10;
239
break
;
240
case
WIFI_MAC_MGT_AUTHENTICATION
:
241
m_ctrlType
=
TYPE_MGT
;
242
m_ctrlSubtype
= 11;
243
break
;
244
case
WIFI_MAC_MGT_DEAUTHENTICATION
:
245
m_ctrlType
=
TYPE_MGT
;
246
m_ctrlSubtype
= 12;
247
break
;
248
case
WIFI_MAC_MGT_ACTION
:
249
m_ctrlType
=
TYPE_MGT
;
250
m_ctrlSubtype
= 13;
251
break
;
252
case
WIFI_MAC_MGT_ACTION_NO_ACK
:
253
m_ctrlType
=
TYPE_MGT
;
254
m_ctrlSubtype
= 14;
255
break
;
256
case
WIFI_MAC_MGT_MULTIHOP_ACTION
:
257
m_ctrlType
=
TYPE_MGT
;
258
m_ctrlSubtype
= 15;
259
break
;
260
case
WIFI_MAC_DATA
:
261
m_ctrlType
=
TYPE_DATA
;
262
m_ctrlSubtype
= 0;
263
break
;
264
case
WIFI_MAC_DATA_CFACK
:
265
m_ctrlType
=
TYPE_DATA
;
266
m_ctrlSubtype
= 1;
267
break
;
268
case
WIFI_MAC_DATA_CFPOLL
:
269
m_ctrlType
=
TYPE_DATA
;
270
m_ctrlSubtype
= 2;
271
break
;
272
case
WIFI_MAC_DATA_CFACK_CFPOLL
:
273
m_ctrlType
=
TYPE_DATA
;
274
m_ctrlSubtype
= 3;
275
break
;
276
case
WIFI_MAC_DATA_NULL
:
277
m_ctrlType
=
TYPE_DATA
;
278
m_ctrlSubtype
= 4;
279
break
;
280
case
WIFI_MAC_DATA_NULL_CFACK
:
281
m_ctrlType
=
TYPE_DATA
;
282
m_ctrlSubtype
= 5;
283
break
;
284
case
WIFI_MAC_DATA_NULL_CFPOLL
:
285
m_ctrlType
=
TYPE_DATA
;
286
m_ctrlSubtype
= 6;
287
break
;
288
case
WIFI_MAC_DATA_NULL_CFACK_CFPOLL
:
289
m_ctrlType
=
TYPE_DATA
;
290
m_ctrlSubtype
= 7;
291
break
;
292
case
WIFI_MAC_QOSDATA
:
293
m_ctrlType
=
TYPE_DATA
;
294
m_ctrlSubtype
= 8;
295
break
;
296
case
WIFI_MAC_QOSDATA_CFACK
:
297
m_ctrlType
=
TYPE_DATA
;
298
m_ctrlSubtype
= 9;
299
break
;
300
case
WIFI_MAC_QOSDATA_CFPOLL
:
301
m_ctrlType
=
TYPE_DATA
;
302
m_ctrlSubtype
= 10;
303
break
;
304
case
WIFI_MAC_QOSDATA_CFACK_CFPOLL
:
305
m_ctrlType
=
TYPE_DATA
;
306
m_ctrlSubtype
= 11;
307
break
;
308
case
WIFI_MAC_QOSDATA_NULL
:
309
m_ctrlType
=
TYPE_DATA
;
310
m_ctrlSubtype
= 12;
311
break
;
312
case
WIFI_MAC_QOSDATA_NULL_CFPOLL
:
313
m_ctrlType
=
TYPE_DATA
;
314
m_ctrlSubtype
= 14;
315
break
;
316
case
WIFI_MAC_QOSDATA_NULL_CFACK_CFPOLL
:
317
m_ctrlType
=
TYPE_DATA
;
318
m_ctrlSubtype
= 15;
319
break
;
320
}
321
m_ctrlToDs
= 0;
322
m_ctrlFromDs
= 0;
323
}
324
325
void
326
WifiMacHeader::SetRawDuration
(uint16_t duration)
327
{
328
m_duration
= duration;
329
}
330
331
void
332
WifiMacHeader::SetDuration
(
Time
duration)
333
{
334
int64_t duration_us = ceil ((
double
)duration.
GetNanoSeconds
() / 1000);
335
NS_ASSERT
(duration_us >= 0 && duration_us <= 0x7fff);
336
m_duration
=
static_cast<
uint16_t
>
(duration_us);
337
}
338
339
void
WifiMacHeader::SetId
(uint16_t
id
)
340
{
341
m_duration
= id;
342
}
343
344
void
WifiMacHeader::SetSequenceNumber
(uint16_t seq)
345
{
346
m_seqSeq
= seq;
347
}
348
349
void
WifiMacHeader::SetFragmentNumber
(uint8_t frag)
350
{
351
m_seqFrag
= frag;
352
}
353
354
void
WifiMacHeader::SetNoMoreFragments
(
void
)
355
{
356
m_ctrlMoreFrag
= 0;
357
}
358
359
void
WifiMacHeader::SetMoreFragments
(
void
)
360
{
361
m_ctrlMoreFrag
= 1;
362
}
363
364
void
WifiMacHeader::SetOrder
(
void
)
365
{
366
m_ctrlOrder
= 1;
367
}
368
369
void
WifiMacHeader::SetNoOrder
(
void
)
370
{
371
m_ctrlOrder
= 0;
372
}
373
374
void
WifiMacHeader::SetRetry
(
void
)
375
{
376
m_ctrlRetry
= 1;
377
}
378
379
void
WifiMacHeader::SetNoRetry
(
void
)
380
{
381
m_ctrlRetry
= 0;
382
}
383
384
void
WifiMacHeader::SetQosTid
(uint8_t tid)
385
{
386
m_qosTid
= tid;
387
}
388
389
void
WifiMacHeader::SetQosEosp
()
390
{
391
m_qosEosp
= 1;
392
}
393
394
void
WifiMacHeader::SetQosNoEosp
()
395
{
396
m_qosEosp
= 0;
397
}
398
399
void
WifiMacHeader::SetQosAckPolicy
(
enum
QosAckPolicy
policy)
400
{
401
switch
(policy)
402
{
403
case
NORMAL_ACK
:
404
m_qosAckPolicy
= 0;
405
break
;
406
case
NO_ACK
:
407
m_qosAckPolicy
= 1;
408
break
;
409
case
NO_EXPLICIT_ACK
:
410
m_qosAckPolicy
= 2;
411
break
;
412
case
BLOCK_ACK
:
413
m_qosAckPolicy
= 3;
414
break
;
415
}
416
}
417
418
void
419
WifiMacHeader::SetQosNormalAck
()
420
{
421
m_qosAckPolicy
= 0;
422
}
423
424
void
425
WifiMacHeader::SetQosBlockAck
()
426
{
427
m_qosAckPolicy
= 3;
428
}
429
430
void
431
WifiMacHeader::SetQosNoAck
()
432
{
433
m_qosAckPolicy
= 1;
434
}
435
436
void
WifiMacHeader::SetQosAmsdu
(
void
)
437
{
438
m_amsduPresent
= 1;
439
}
440
441
void
WifiMacHeader::SetQosNoAmsdu
(
void
)
442
{
443
m_amsduPresent
= 0;
444
}
445
446
void
WifiMacHeader::SetQosTxopLimit
(uint8_t txop)
447
{
448
m_qosStuff
= txop;
449
}
450
451
void
WifiMacHeader::SetQosMeshControlPresent
(
void
)
452
{
453
//Mark bit 0 of this variable instead of bit 8, since m_qosStuff is
454
//shifted by one byte when serialized
455
m_qosStuff
=
m_qosStuff
| 0x01;
//bit 8 of QoS Control Field
456
}
457
458
void
WifiMacHeader::SetQosNoMeshControlPresent
()
459
{
460
//Clear bit 0 of this variable instead of bit 8, since m_qosStuff is
461
//shifted by one byte when serialized
462
m_qosStuff
=
m_qosStuff
& 0xfe;
//bit 8 of QoS Control Field
463
}
464
465
466
Mac48Address
467
WifiMacHeader::GetAddr1
(
void
)
const
468
{
469
return
m_addr1
;
470
}
471
472
Mac48Address
473
WifiMacHeader::GetAddr2
(
void
)
const
474
{
475
return
m_addr2
;
476
}
477
478
Mac48Address
479
WifiMacHeader::GetAddr3
(
void
)
const
480
{
481
return
m_addr3
;
482
}
483
484
Mac48Address
485
WifiMacHeader::GetAddr4
(
void
)
const
486
{
487
return
m_addr4
;
488
}
489
490
enum
WifiMacType
491
WifiMacHeader::GetType
(
void
)
const
492
{
493
switch
(
m_ctrlType
)
494
{
495
case
TYPE_MGT
:
496
switch
(
m_ctrlSubtype
)
497
{
498
case
0:
499
return
WIFI_MAC_MGT_ASSOCIATION_REQUEST
;
500
break
;
501
case
1:
502
return
WIFI_MAC_MGT_ASSOCIATION_RESPONSE
;
503
break
;
504
case
2:
505
return
WIFI_MAC_MGT_REASSOCIATION_REQUEST
;
506
break
;
507
case
3:
508
return
WIFI_MAC_MGT_REASSOCIATION_RESPONSE
;
509
break
;
510
case
4:
511
return
WIFI_MAC_MGT_PROBE_REQUEST
;
512
break
;
513
case
5:
514
return
WIFI_MAC_MGT_PROBE_RESPONSE
;
515
break
;
516
case
8:
517
return
WIFI_MAC_MGT_BEACON
;
518
break
;
519
case
10:
520
return
WIFI_MAC_MGT_DISASSOCIATION
;
521
break
;
522
case
11:
523
return
WIFI_MAC_MGT_AUTHENTICATION
;
524
break
;
525
case
12:
526
return
WIFI_MAC_MGT_DEAUTHENTICATION
;
527
break
;
528
case
13:
529
return
WIFI_MAC_MGT_ACTION
;
530
break
;
531
case
14:
532
return
WIFI_MAC_MGT_ACTION_NO_ACK
;
533
break
;
534
case
15:
535
return
WIFI_MAC_MGT_MULTIHOP_ACTION
;
536
break
;
537
}
538
break
;
539
case
TYPE_CTL
:
540
switch
(
m_ctrlSubtype
)
541
{
542
case
SUBTYPE_CTL_BACKREQ
:
543
return
WIFI_MAC_CTL_BACKREQ
;
544
break
;
545
case
SUBTYPE_CTL_BACKRESP
:
546
return
WIFI_MAC_CTL_BACKRESP
;
547
break
;
548
case
SUBTYPE_CTL_RTS
:
549
return
WIFI_MAC_CTL_RTS
;
550
break
;
551
case
SUBTYPE_CTL_CTS
:
552
return
WIFI_MAC_CTL_CTS
;
553
break
;
554
case
SUBTYPE_CTL_ACK
:
555
return
WIFI_MAC_CTL_ACK
;
556
break
;
557
}
558
break
;
559
case
TYPE_DATA
:
560
switch
(
m_ctrlSubtype
)
561
{
562
case
0:
563
return
WIFI_MAC_DATA
;
564
break
;
565
case
1:
566
return
WIFI_MAC_DATA_CFACK
;
567
break
;
568
case
2:
569
return
WIFI_MAC_DATA_CFPOLL
;
570
break
;
571
case
3:
572
return
WIFI_MAC_DATA_CFACK_CFPOLL
;
573
break
;
574
case
4:
575
return
WIFI_MAC_DATA_NULL
;
576
break
;
577
case
5:
578
return
WIFI_MAC_DATA_NULL_CFACK
;
579
break
;
580
case
6:
581
return
WIFI_MAC_DATA_NULL_CFPOLL
;
582
break
;
583
case
7:
584
return
WIFI_MAC_DATA_NULL_CFACK_CFPOLL
;
585
break
;
586
case
8:
587
return
WIFI_MAC_QOSDATA
;
588
break
;
589
case
9:
590
return
WIFI_MAC_QOSDATA_CFACK
;
591
break
;
592
case
10:
593
return
WIFI_MAC_QOSDATA_CFPOLL
;
594
break
;
595
case
11:
596
return
WIFI_MAC_QOSDATA_CFACK_CFPOLL
;
597
break
;
598
case
12:
599
return
WIFI_MAC_QOSDATA_NULL
;
600
break
;
601
case
14:
602
return
WIFI_MAC_QOSDATA_NULL_CFPOLL
;
603
break
;
604
case
15:
605
return
WIFI_MAC_QOSDATA_NULL_CFACK_CFPOLL
;
606
break
;
607
}
608
break
;
609
}
610
// NOTREACHED
611
NS_ASSERT
(
false
);
612
return
(
enum
WifiMacType
) -1;
613
}
614
615
bool
616
WifiMacHeader::IsFromDs
(
void
)
const
617
{
618
return
m_ctrlFromDs
== 1;
619
}
620
621
bool
622
WifiMacHeader::IsToDs
(
void
)
const
623
{
624
return
m_ctrlToDs
== 1;
625
}
626
627
bool
628
WifiMacHeader::IsData
(
void
)
const
629
{
630
return
(
m_ctrlType
==
TYPE_DATA
);
631
632
}
633
634
bool
635
WifiMacHeader::IsQosData
(
void
)
const
636
{
637
return
(
m_ctrlType
==
TYPE_DATA
&& (
m_ctrlSubtype
& 0x08));
638
}
639
640
bool
641
WifiMacHeader::IsCtl
(
void
)
const
642
{
643
return
(
m_ctrlType
==
TYPE_CTL
);
644
}
645
646
bool
647
WifiMacHeader::IsMgt
(
void
)
const
648
{
649
return
(
m_ctrlType
==
TYPE_MGT
);
650
}
651
652
bool
653
WifiMacHeader::IsCfpoll
(
void
)
const
654
{
655
switch
(
GetType
())
656
{
657
case
WIFI_MAC_DATA_CFPOLL
:
658
case
WIFI_MAC_DATA_CFACK_CFPOLL
:
659
case
WIFI_MAC_DATA_NULL_CFPOLL
:
660
case
WIFI_MAC_DATA_NULL_CFACK_CFPOLL
:
661
case
WIFI_MAC_QOSDATA_CFPOLL
:
662
case
WIFI_MAC_QOSDATA_CFACK_CFPOLL
:
663
case
WIFI_MAC_QOSDATA_NULL_CFPOLL
:
664
case
WIFI_MAC_QOSDATA_NULL_CFACK_CFPOLL
:
665
return
true
;
666
break
;
667
default
:
668
return
false
;
669
break
;
670
}
671
}
672
673
bool
674
WifiMacHeader::IsRts
(
void
)
const
675
{
676
return
(
GetType
() ==
WIFI_MAC_CTL_RTS
);
677
}
678
679
bool
680
WifiMacHeader::IsCts
(
void
)
const
681
{
682
return
(
GetType
() ==
WIFI_MAC_CTL_CTS
);
683
}
684
685
bool
686
WifiMacHeader::IsAck
(
void
)
const
687
{
688
return
(
GetType
() ==
WIFI_MAC_CTL_ACK
);
689
}
690
691
bool
692
WifiMacHeader::IsAssocReq
(
void
)
const
693
{
694
return
(
GetType
() ==
WIFI_MAC_MGT_ASSOCIATION_REQUEST
);
695
}
696
697
bool
698
WifiMacHeader::IsAssocResp
(
void
)
const
699
{
700
return
(
GetType
() ==
WIFI_MAC_MGT_ASSOCIATION_RESPONSE
);
701
}
702
703
bool
704
WifiMacHeader::IsReassocReq
(
void
)
const
705
{
706
return
(
GetType
() ==
WIFI_MAC_MGT_REASSOCIATION_REQUEST
);
707
}
708
709
bool
710
WifiMacHeader::IsReassocResp
(
void
)
const
711
{
712
return
(
GetType
() ==
WIFI_MAC_MGT_REASSOCIATION_RESPONSE
);
713
}
714
715
bool
716
WifiMacHeader::IsProbeReq
(
void
)
const
717
{
718
return
(
GetType
() ==
WIFI_MAC_MGT_PROBE_REQUEST
);
719
}
720
721
bool
722
WifiMacHeader::IsProbeResp
(
void
)
const
723
{
724
return
(
GetType
() ==
WIFI_MAC_MGT_PROBE_RESPONSE
);
725
}
726
727
bool
728
WifiMacHeader::IsBeacon
(
void
)
const
729
{
730
return
(
GetType
() ==
WIFI_MAC_MGT_BEACON
);
731
}
732
733
bool
734
WifiMacHeader::IsDisassociation
(
void
)
const
735
{
736
return
(
GetType
() ==
WIFI_MAC_MGT_DISASSOCIATION
);
737
}
738
739
bool
740
WifiMacHeader::IsAuthentication
(
void
)
const
741
{
742
return
(
GetType
() ==
WIFI_MAC_MGT_AUTHENTICATION
);
743
}
744
745
bool
746
WifiMacHeader::IsDeauthentication
(
void
)
const
747
{
748
return
(
GetType
() ==
WIFI_MAC_MGT_DEAUTHENTICATION
);
749
}
750
751
bool
752
WifiMacHeader::IsAction
(
void
)
const
753
{
754
return
(
GetType
() ==
WIFI_MAC_MGT_ACTION
);
755
}
756
757
bool
758
WifiMacHeader::IsMultihopAction
(
void
)
const
759
{
760
return
(
GetType
() ==
WIFI_MAC_MGT_MULTIHOP_ACTION
);
761
}
762
763
bool
764
WifiMacHeader::IsBlockAckReq
(
void
)
const
765
{
766
return
(
GetType
() ==
WIFI_MAC_CTL_BACKREQ
) ?
true
:
false
;
767
}
768
769
bool
770
WifiMacHeader::IsBlockAck
(
void
)
const
771
{
772
return
(
GetType
() ==
WIFI_MAC_CTL_BACKRESP
) ?
true
:
false
;
773
}
774
775
uint16_t
776
WifiMacHeader::GetRawDuration
(
void
)
const
777
{
778
return
m_duration
;
779
}
780
781
Time
782
WifiMacHeader::GetDuration
(
void
)
const
783
{
784
return
MicroSeconds
(
m_duration
);
785
}
786
787
uint16_t
788
WifiMacHeader::GetSequenceControl
(
void
)
const
789
{
790
return
(
m_seqSeq
<< 4) |
m_seqFrag
;
791
}
792
793
uint16_t
794
WifiMacHeader::GetSequenceNumber
(
void
)
const
795
{
796
return
m_seqSeq
;
797
}
798
799
uint16_t
800
WifiMacHeader::GetFragmentNumber
(
void
)
const
801
{
802
return
m_seqFrag
;
803
}
804
805
bool
806
WifiMacHeader::IsRetry
(
void
)
const
807
{
808
return
(
m_ctrlRetry
== 1);
809
}
810
811
bool
812
WifiMacHeader::IsMoreFragments
(
void
)
const
813
{
814
return
(
m_ctrlMoreFrag
== 1);
815
}
816
817
bool
818
WifiMacHeader::IsQosBlockAck
(
void
)
const
819
{
820
NS_ASSERT
(
IsQosData
());
821
return
(
m_qosAckPolicy
== 3);
822
}
823
824
bool
825
WifiMacHeader::IsQosNoAck
(
void
)
const
826
{
827
NS_ASSERT
(
IsQosData
());
828
return
(
m_qosAckPolicy
== 1);
829
}
830
831
bool
832
WifiMacHeader::IsQosAck
(
void
)
const
833
{
834
NS_ASSERT
(
IsQosData
());
835
return
(
m_qosAckPolicy
== 0);
836
}
837
838
bool
839
WifiMacHeader::IsQosEosp
(
void
)
const
840
{
841
NS_ASSERT
(
IsQosData
());
842
return
(
m_qosEosp
== 1);
843
}
844
845
bool
846
WifiMacHeader::IsQosAmsdu
(
void
)
const
847
{
848
NS_ASSERT
(
IsQosData
());
849
return
(
m_amsduPresent
== 1);
850
}
851
852
uint8_t
853
WifiMacHeader::GetQosTid
(
void
)
const
854
{
855
NS_ASSERT
(
IsQosData
());
856
return
m_qosTid
;
857
}
858
859
enum
WifiMacHeader::QosAckPolicy
860
WifiMacHeader::GetQosAckPolicy
(
void
)
const
861
{
862
switch
(
m_qosAckPolicy
)
863
{
864
case
0:
865
return
NORMAL_ACK
;
866
break
;
867
case
1:
868
return
NO_ACK
;
869
break
;
870
case
2:
871
return
NO_EXPLICIT_ACK
;
872
break
;
873
case
3:
874
return
BLOCK_ACK
;
875
break
;
876
}
877
// NOTREACHED
878
NS_ASSERT
(
false
);
879
return
(
enum
QosAckPolicy
) -1;
880
}
881
882
uint8_t
883
WifiMacHeader::GetQosTxopLimit
(
void
)
const
884
{
885
NS_ASSERT
(
IsQosData
());
886
return
m_qosStuff
;
887
}
888
889
uint16_t
890
WifiMacHeader::GetFrameControl
(
void
)
const
891
{
892
uint16_t val = 0;
893
val |= (
m_ctrlType
<< 2) & (0x3 << 2);
894
val |= (
m_ctrlSubtype
<< 4) & (0xf << 4);
895
val |= (
m_ctrlToDs
<< 8) & (0x1 << 8);
896
val |= (
m_ctrlFromDs
<< 9) & (0x1 << 9);
897
val |= (
m_ctrlMoreFrag
<< 10) & (0x1 << 10);
898
val |= (
m_ctrlRetry
<< 11) & (0x1 << 11);
899
val |= (
m_ctrlMoreData
<< 13) & (0x1 << 13);
900
val |= (
m_ctrlWep
<< 14) & (0x1 << 14);
901
val |= (
m_ctrlOrder
<< 15) & (0x1 << 15);
902
return
val;
903
}
904
905
uint16_t
906
WifiMacHeader::GetQosControl
(
void
)
const
907
{
908
uint16_t val = 0;
909
val |=
m_qosTid
;
910
val |=
m_qosEosp
<< 4;
911
val |=
m_qosAckPolicy
<< 5;
912
val |=
m_amsduPresent
<< 7;
913
val |=
m_qosStuff
<< 8;
914
return
val;
915
}
916
917
void
918
WifiMacHeader::SetFrameControl
(uint16_t ctrl)
919
{
920
m_ctrlType
= (ctrl >> 2) & 0x03;
921
m_ctrlSubtype
= (ctrl >> 4) & 0x0f;
922
m_ctrlToDs
= (ctrl >> 8) & 0x01;
923
m_ctrlFromDs
= (ctrl >> 9) & 0x01;
924
m_ctrlMoreFrag
= (ctrl >> 10) & 0x01;
925
m_ctrlRetry
= (ctrl >> 11) & 0x01;
926
m_ctrlMoreData
= (ctrl >> 13) & 0x01;
927
m_ctrlWep
= (ctrl >> 14) & 0x01;
928
m_ctrlOrder
= (ctrl >> 15) & 0x01;
929
}
930
void
931
WifiMacHeader::SetSequenceControl
(uint16_t seq)
932
{
933
m_seqFrag
= seq & 0x0f;
934
m_seqSeq
= (seq >> 4) & 0x0fff;
935
}
936
void
937
WifiMacHeader::SetQosControl
(uint16_t qos)
938
{
939
m_qosTid
= qos & 0x000f;
940
m_qosEosp
= (qos >> 4) & 0x0001;
941
m_qosAckPolicy
= (qos >> 5) & 0x0003;
942
m_amsduPresent
= (qos >> 7) & 0x0001;
943
m_qosStuff
= (qos >> 8) & 0x00ff;
944
}
945
946
uint32_t
947
WifiMacHeader::GetSize
(
void
)
const
948
{
949
uint32_t size = 0;
950
switch
(
m_ctrlType
)
951
{
952
case
TYPE_MGT
:
953
size = 2 + 2 + 6 + 6 + 6 + 2;
954
break
;
955
case
TYPE_CTL
:
956
switch
(
m_ctrlSubtype
)
957
{
958
case
SUBTYPE_CTL_RTS
:
959
size = 2 + 2 + 6 + 6;
960
break
;
961
case
SUBTYPE_CTL_CTS
:
962
case
SUBTYPE_CTL_ACK
:
963
size = 2 + 2 + 6;
964
break
;
965
case
SUBTYPE_CTL_BACKREQ
:
966
case
SUBTYPE_CTL_BACKRESP
:
967
size = 2 + 2 + 6 + 6;
968
break
;
969
case
SUBTYPE_CTL_CTLWRAPPER
:
970
size = 2 + 2 + 6 + 2 + 4;
971
break
;
972
}
973
break
;
974
case
TYPE_DATA
:
975
size = 2 + 2 + 6 + 6 + 6 + 2;
976
if
(
m_ctrlToDs
&&
m_ctrlFromDs
)
977
{
978
size += 6;
979
}
980
if
(
m_ctrlSubtype
& 0x08)
981
{
982
size += 2;
983
}
984
break
;
985
}
986
return
size;
987
}
988
989
const
char
*
990
WifiMacHeader::GetTypeString
(
void
)
const
991
{
992
#define FOO(x) \
993
case WIFI_MAC_ ## x: \
994
return # x; \
995
break;
996
997
switch
(
GetType
())
998
{
999
FOO
(CTL_RTS);
1000
FOO
(CTL_CTS);
1001
FOO
(CTL_ACK);
1002
FOO
(CTL_BACKREQ);
1003
FOO
(CTL_BACKRESP);
1004
1005
FOO
(MGT_BEACON);
1006
FOO
(MGT_ASSOCIATION_REQUEST);
1007
FOO
(MGT_ASSOCIATION_RESPONSE);
1008
FOO
(MGT_DISASSOCIATION);
1009
FOO
(MGT_REASSOCIATION_REQUEST);
1010
FOO
(MGT_REASSOCIATION_RESPONSE);
1011
FOO
(MGT_PROBE_REQUEST);
1012
FOO
(MGT_PROBE_RESPONSE);
1013
FOO
(MGT_AUTHENTICATION);
1014
FOO
(MGT_DEAUTHENTICATION);
1015
FOO
(MGT_ACTION);
1016
FOO
(MGT_ACTION_NO_ACK);
1017
FOO
(MGT_MULTIHOP_ACTION);
1018
1019
FOO
(
DATA
);
1020
FOO
(DATA_CFACK);
1021
FOO
(DATA_CFPOLL);
1022
FOO
(DATA_CFACK_CFPOLL);
1023
FOO
(DATA_NULL);
1024
FOO
(DATA_NULL_CFACK);
1025
FOO
(DATA_NULL_CFPOLL);
1026
FOO
(DATA_NULL_CFACK_CFPOLL);
1027
FOO
(QOSDATA);
1028
FOO
(QOSDATA_CFACK);
1029
FOO
(QOSDATA_CFPOLL);
1030
FOO
(QOSDATA_CFACK_CFPOLL);
1031
FOO
(QOSDATA_NULL);
1032
FOO
(QOSDATA_NULL_CFPOLL);
1033
FOO
(QOSDATA_NULL_CFACK_CFPOLL);
1034
default
:
1035
return
"ERROR"
;
1036
}
1037
#undef FOO
1038
// needed to make gcc 4.0.1 ppc darwin happy.
1039
return
"BIG_ERROR"
;
1040
}
1041
1042
TypeId
1043
WifiMacHeader::GetTypeId
(
void
)
1044
{
1045
static
TypeId
tid =
TypeId
(
"ns3::WifiMacHeader"
)
1046
.
SetParent
<
Header
> ()
1047
.SetGroupName (
"Wifi"
)
1048
.AddConstructor<
WifiMacHeader
> ()
1049
;
1050
return
tid;
1051
}
1052
1053
TypeId
1054
WifiMacHeader::GetInstanceTypeId
(
void
)
const
1055
{
1056
return
GetTypeId
();
1057
}
1058
1059
void
1060
WifiMacHeader::PrintFrameControl
(std::ostream &os)
const
1061
{
1062
os <<
"ToDS="
<< std::hex << (int)
m_ctrlToDs
<<
", FromDS="
<< std::hex << (
int
)
m_ctrlFromDs
1063
<<
", MoreFrag="
<< std::hex << (int)
m_ctrlMoreFrag
<<
", Retry="
<< std::hex << (
int
)
m_ctrlRetry
1064
<<
", MoreData="
<< std::hex << (int)
m_ctrlMoreData
<< std::dec
1065
;
1066
}
1067
1068
void
1069
WifiMacHeader::Print
(std::ostream &os)
const
1070
{
1071
os <<
GetTypeString
() <<
" "
;
1072
switch
(
GetType
())
1073
{
1074
case
WIFI_MAC_CTL_RTS
:
1075
os <<
"Duration/ID="
<<
m_duration
<<
"us"
1076
<<
", RA="
<<
m_addr1
<<
", TA="
<<
m_addr2
;
1077
break
;
1078
case
WIFI_MAC_CTL_CTS
:
1079
case
WIFI_MAC_CTL_ACK
:
1080
os <<
"Duration/ID="
<<
m_duration
<<
"us"
1081
<<
", RA="
<<
m_addr1
;
1082
break
;
1083
case
WIFI_MAC_CTL_BACKREQ
:
1084
break
;
1085
case
WIFI_MAC_CTL_BACKRESP
:
1086
break
;
1087
case
WIFI_MAC_CTL_CTLWRAPPER
:
1088
break
;
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:645
ns3::WifiMacHeader::NO_EXPLICIT_ACK
Definition:
wifi-mac-header.h:91
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:70
ns3::WIFI_MAC_CTL_CTS
Definition:
wifi-mac-header.h:40
ns3::WifiMacHeader::IsBeacon
bool IsBeacon(void) const
Return true if the header is a Beacon header.
Definition:
wifi-mac-header.cc:728
ns3::WifiMacHeader::SetAction
void SetAction()
Set Type/Subtype values for an action header.
Definition:
wifi-mac-header.cc:166
ns3::WifiMacHeader::SetRetry
void SetRetry(void)
Set the Retry bit in the Frame Control field.
Definition:
wifi-mac-header.cc:374
ns3::WifiMacHeader::SetMoreFragments
void SetMoreFragments(void)
Set the More Fragment bit in the Frame Control field.
Definition:
wifi-mac-header.cc:359
ns3::WIFI_MAC_CTL_CTLWRAPPER
Definition:
wifi-mac-header.h:38
ns3::Time
Simulation virtual time values and global simulation resolution.
Definition:
nstime.h:102
ns3::WIFI_MAC_QOSDATA_NULL
Definition:
wifi-mac-header.h:71
ns3::WifiMacHeader::GetSize
uint32_t GetSize(void) const
Return the size of the WifiMacHeader in octets.
Definition:
wifi-mac-header.cc:947
ns3::WIFI_MAC_MGT_PROBE_REQUEST
Definition:
wifi-mac-header.h:51
ns3::WifiMacHeader::GetFragmentNumber
uint16_t GetFragmentNumber(void) const
Return the fragment number of the header.
Definition:
wifi-mac-header.cc:800
ns3::WifiMacHeader::SetQosAckPolicy
void SetQosAckPolicy(enum QosAckPolicy policy)
Set the QoS ACK policy in the QoS control field.
Definition:
wifi-mac-header.cc:399
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:326
ns3::WifiMacHeader::SetFrameControl
void SetFrameControl(uint16_t control)
Set the Frame Control field with the given raw value.
Definition:
wifi-mac-header.cc:918
ns3::WIFI_MAC_DATA_NULL_CFACK
Definition:
wifi-mac-header.h:64
ns3::WIFI_MAC_MGT_ACTION_NO_ACK
Definition:
wifi-mac-header.h:56
ns3::WifiMacHeader::IsReassocResp
bool IsReassocResp(void) const
Return true if the header is a Reassociation Response header.
Definition:
wifi-mac-header.cc:710
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:124
ns3::WifiMacHeader::GetRawDuration
uint16_t GetRawDuration(void) const
Return the raw duration from the Duration/ID field.
Definition:
wifi-mac-header.cc:776
ns3::SUBTYPE_CTL_BACKRESP
Definition:
wifi-mac-header.cc:43
ns3::WifiMacHeader::SetDuration
void SetDuration(Time duration)
Set the Duration/ID field with the given duration (Time object).
Definition:
wifi-mac-header.cc:332
ns3::TYPE_MGT
Definition:
wifi-mac-header.cc:33
ns3::WIFI_MAC_DATA_CFACK_CFPOLL
Definition:
wifi-mac-header.h:62
ns3::WifiMacHeader::m_ctrlType
uint8_t m_ctrlType
Definition:
wifi-mac-header.h:639
ns3::WIFI_MAC_MGT_ASSOCIATION_REQUEST
Definition:
wifi-mac-header.h:46
ns3::WIFI_MAC_MGT_AUTHENTICATION
Definition:
wifi-mac-header.h:53
ns3::WifiMacHeader::IsAction
bool IsAction() const
Return true if the header is an Action header.
Definition:
wifi-mac-header.cc:752
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:650
ns3::WifiMacHeader::GetAddr3
Mac48Address GetAddr3(void) const
Return the address in the Address 3 field.
Definition:
wifi-mac-header.cc:479
ns3::WifiMacHeader::SetNoMoreFragments
void SetNoMoreFragments(void)
Un-set the More Fragment bit in the Frame Control Field.
Definition:
wifi-mac-header.cc:354
ns3::WifiMacHeader::m_qosAckPolicy
uint8_t m_qosAckPolicy
Definition:
wifi-mac-header.h:657
ns3::WifiMacHeader::GetAddr4
Mac48Address GetAddr4(void) const
Return the address in the Address 4 field.
Definition:
wifi-mac-header.cc:485
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:491
ns3::WifiMacHeader::m_qosEosp
uint8_t m_qosEosp
Definition:
wifi-mac-header.h:656
ns3::WifiMacHeader::SetId
void SetId(uint16_t id)
Set the Duration/ID field with the given ID.
Definition:
wifi-mac-header.cc:339
ns3::WifiMacHeader::IsAssocReq
bool IsAssocReq(void) const
Return true if the header is an Association Request header.
Definition:
wifi-mac-header.cc:692
ns3::WifiMacHeader::GetQosControl
uint16_t GetQosControl(void) const
Return the raw QoS Control field.
Definition:
wifi-mac-header.cc:906
ns3::WIFI_MAC_QOSDATA_NULL_CFPOLL
Definition:
wifi-mac-header.h:72
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:770
ns3::WifiMacHeader::IsAssocResp
bool IsAssocResp(void) const
Return true if the header is an Association Response header.
Definition:
wifi-mac-header.cc:698
ns3::WifiMacHeader::SetQosControl
void SetQosControl(uint16_t qos)
Set the QoS Control field with the given raw value.
Definition:
wifi-mac-header.cc:937
ns3::WifiMacHeader::GetFrameControl
uint16_t GetFrameControl(void) const
Return the raw Frame Control field.
Definition:
wifi-mac-header.cc:890
ns3::WifiMacHeader::IsCtl
bool IsCtl(void) const
Return true if the Type is Control.
Definition:
wifi-mac-header.cc:641
ns3::WifiMacHeader::SetProbeResp
void SetProbeResp(void)
Set Type/Subtype values for a probe response header.
Definition:
wifi-mac-header.cc:131
ns3::WifiMacHeader::m_seqFrag
uint8_t m_seqFrag
Definition:
wifi-mac-header.h:652
ns3::WifiMacHeader::SetQosNoAck
void SetQosNoAck(void)
Set the QoS ACK policy in the QoS control field to no ACK.
Definition:
wifi-mac-header.cc:431
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:846
ns3::WifiMacHeader::IsProbeResp
bool IsProbeResp(void) const
Return true if the header is a Probe Response header.
Definition:
wifi-mac-header.cc:722
ns3::WifiMacHeader::m_addr1
Mac48Address m_addr1
Definition:
wifi-mac-header.h:649
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:651
ns3::Buffer::Iterator
iterator in a Buffer instance
Definition:
buffer.h:98
ns3::WIFI_MAC_DATA_CFACK
Definition:
wifi-mac-header.h:60
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:653
ns3::WIFI_MAC_DATA_NULL
Definition:
wifi-mac-header.h:63
ns3::WifiMacHeader::IsMoreFragments
bool IsMoreFragments(void) const
Return if the More Fragment bit is set.
Definition:
wifi-mac-header.cc:812
ns3::WifiMacHeader::GetDuration
Time GetDuration(void) const
Return the duration from the Duration/ID field (Time object).
Definition:
wifi-mac-header.cc:782
ns3::WifiMacHeader::GetQosTid
uint8_t GetQosTid(void) const
Return the Traffic ID of a QoS header.
Definition:
wifi-mac-header.cc:853
ns3::WIFI_MAC_MGT_REASSOCIATION_REQUEST
Definition:
wifi-mac-header.h:49
ns3::TYPE_CTL
Definition:
wifi-mac-header.cc:34
ns3::WifiMacHeader::IsReassocReq
bool IsReassocReq(void) const
Return true if the header is a Reassociation Request header.
Definition:
wifi-mac-header.cc:704
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:883
ns3::WifiMacHeader::SetAddr1
void SetAddr1(Mac48Address address)
Fill the Address 1 field with the given address.
Definition:
wifi-mac-header.cc:86
ns3::WifiMacHeader::m_ctrlToDs
uint8_t m_ctrlToDs
Definition:
wifi-mac-header.h:641
ns3::SUBTYPE_CTL_BACKREQ
Definition:
wifi-mac-header.cc:42
ns3::SUBTYPE_CTL_CTS
Definition:
wifi-mac-header.cc:45
ns3::WifiMacHeader::SetBeacon
void SetBeacon(void)
Set Type/Subtype values for a beacon header.
Definition:
wifi-mac-header.cc:138
ns3::WifiMacHeader::SetDsNotTo
void SetDsNotTo(void)
Un-set the To DS bit in the Frame Control field.
Definition:
wifi-mac-header.cc:80
ns3::WifiMacHeader::SetAddr3
void SetAddr3(Mac48Address address)
Fill the Address 3 field with the given address.
Definition:
wifi-mac-header.cc:98
ns3::WifiMacHeader::SetAddr4
void SetAddr4(Mac48Address address)
Fill the Address 4 field with the given address.
Definition:
wifi-mac-header.cc:104
ns3::WifiMacType
WifiMacType
Combination of valid MAC header type/subtype.
Definition:
wifi-mac-header.h:36
ns3::WifiMacHeader::GetSequenceControl
uint16_t GetSequenceControl(void) const
Return the raw Sequence Control field.
Definition:
wifi-mac-header.cc:788
ns3::WifiMacHeader::IsProbeReq
bool IsProbeReq(void) const
Return true if the header is a Probe Request header.
Definition:
wifi-mac-header.cc:716
ns3::WIFI_MAC_MGT_MULTIHOP_ACTION
Definition:
wifi-mac-header.h:57
ns3::WifiMacHeader::Print
virtual void Print(std::ostream &os) const
Definition:
wifi-mac-header.cc:1069
ns3::WifiMacHeader::SetOrder
void SetOrder(void)
Set order bit in the frame control field.
Definition:
wifi-mac-header.cc:364
ns3::WifiMacHeader::IsAuthentication
bool IsAuthentication(void) const
Return true if the header is an Authentication header.
Definition:
wifi-mac-header.cc:740
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:818
ns3::WifiMacHeader::m_amsduPresent
uint8_t m_amsduPresent
Definition:
wifi-mac-header.h:658
ns3::WifiMacHeader::NORMAL_ACK
Definition:
wifi-mac-header.h:89
ns3::WifiMacHeader::m_addr4
Mac48Address m_addr4
Definition:
wifi-mac-header.h:654
ns3::WifiMacHeader::m_ctrlMoreFrag
uint8_t m_ctrlMoreFrag
Definition:
wifi-mac-header.h:643
ns3::WifiMacHeader::m_ctrlFromDs
uint8_t m_ctrlFromDs
Definition:
wifi-mac-header.h:642
ns3::WifiMacHeader::IsMgt
bool IsMgt(void) const
Return true if the Type is Management.
Definition:
wifi-mac-header.cc:647
ns3::WifiMacHeader::SetAssocReq
void SetAssocReq(void)
Set Type/Subtype values for an association request header.
Definition:
wifi-mac-header.cc:110
ns3::WifiMacHeader::m_ctrlOrder
uint8_t m_ctrlOrder
Definition:
wifi-mac-header.h:647
ns3::WifiMacHeader::SetQosTid
void SetQosTid(uint8_t tid)
Set the TID for the QoS header.
Definition:
wifi-mac-header.cc:384
ns3::WifiMacHeader::GetInstanceTypeId
virtual TypeId GetInstanceTypeId(void) const
Get the most derived TypeId for this Object.
Definition:
wifi-mac-header.cc:1054
ns3::WifiMacHeader::SetSequenceControl
void SetSequenceControl(uint16_t seq)
Set the Sequence Control field with the given raw value.
Definition:
wifi-mac-header.cc:931
ns3::WifiMacHeader::SetNoRetry
void SetNoRetry(void)
Un-set the Retry bit in the Frame Control field.
Definition:
wifi-mac-header.cc:379
ns3::WifiMacHeader::IsToDs
bool IsToDs(void) const
Definition:
wifi-mac-header.cc:622
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:653
ns3::WifiMacHeader::IsDisassociation
bool IsDisassociation(void) const
Return true if the header is a Disassociation header.
Definition:
wifi-mac-header.cc:734
ns3::WifiMacHeader::SetAddr2
void SetAddr2(Mac48Address address)
Fill the Address 2 field with the given address.
Definition:
wifi-mac-header.cc:92
ns3::WIFI_MAC_MGT_DISASSOCIATION
Definition:
wifi-mac-header.h:48
ns3::WIFI_MAC_MGT_PROBE_RESPONSE
Definition:
wifi-mac-header.h:52
ns3::WifiMacHeader::QosAckPolicy
QosAckPolicy
ACK policy for QoS frames.
Definition:
wifi-mac-header.h:87
ns3::TYPE_DATA
Definition:
wifi-mac-header.cc:35
ns3::Mac48Address
an EUI-48 address
Definition:
mac48-address.h:43
ns3::WIFI_MAC_DATA
Definition:
wifi-mac-header.h:59
ns3::WIFI_MAC_QOSDATA_NULL_CFACK_CFPOLL
Definition:
wifi-mac-header.h:73
ns3::WifiMacHeader::SetBlockAck
void SetBlockAck(void)
Set Type/Subtype values for a Block Ack header.
Definition:
wifi-mac-header.cc:152
ns3::WIFI_MAC_DATA_NULL_CFPOLL
Definition:
wifi-mac-header.h:65
ns3::WifiMacHeader::PrintFrameControl
void PrintFrameControl(std::ostream &os) const
Print the Frame Control field to the output stream.
Definition:
wifi-mac-header.cc:1060
ns3::WifiMacHeader::GetTypeString
const char * GetTypeString(void) const
Return a string corresponds to the header type.
Definition:
wifi-mac-header.cc:990
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:49
ns3::WifiMacHeader::m_duration
uint16_t m_duration
Definition:
wifi-mac-header.h:648
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:117
ns3::WifiMacHeader::m_ctrlRetry
uint8_t m_ctrlRetry
Definition:
wifi-mac-header.h:644
ns3::SUBTYPE_CTL_ACK
Definition:
wifi-mac-header.cc:46
ns3::WIFI_MAC_QOSDATA_CFPOLL
Definition:
wifi-mac-header.h:69
ns3::SUBTYPE_CTL_RTS
Definition:
wifi-mac-header.cc:44
ns3::WifiMacHeader::SetQosTxopLimit
void SetQosTxopLimit(uint8_t txop)
Set TXOP limit in the QoS control field.
Definition:
wifi-mac-header.cc:446
ns3::WifiMacHeader::m_qosStuff
uint16_t m_qosStuff
Definition:
wifi-mac-header.h:659
ns3::WifiMacHeader::SetSequenceNumber
void SetSequenceNumber(uint16_t seq)
Set the sequence number of the header.
Definition:
wifi-mac-header.cc:344
ns3::WifiMacHeader::IsData
bool IsData(void) const
Return true if the Type is DATA.
Definition:
wifi-mac-header.cc:628
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:635
ns3::WIFI_MAC_DATA_NULL_CFACK_CFPOLL
Definition:
wifi-mac-header.h:66
ns3::WifiMacHeader::IsBlockAckReq
bool IsBlockAckReq(void) const
Return true if the header is a Block ACK Request header.
Definition:
wifi-mac-header.cc:764
ns3::WifiMacHeader::SetQosNormalAck
void SetQosNormalAck(void)
Set the QoS ACK policy in the QoS control field to normal ACK.
Definition:
wifi-mac-header.cc:419
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:159
ns3::WIFI_MAC_QOSDATA
Definition:
wifi-mac-header.h:67
ns3::WIFI_MAC_CTL_BACKREQ
Definition:
wifi-mac-header.h:42
ns3::WifiMacHeader::SetQosNoAmsdu
void SetQosNoAmsdu(void)
Set that A-MSDU is not present.
Definition:
wifi-mac-header.cc:441
ns3::WIFI_MAC_MGT_BEACON
Definition:
wifi-mac-header.h:45
ns3::WIFI_MAC_MGT_REASSOCIATION_RESPONSE
Definition:
wifi-mac-header.h:50
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:74
ns3::WifiMacHeader::IsFromDs
bool IsFromDs(void) const
Definition:
wifi-mac-header.cc:616
ns3::WifiMacHeader::SetQosEosp
void SetQosEosp()
Set the end of service period (EOSP) bit in the QoS control field.
Definition:
wifi-mac-header.cc:389
ns3::WifiMacHeader::IsQosEosp
bool IsQosEosp(void) const
Return if the end of service period (EOSP) is set.
Definition:
wifi-mac-header.cc:839
ns3::WifiMacHeader::~WifiMacHeader
~WifiMacHeader()
Definition:
wifi-mac-header.cc:57
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:62
ns3::WifiMacHeader::SetNoOrder
void SetNoOrder(void)
Unset order bit in the frame control field.
Definition:
wifi-mac-header.cc:369
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:758
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:43
ns3::WIFI_MAC_MGT_ASSOCIATION_RESPONSE
Definition:
wifi-mac-header.h:47
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:180
ns3::WIFI_MAC_CTL_ACK
Definition:
wifi-mac-header.h:41
ns3::WifiMacHeader::IsCts
bool IsCts(void) const
Return true if the header is a CTS header.
Definition:
wifi-mac-header.cc:680
ns3::WifiMacHeader::GetAddr1
Mac48Address GetAddr1(void) const
Return the address in the Address 1 field.
Definition:
wifi-mac-header.cc:467
ns3::WIFI_MAC_CTL_RTS
Definition:
wifi-mac-header.h:39
first.address
tuple address
Definition:
first.py:37
ns3::WifiMacHeader::m_qosTid
uint8_t m_qosTid
Definition:
wifi-mac-header.h:655
ns3::SUBTYPE_CTL_CTLWRAPPER
Definition:
wifi-mac-header.cc:41
ns3::WifiMacHeader::SetQosMeshControlPresent
void SetQosMeshControlPresent()
Set the Mesh Control Present flag for the QoS header.
Definition:
wifi-mac-header.cc:451
ns3::WifiMacHeader::SetQosNoMeshControlPresent
void SetQosNoMeshControlPresent()
Clear the Mesh Control Present flag for the QoS header.
Definition:
wifi-mac-header.cc:458
ns3::WifiMacHeader::m_ctrlSubtype
uint8_t m_ctrlSubtype
Definition:
wifi-mac-header.h:640
ns3::WIFI_MAC_MGT_ACTION
Definition:
wifi-mac-header.h:55
ns3::WifiMacHeader::SetMultihopAction
void SetMultihopAction()
Set Type/Subtype values for a multihop action header.
Definition:
wifi-mac-header.cc:173
ns3::WifiMacHeader::IsDeauthentication
bool IsDeauthentication(void) const
Return true if the header is a Deauthentication header.
Definition:
wifi-mac-header.cc:746
ns3::WifiMacHeader::IsRts
bool IsRts(void) const
Return true if the header is a RTS header.
Definition:
wifi-mac-header.cc:674
ns3::WifiMacHeader::SetQosNoEosp
void SetQosNoEosp()
Un-set the end of service period (EOSP) bit in the QoS control field.
Definition:
wifi-mac-header.cc:394
ns3::WifiMacHeader::IsAck
bool IsAck(void) const
Return true if the header is an ACK header.
Definition:
wifi-mac-header.cc:686
ns3::WifiMacHeader::GetTypeId
static TypeId GetTypeId(void)
Definition:
wifi-mac-header.cc:1043
ns3::WifiMacHeader::SetFragmentNumber
void SetFragmentNumber(uint8_t frag)
Set the fragment number of the header.
Definition:
wifi-mac-header.cc:349
ns3::WifiMacHeader::SetBlockAckReq
void SetBlockAckReq(void)
Set Type/Subtype values for a Block Ack Request header.
Definition:
wifi-mac-header.cc:145
ns3::WIFI_MAC_DATA_CFPOLL
Definition:
wifi-mac-header.h:61
ns3::WifiMacHeader::BLOCK_ACK
Definition:
wifi-mac-header.h:92
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:436
ns3::WifiMacHeader::GetQosAckPolicy
enum QosAckPolicy GetQosAckPolicy(void) const
Return the QoS ACK Policy of a QoS header.
Definition:
wifi-mac-header.cc:860
ns3::WIFI_MAC_MGT_DEAUTHENTICATION
Definition:
wifi-mac-header.h:54
ns3::WifiMacHeader::IsRetry
bool IsRetry(void) const
Return if the Retry bit is set.
Definition:
wifi-mac-header.cc:806
ns3::WifiMacHeader
Implements the IEEE 802.11 MAC header.
Definition:
wifi-mac-header.h:81
ns3::WifiMacHeader::GetAddr2
Mac48Address GetAddr2(void) const
Return the address in the Address 2 field.
Definition:
wifi-mac-header.cc:473
ns3::WifiMacHeader::IsQosNoAck
bool IsQosNoAck(void) const
Return if the QoS ACK policy is No ACK.
Definition:
wifi-mac-header.cc:825
ns3::WifiMacHeader::SetQosBlockAck
void SetQosBlockAck(void)
Set the QoS ACK policy in the QoS control field to block ACK.
Definition:
wifi-mac-header.cc:425
ns3::WifiMacHeader::m_ctrlWep
uint8_t m_ctrlWep
Definition:
wifi-mac-header.h:646
ns3::WifiMacHeader::IsQosAck
bool IsQosAck(void) const
Return if the QoS ACK policy is Normal ACK.
Definition:
wifi-mac-header.cc:832
ns3::WifiMacHeader::SetDsNotFrom
void SetDsNotFrom(void)
Un-set the From DS bit in the Frame Control field.
Definition:
wifi-mac-header.cc:68
ns3::WifiMacHeader::NO_ACK
Definition:
wifi-mac-header.h:90
ns3::WIFI_MAC_QOSDATA_CFACK
Definition:
wifi-mac-header.h:68
ns3::WifiMacHeader::GetSequenceNumber
uint16_t GetSequenceNumber(void) const
Return the sequence number of the header.
Definition:
wifi-mac-header.cc:794
src
wifi
model
wifi-mac-header.cc
Generated on Wed Nov 11 2015 20:00:52 for ns-3 by
1.8.9.1