A Discrete-Event Network Simulator
API
lr-wpan-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) 2011 The Boeing Company
4 *
5 * This program is free software; you can redistribute it and/or modify
6 * it under the terms of the GNU General Public License version 2 as
7 * published by the Free Software Foundation;
8 *
9 * This program is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 * GNU General Public License for more details.
13 *
14 * You should have received a copy of the GNU General Public License
15 * along with this program; if not, write to the Free Software
16 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
17 *
18 * Author: kwong yin <kwong-sang.yin@boeing.com>
19 */
20#include "lr-wpan-mac-header.h"
21#include <ns3/address-utils.h>
22
23namespace ns3 {
24
25NS_OBJECT_ENSURE_REGISTERED (LrWpanMacHeader);
26
27// TODO: Test Compressed PAN Id, Security Enabled, different size Key
28
30{
31 SetType (LRWPAN_MAC_DATA); // Assume Data frame
32 SetSecDisable (); // Assume there is No Aux Sec but
33 SetNoFrmPend (); // No Frame Pending
34 SetNoAckReq (); // No Ack Frame will be expected from recipient
35 SetNoPanIdComp (); // No PAN Id Compression since no addresses
36 SetFrmCtrlRes (0); // Initialize the 3 reserved bits to 0
37 SetDstAddrMode (NOADDR); // Assume there will be no src and dst address
39 SetFrameVer (1); //Indicates an IEEE 802.15.4 frame
40}
41
42
44 uint8_t seqNum)
45{
46 SetType (wpanMacType);
47 SetSeqNum (seqNum);
48 SetSecDisable (); // Assume there is No Aux Sec but
49 SetNoFrmPend (); // No Frame Pending
50 SetNoAckReq (); // No Ack Frame will be expected from recipient
51 SetNoPanIdComp (); // No PAN Id Compression since no addresses
52 SetFrmCtrlRes (0); // Initialize the 3 reserved bits to 0
53 SetDstAddrMode (NOADDR); // Assume there will be no src and dst address
55 SetFrameVer (1); //Indicates an IEEE 802.15.4 frame
56}
57
58
60{
61}
62
63
66{
67 switch (m_fctrlFrmType)
68 {
69 case 0:
70 return LRWPAN_MAC_BEACON;
71 break;
72 case 1:
73 return LRWPAN_MAC_DATA;
74 break;
75 case 2:
77 break;
78 case 3:
79 return LRWPAN_MAC_COMMAND;
80 break;
81 default:
83 }
84}
85
86
87
88uint16_t
90{
91 uint16_t val = 0;
92
93 val = m_fctrlFrmType & (0x07); // Bit 0-2
94 val |= (m_fctrlSecU << 3) & (0x01 << 3); // Bit 3
95 val |= (m_fctrlFrmPending << 4) & (0x01 << 4); // Bit 4
96 val |= (m_fctrlAckReq << 5) & (0x01 << 5); // Bit 5
97 val |= (m_fctrlPanIdComp << 6) & (0x01 << 6); // Bit 6
98 val |= (m_fctrlReserved << 7) & (0x07 << 7); // Bit 7-9
99 val |= (m_fctrlDstAddrMode << 10) & (0x03 << 10); // Bit 10-11
100 val |= (m_fctrlFrmVer << 12) & (0x03 << 12); // Bit 12-13
101 val |= (m_fctrlSrcAddrMode << 14) & (0x03 << 14); // Bit 14-15
102 return val;
103
104}
105
106bool
108{
109 return (m_fctrlSecU == 1);
110}
111
112bool
114{
115 return (m_fctrlFrmPending == 1);
116}
117
118bool
120{
121 return (m_fctrlAckReq == 1);
122}
123
124bool
126{
127 return (m_fctrlPanIdComp == 1);
128}
129
130uint8_t
132{
133 return (m_fctrlReserved);
134}
135
136uint8_t
138{
139 return m_fctrlDstAddrMode;
140}
141
142uint8_t
144{
145 return m_fctrlFrmVer;
146}
147
148uint8_t
150{
151 return m_fctrlSrcAddrMode;
152}
153
154
155uint8_t
157{
158 return(m_SeqNum);
159}
160
161
162uint16_t
164{
165 return(m_addrDstPanId);
166}
167
168
171{
172 return(m_addrShortDstAddr);
173}
176{
177 return(m_addrExtDstAddr);
178}
179
180uint16_t
182{
183 return(m_addrSrcPanId);
184}
185
186
187
190{
191 return(m_addrShortSrcAddr);
192}
195{
196 return(m_addrExtSrcAddr);
197}
198
199
200uint8_t
202{
203 uint8_t val = 0;
204
205 val = m_secctrlSecLevel & (0x7); // Bit 0-2
206 val |= (m_secctrlKeyIdMode << 3) & (0x3 << 3); // Bit 3-4
207 val |= (m_secctrlReserved << 5) & (0x7 << 5); // Bit 5-7
208
209 return(val);
210}
211
214{
215 return(m_auxFrmCntr);
216}
217
218uint8_t
220{
221 return (m_secctrlSecLevel);
222}
223
224uint8_t
226{
227 return(m_secctrlKeyIdMode);
228}
229
230uint8_t
232{
233 return (m_secctrlReserved);
234}
235
238{
239 return(m_auxKeyIdKeySrc32);
240}
241
242uint64_t
244{
245
246 return(m_auxKeyIdKeySrc64);
247}
248
249uint8_t
251{
252 return(m_auxKeyIdKeyIndex);
253}
254
255bool
257{
259}
260
261bool
263{
265}
266
267bool
269{
271}
272
273bool
275{
277}
278
279
280
281void
283{
284 m_fctrlFrmType = wpanMacType;
285}
286
287
288void
289LrWpanMacHeader::SetFrameControl (uint16_t frameControl)
290{
291 m_fctrlFrmType = (frameControl) & (0x07); // Bit 0-2
292 m_fctrlSecU = (frameControl >> 3) & (0x01); // Bit 3
293 m_fctrlFrmPending = (frameControl >> 4) & (0x01); // Bit 4
294 m_fctrlAckReq = (frameControl >> 5) & (0x01); // Bit 5
295 m_fctrlPanIdComp = (frameControl >> 6) & (0x01); // Bit 6
296 m_fctrlReserved = (frameControl >> 7) & (0x07); // Bit 7-9
297 m_fctrlDstAddrMode = (frameControl >> 10) & (0x03); // Bit 10-11
298 m_fctrlFrmVer = (frameControl >> 12) & (0x03); // Bit 12-13
299 m_fctrlSrcAddrMode = (frameControl >> 14) & (0x03); // Bit 14-15
300}
301
302
303void
305{
306 m_fctrlSecU = 1;
307}
308
309
310void
312{
313 m_fctrlSecU = 0;
314}
315
316
317void
319{
321}
322
323
324void
326{
328}
329
330
331void
333{
334 m_fctrlAckReq = 1;
335}
336
337
338void
340{
341 m_fctrlAckReq = 0;
342}
343
344
345void
347{
349}
350
351
353{
355}
356
357void
359{
360 m_fctrlReserved = res;
361}
362
363void
365{
366 m_fctrlDstAddrMode = addrMode;
367}
368
369
370void
372{
373 m_fctrlFrmVer = ver;
374}
375
376
377void
379{
380 m_fctrlSrcAddrMode = addrMode;
381}
382
383
384void
386{
387 m_SeqNum = seqNum;
388}
389
390void
392 Mac16Address addr)
393{
394 m_addrSrcPanId = panId;
395 m_addrShortSrcAddr = addr;
396}
397
398void
400 Mac64Address addr)
401{
402 m_addrSrcPanId = panId;
403 m_addrExtSrcAddr = addr;
404}
405
406void
408 Mac16Address addr)
409{
410 m_addrDstPanId = panId;
411 m_addrShortDstAddr = addr;
412}
413void
415 Mac64Address addr)
416{
417 m_addrDstPanId = panId;
418 m_addrExtDstAddr = addr;
419}
420void
422{
423 m_secctrlSecLevel = (secControl) & (0x07); // Bit 0-2
424 m_secctrlKeyIdMode = (secControl >> 3) & (0x03); // Bit 3-4
425 m_secctrlReserved = (secControl >> 5) & (0x07); // Bit 5-7
426}
427
428void
430{
431 m_auxFrmCntr = frmCntr;
432}
433
434void
436{
437 m_secctrlSecLevel = secLevel;
438}
439
440void
442{
443 m_secctrlKeyIdMode = keyIdMode;
444}
445
446void
448{
449 m_secctrlReserved = res;
450}
451
452void
454{
455 m_auxKeyIdKeyIndex = keyIndex;
456}
457
458
459void
461 uint8_t keyIndex)
462{
463 m_auxKeyIdKeyIndex = keyIndex;
464 m_auxKeyIdKeySrc32 = keySrc;
465}
466
467
468void
470 uint8_t keyIndex)
471{
472 m_auxKeyIdKeyIndex = keyIndex;
473 m_auxKeyIdKeySrc64 = keySrc;
474}
475
476TypeId
478{
479 static TypeId tid = TypeId ("ns3::LrWpanMacHeader")
480 .SetParent<Header> ()
481 .SetGroupName ("LrWpan")
482 .AddConstructor<LrWpanMacHeader> ();
483 return tid;
484}
485
486TypeId
488{
489 return GetTypeId ();
490}
491
492void
493LrWpanMacHeader::Print (std::ostream &os) const
494{
495 os << " Frame Type = " << (uint32_t) m_fctrlFrmType << ", Sec Enable = " << (uint32_t) m_fctrlSecU
496 << ", Frame Pending = " << (uint32_t) m_fctrlFrmPending << ", Ack Request = " << (uint32_t) m_fctrlAckReq
497 << ", PAN ID Compress = " << (uint32_t) m_fctrlPanIdComp << ", Frame Vers = " << (uint32_t) m_fctrlFrmVer
498 << ", Dst Addrs Mode = " << (uint32_t) m_fctrlDstAddrMode << ", Src Addr Mode = " << (uint32_t) m_fctrlSrcAddrMode;
499
500 os << ", Sequence Num = " << static_cast<uint16_t> (m_SeqNum);
501
502 switch (m_fctrlDstAddrMode)
503 {
504 case NOADDR:
505 break;
506 case SHORTADDR:
507 os << ", Dst Addr Pan ID = " << static_cast<uint16_t> (m_addrDstPanId)
508 << ", m_addrShortDstAddr = " << m_addrShortDstAddr;
509 break;
510 case EXTADDR:
511 os << ", Dst Addr Pan ID = " << static_cast<uint16_t> (m_addrDstPanId)
512 << ", m_addrExtDstAddr = " << m_addrExtDstAddr;
513 break;
514 }
515
516 switch (m_fctrlSrcAddrMode)
517 {
518 case NOADDR:
519 break;
520 case SHORTADDR:
521 os << ", Src Addr Pan ID = " << static_cast<uint16_t> (m_addrSrcPanId)
522 << ", m_addrShortSrcAddr = " << m_addrShortSrcAddr;
523 break;
524 case EXTADDR:
525 os << ", Src Addr Pan ID = " << static_cast<uint32_t> (m_addrSrcPanId)
526 << ", m_addrExtSrcAddr = " << m_addrExtDstAddr;
527 break;
528 }
529
530 if (IsSecEnable ())
531 {
532 os << " Security Level = " << static_cast<uint32_t> (m_secctrlSecLevel)
533 << ", Key Id Mode = " << static_cast<uint32_t> (m_secctrlKeyIdMode)
534 << ", Frame Counter = " << static_cast<uint32_t> (m_auxFrmCntr);
535
536 switch (m_secctrlKeyIdMode)
537 {
538 case IMPLICIT:
539 break;
540 case NOKEYSOURCE:
541 os << ", Key Id - Key Index = " << static_cast<uint32_t> (m_auxKeyIdKeyIndex);
542 break;
543 case SHORTKEYSOURCE:
544 os << ", Key Id - Key Source 32 =" << static_cast<uint32_t> (m_auxKeyIdKeySrc32)
545 << ", Key Id - Key Index = " << static_cast<uint32_t> (m_auxKeyIdKeyIndex);
546 break;
547 case LONGKEYSOURCE:
548 os << ", Key Id - Key Source 64 =" << static_cast<uint64_t> (m_auxKeyIdKeySrc64)
549 << ", Key Id - Key Index = " << static_cast<uint32_t> (m_auxKeyIdKeyIndex);
550 break;
551 }
552 }
553}
554
557{
558 /*
559 * Each mac header will have
560 * Frame Control : 2 octet
561 * Sequence Number : 1 Octet
562 * Dst PAN Id : 0/2 Octet
563 * Dst Address : 0/2/8 octet
564 * Src PAN Id : 0/2 octet
565 * Src Address : 0/2/8 octet
566 * Aux Sec Header : 0/5/6/10/14 octet
567 */
568
569 uint32_t size = 3;
570
571 switch (m_fctrlDstAddrMode)
572 {
573 case NOADDR:
574 break;
575 case SHORTADDR:
576 size += 4;
577 break;
578 case EXTADDR:
579 size += 10;
580 break;
581 }
582
583 switch (m_fctrlSrcAddrMode)
584 {
585 case NOADDR:
586 break;
587 case SHORTADDR:
588 // check if PAN Id compression is enabled
589 if (!IsPanIdComp ())
590 {
591 size += 4;
592 }
593 else
594 {
595 size += 2;
596 }
597 break;
598 case EXTADDR:
599 // check if PAN Id compression is enabled
600 if (!IsPanIdComp ())
601 {
602 size += 10;
603 }
604 else
605 {
606 size += 8;
607 }
608 break;
609 }
610
611
612 // check if security is enabled
613 if (IsSecEnable ())
614 {
615 size += 5;
616 switch (m_secctrlKeyIdMode)
617 {
618 case IMPLICIT:
619 break;
620 case NOKEYSOURCE:
621 size += 1;
622 break;
623 case SHORTKEYSOURCE:
624 size += 5;
625 break;
626 case LONGKEYSOURCE:
627 size += 9;
628 break;
629 }
630 }
631 return (size);
632}
633
634
635void
637{
639 uint16_t frameControl = GetFrameControl ();
640
641 i.WriteHtolsbU16 (frameControl);
642 i.WriteU8 (GetSeqNum ());
643
644 switch (m_fctrlDstAddrMode)
645 {
646 case NOADDR:
647 break;
648 case SHORTADDR:
651 break;
652 case EXTADDR:
655 break;
656 }
657
658 switch (m_fctrlSrcAddrMode)
659 {
660 case NOADDR:
661 break;
662 case SHORTADDR:
663 if (!IsPanIdComp ())
664 {
666 }
668 break;
669 case EXTADDR:
670 if (!IsPanIdComp ())
671 {
673 }
675 break;
676 }
677
678 if (IsSecEnable ())
679 {
680 i.WriteU8 (GetSecControl ());
682
683 switch (m_secctrlKeyIdMode)
684 {
685 case IMPLICIT:
686 break;
687 case NOKEYSOURCE:
688 i.WriteU8 (GetKeyIdIndex ());
689 break;
690 case SHORTKEYSOURCE:
692 i.WriteU8 (GetKeyIdIndex ());
693 break;
694 case LONGKEYSOURCE:
696 i.WriteU8 (GetKeyIdIndex ());
697 break;
698 }
699 }
700}
701
702
705{
706
708 uint16_t frameControl = i.ReadLsbtohU16 ();
709 SetFrameControl (frameControl);
710
711 SetSeqNum (i.ReadU8 ());
712 switch (m_fctrlDstAddrMode)
713 {
714 case NOADDR:
715 break;
716 case SHORTADDR:
719 break;
720 case EXTADDR:
723 break;
724 }
725
726 switch (m_fctrlSrcAddrMode)
727 {
728 case NOADDR:
729 break;
730 case SHORTADDR:
731 if (!IsPanIdComp ())
732 {
734 }
735 else
736 {
737 if (m_fctrlDstAddrMode > 0)
738 {
740 }
741 }
743 break;
744 case EXTADDR:
745 if (!IsPanIdComp ())
746 {
748 }
749 else
750 {
751 if (m_fctrlDstAddrMode > 0)
752 {
754 }
755 }
757 break;
758 }
759
760 if (IsSecEnable ())
761 {
762 SetSecControl (i.ReadU8 ());
764
765 switch (m_secctrlKeyIdMode)
766 {
767 case IMPLICIT:
768 break;
769 case NOKEYSOURCE:
770 SetKeyId (i.ReadU8 ());
771 break;
772 case SHORTKEYSOURCE:
773 SetKeyId (i.ReadLsbtohU32 (),i.ReadU8 ());
774 break;
775 case LONGKEYSOURCE:
776 SetKeyId (i.ReadLsbtohU64 (),i.ReadU8 ());
777 break;
778 }
779 }
780 return i.GetDistanceFrom (start);
781}
782
783} //namespace ns3
784
785
iterator in a Buffer instance
Definition: buffer.h:99
void WriteHtolsbU16(uint16_t data)
Definition: buffer.cc:911
uint32_t ReadLsbtohU32(void)
Definition: buffer.cc:1077
void WriteU8(uint8_t data)
Definition: buffer.h:869
void WriteHtolsbU32(uint32_t data)
Definition: buffer.cc:918
uint8_t ReadU8(void)
Definition: buffer.h:1021
void WriteHtolsbU64(uint64_t data)
Definition: buffer.cc:927
uint16_t ReadLsbtohU16(void)
Definition: buffer.cc:1066
uint64_t ReadLsbtohU64(void)
Definition: buffer.cc:1094
uint32_t GetDistanceFrom(Iterator const &o) const
Definition: buffer.cc:788
Protocol header serialization and deserialization.
Definition: header.h:43
Represent the Mac Header with the Frame Control and Sequence Number fields.
void SetNoAckReq(void)
Set the Frame Control field "Ack. Request" bit to false.
uint8_t m_secctrlSecLevel
Auxiliary security header - Security Control field - Bit 0-2.
uint8_t m_fctrlDstAddrMode
Frame Control field Bit 10-11 = 0 - No DstAddr, 2 - ShtDstAddr, 3 - ExtDstAddr.
uint32_t m_auxFrmCntr
Auxiliary security header - Frame Counter (4 Octets)
void Print(std::ostream &os) const
LrWpanMacType
The possible MAC types, see IEEE 802.15.4-2006, Table 79.
@ LRWPAN_MAC_BEACON
LRWPAN_MAC_BEACON.
@ LRWPAN_MAC_COMMAND
LRWPAN_MAC_COMMAND.
@ LRWPAN_MAC_DATA
LRWPAN_MAC_DATA.
@ LRWPAN_MAC_ACKNOWLEDGMENT
LRWPAN_MAC_ACKNOWLEDGMENT.
@ LRWPAN_MAC_RESERVED
LRWPAN_MAC_RESERVED.
void SetSecEnable(void)
Set the Frame Control field "Security Enabled" bit to true.
uint8_t m_fctrlReserved
Frame Control field Bit 7-9.
uint8_t m_SeqNum
Sequence Number (1 Octet)
uint32_t m_auxKeyIdKeySrc32
Auxiliary security header - Key Source (4 Octets)
Mac64Address GetExtSrcAddr(void) const
Get the Source Extended address.
void SetKeyIdMode(uint8_t keyIdMode)
Set the Security Control field "Key Identifier Mode" bits (2 bits)
Mac16Address m_addrShortSrcAddr
Src Short addr (0 or 2 Octets)
uint8_t m_secctrlReserved
Auxiliary security header - Security Control field - Bit 5-7.
void SetFrmCtrlRes(uint8_t res)
Set the Frame Control field "Reserved" bits.
void SetFrmPend(void)
Set the Frame Control field "Frame Pending" bit to true.
void SetAckReq(void)
Set the Frame Control field "Ack. Request" bit to true.
void SetSeqNum(uint8_t seqNum)
Set the Sequence number.
void SetPanIdComp(void)
Set the Frame Control field "PAN ID Compression" bit to true.
uint8_t GetSrcAddrMode(void) const
Get the Source Addressing Mode of Frame control field.
bool IsBeacon(void) const
Returns true if the header is a beacon.
void SetSrcAddrMode(uint8_t addrMode)
Set the Source address mode.
uint8_t m_fctrlAckReq
Frame Control field Bit 5.
uint8_t m_fctrlPanIdComp
Frame Control field Bit 6 = 0 - no compression, 1 - using only DstPanId for both Src and DstPanId.
bool IsFrmPend(void) const
Check if Frame Pending bit of Frame Control is enabled.
void SetSrcAddrFields(uint16_t panId, Mac16Address addr)
Set Source address fields.
Mac64Address GetExtDstAddr(void) const
Get the Destination Extended address.
static TypeId GetTypeId(void)
Get the type ID.
uint8_t GetSeqNum(void) const
Get the frame Sequence number.
void SetType(enum LrWpanMacType wpanMacType)
Set the Frame Control field "Frame Type" bits.
uint16_t GetDstPanId(void) const
Get the Destination PAN ID.
enum LrWpanMacType GetType(void) const
Get the header type.
uint8_t m_fctrlSrcAddrMode
Frame Control field Bit 14-15 = 0 - No SrcAddr, 2 - ShtSrcAddr, 3 - ExtSrcAddr.
uint8_t m_fctrlFrmType
Frame Control field Bit 0-2 = 0 - Beacon, 1 - Data, 2 - Ack, 3 - Command.
uint8_t GetKeyIdMode(void) const
Get the Auxiliary Security Header - Security Control - Key Identifier Mode bits.
uint8_t GetSecLevel(void) const
Get the Auxiliary Security Header - Security Control - Security Level bits.
void SetDstAddrFields(uint16_t panId, Mac16Address addr)
Set Destination address fields.
void SetDstAddrMode(uint8_t addrMode)
Set the Destination address mode.
uint32_t GetFrmCounter(void) const
Get the Auxiliary Security Header - Frame Counter Octects.
Mac16Address GetShortSrcAddr(void) const
Get the Source Short address.
void SetFrmCounter(uint32_t frmCntr)
Set the auxiliary security header "Frame Counter" octet.
bool IsData(void) const
Returns true if the header is a data.
uint8_t m_secctrlKeyIdMode
Auxiliary security header - Security Control field - Bit 3-4 will indicate size of Key Id.
uint64_t m_auxKeyIdKeySrc64
Auxiliary security header - Key Source (8 Octets)
uint32_t GetSerializedSize(void) const
void Serialize(Buffer::Iterator start) const
uint8_t GetSecControl(void) const
Get the Auxiliary Security Header - Security Control Octect.
uint8_t GetFrmCtrlRes(void) const
Get the Reserved bits of Frame control field.
bool IsSecEnable(void) const
Check if Security Enabled bit of Frame Control is enabled.
uint8_t m_fctrlFrmPending
Frame Control field Bit 4.
void SetFrameControl(uint16_t frameControl)
Set the whole Frame Control field.
void SetSecCtrlReserved(uint8_t res)
Set the Security Control field "Reserved" bits (3 bits)
uint32_t Deserialize(Buffer::Iterator start)
uint8_t GetFrameVer(void) const
Get the Frame Version of Frame control field.
Mac16Address GetShortDstAddr(void) const
Get the Destination Short address.
bool IsCommand(void) const
Returns true if the header is a command.
void SetNoPanIdComp(void)
Set the Frame Control field "PAN ID Compression" bit to false.
void SetSecLevel(uint8_t secLevel)
Set the Security Control field "Security Level" bits (3 bits)
bool IsAckReq(void) const
Check if Ack.
uint16_t GetFrameControl(void) const
Get the Frame control field.
void SetKeyId(uint8_t keyIndex)
Set the Key Index.
void SetSecDisable(void)
Set the Frame Control field "Security Enabled" bit to false.
uint8_t GetSecCtrlReserved(void) const
Get the Auxiliary Security Header - Security Control - Reserved bits.
Mac64Address m_addrExtSrcAddr
Src Ext addr (0 or 8 Octets)
Mac64Address m_addrExtDstAddr
Dst Ext addr (0 or 8 Octets)
uint16_t m_addrDstPanId
Dst PAN id (0 or 2 Octets)
void SetFrameVer(uint8_t ver)
Set the Frame version.
Mac16Address m_addrShortDstAddr
Dst Short addr (0 or 2 Octets)
uint16_t m_addrSrcPanId
Src PAN id (0 or 2 Octets)
uint8_t m_fctrlFrmVer
Frame Control field Bit 12-13.
uint8_t m_auxKeyIdKeyIndex
Auxiliary security header - Key Index (1 Octet)
bool IsAcknowledgment(void) const
Returns true if the header is an ack.
virtual TypeId GetInstanceTypeId(void) const
Get the most derived TypeId for this Object.
uint64_t GetKeyIdSrc64(void) const
Get the Auxiliary Security Header - Key Identifier - Key Source (4 Octects)
uint16_t GetSrcPanId(void) const
Get the Source PAN ID.
bool IsPanIdComp(void) const
Check if PAN ID Compression bit of Frame Control is enabled.
uint8_t GetDstAddrMode(void) const
Get the Dest.
uint8_t m_fctrlSecU
Frame Control field Bit 3 = 0 - no AuxSecHdr , 1 - security enabled AuxSecHdr present.
uint8_t GetKeyIdIndex(void) const
Get the Auxiliary Security Header - Key Identifier - Key Index.
uint32_t GetKeyIdSrc32(void) const
Get the Auxiliary Security Header - Key Identifier - Key Source (2 Octects)
void SetSecControl(uint8_t secLevel)
Set the auxiliary security header "Security Control" octet.
void SetNoFrmPend(void)
Set the Frame Control field "Frame Pending" bit to false.
This class can contain 16 bit addresses.
Definition: mac16-address.h:42
an EUI-64 address
Definition: mac64-address.h:44
a unique identifier for an interface.
Definition: type-id.h:59
TypeId SetParent(TypeId tid)
Set the parent TypeId.
Definition: type-id.cc:922
#define NS_OBJECT_ENSURE_REGISTERED(type)
Register an Object subclass with the TypeId system.
Definition: object-base.h:45
Every class exported by the ns3 library is enclosed in the ns3 namespace.
void WriteTo(Buffer::Iterator &i, Ipv4Address ad)
Write an Ipv4Address to a Buffer.
void ReadFrom(Buffer::Iterator &i, Ipv4Address &ad)
Read an Ipv4Address from a Buffer.
def start()
Definition: core.py:1853