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 
23 namespace ns3 {
24 
25 NS_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:
82  return LRWPAN_MAC_RESERVED;
83  }
84 }
85 
86 
87 
88 uint16_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 
106 bool
108 {
109  return (m_fctrlSecU == 1);
110 }
111 
112 bool
114 {
115  return (m_fctrlFrmPending == 1);
116 }
117 
118 bool
120 {
121  return (m_fctrlAckReq == 1);
122 }
123 
124 bool
126 {
127  return (m_fctrlPanIdComp == 1);
128 }
129 
130 uint8_t
132 {
133  return (m_fctrlReserved);
134 }
135 
136 uint8_t
138 {
139  return m_fctrlDstAddrMode;
140 }
141 
142 uint8_t
144 {
145  return m_fctrlFrmVer;
146 }
147 
148 uint8_t
150 {
151  return m_fctrlSrcAddrMode;
152 }
153 
154 
155 uint8_t
157 {
158  return(m_SeqNum);
159 }
160 
161 
162 uint16_t
164 {
165  return(m_addrDstPanId);
166 }
167 
168 
171 {
172  return(m_addrShortDstAddr);
173 }
176 {
177  return(m_addrExtDstAddr);
178 }
179 
180 uint16_t
182 {
183  return(m_addrSrcPanId);
184 }
185 
186 
187 
190 {
191  return(m_addrShortSrcAddr);
192 }
195 {
196  return(m_addrExtSrcAddr);
197 }
198 
199 
200 uint8_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 
212 uint32_t
214 {
215  return(m_auxFrmCntr);
216 }
217 
218 uint8_t
220 {
221  return (m_secctrlSecLevel);
222 }
223 
224 uint8_t
226 {
227  return(m_secctrlKeyIdMode);
228 }
229 
230 uint8_t
232 {
233  return (m_secctrlReserved);
234 }
235 
236 uint32_t
238 {
239  return(m_auxKeyIdKeySrc32);
240 }
241 
242 uint64_t
244 {
245 
246  return(m_auxKeyIdKeySrc64);
247 }
248 
249 uint8_t
251 {
252  return(m_auxKeyIdKeyIndex);
253 }
254 
255 bool
257 {
259 }
260 
261 bool
263 {
264  return(m_fctrlFrmType == LRWPAN_MAC_DATA);
265 }
266 
267 bool
269 {
271 }
272 
273 bool
275 {
277 }
278 
279 
280 
281 void
283 {
284  m_fctrlFrmType = wpanMacType;
285 }
286 
287 
288 void
289 LrWpanMacHeader::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 
303 void
305 {
306  m_fctrlSecU = 1;
307 }
308 
309 
310 void
312 {
313  m_fctrlSecU = 0;
314 }
315 
316 
317 void
319 {
320  m_fctrlFrmPending = 1;
321 }
322 
323 
324 void
326 {
327  m_fctrlFrmPending = 0;
328 }
329 
330 
331 void
333 {
334  m_fctrlAckReq = 1;
335 }
336 
337 
338 void
340 {
341  m_fctrlAckReq = 0;
342 }
343 
344 
345 void
347 {
348  m_fctrlPanIdComp = 1;
349 }
350 
351 
353 {
354  m_fctrlPanIdComp = 0;
355 }
356 
357 void
359 {
360  m_fctrlReserved = res;
361 }
362 
363 void
365 {
366  m_fctrlDstAddrMode = addrMode;
367 }
368 
369 
370 void
372 {
373  m_fctrlFrmVer = ver;
374 }
375 
376 
377 void
379 {
380  m_fctrlSrcAddrMode = addrMode;
381 }
382 
383 
384 void
386 {
387  m_SeqNum = seqNum;
388 }
389 
390 void
392  Mac16Address addr)
393 {
394  m_addrSrcPanId = panId;
395  m_addrShortSrcAddr = addr;
396 }
397 
398 void
400  Mac64Address addr)
401 {
402  m_addrSrcPanId = panId;
403  m_addrExtSrcAddr = addr;
404 }
405 
406 void
408  Mac16Address addr)
409 {
410  m_addrDstPanId = panId;
411  m_addrShortDstAddr = addr;
412 }
413 void
415  Mac64Address addr)
416 {
417  m_addrDstPanId = panId;
418  m_addrExtDstAddr = addr;
419 }
420 void
421 LrWpanMacHeader::SetSecControl (uint8_t secControl)
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 
428 void
430 {
431  m_auxFrmCntr = frmCntr;
432 }
433 
434 void
436 {
437  m_secctrlSecLevel = secLevel;
438 }
439 
440 void
441 LrWpanMacHeader::SetKeyIdMode (uint8_t keyIdMode)
442 {
443  m_secctrlKeyIdMode = keyIdMode;
444 }
445 
446 void
448 {
449  m_secctrlReserved = res;
450 }
451 
452 void
453 LrWpanMacHeader::SetKeyId (uint8_t keyIndex)
454 {
455  m_auxKeyIdKeyIndex = keyIndex;
456 }
457 
458 
459 void
460 LrWpanMacHeader::SetKeyId (uint32_t keySrc,
461  uint8_t keyIndex)
462 {
463  m_auxKeyIdKeyIndex = keyIndex;
464  m_auxKeyIdKeySrc32 = keySrc;
465 }
466 
467 
468 void
469 LrWpanMacHeader::SetKeyId (uint64_t keySrc,
470  uint8_t keyIndex)
471 {
472  m_auxKeyIdKeyIndex = keyIndex;
473  m_auxKeyIdKeySrc64 = keySrc;
474 }
475 
476 TypeId
478 {
479  static TypeId tid = TypeId ("ns3::LrWpanMacHeader")
480  .SetParent<Header> ()
481  .SetGroupName ("LrWpan")
482  .AddConstructor<LrWpanMacHeader> ();
483  return tid;
484 }
485 
486 TypeId
488 {
489  return GetTypeId ();
490 }
491 
492 void
493 LrWpanMacHeader::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 
555 uint32_t
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 
635 void
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 
703 uint32_t
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 
Protocol header serialization and deserialization.
Definition: header.h:42
void SetNoFrmPend(void)
Set the Frame Control field "Frame Pending" bit to false.
uint32_t GetFrmCounter(void) const
Get the Auxiliary Security Header - Frame Counter Octects.
uint8_t GetSeqNum(void) const
Get the frame Sequence number.
void SetSecDisable(void)
Set the Frame Control field "Security Enabled" bit to false.
uint8_t m_fctrlDstAddrMode
Frame Control field Bit 10-11 = 0 - No DstAddr, 2 - ShtDstAddr, 3 - ExtDstAddr.
uint8_t m_fctrlSecU
Frame Control field Bit 3 = 0 - no AuxSecHdr , 1 - security enabled AuxSecHdr present.
Mac16Address GetShortDstAddr(void) const
Get the Destination Short address.
#define NS_OBJECT_ENSURE_REGISTERED(type)
Register an Object subclass with the TypeId system.
Definition: object-base.h:45
Mac16Address GetShortSrcAddr(void) const
Get the Source Short address.
uint32_t GetSerializedSize(void) const
void SetKeyId(uint8_t keyIndex)
Set the Key Index.
uint16_t GetFrameControl(void) const
Get the Frame control field.
void ReadFrom(Buffer::Iterator &i, Ipv4Address &ad)
Read an Ipv4Address from a Buffer.
def start()
Definition: core.py:1855
bool IsData(void) const
Returns true if the header is a data.
void SetNoPanIdComp(void)
Set the Frame Control field "PAN ID Compression" bit to false.
void SetNoAckReq(void)
Set the Frame Control field "Ack. Request" bit to false.
uint8_t m_secctrlReserved
Auxiliary security header - Security Control field - Bit 5-7.
void WriteTo(Buffer::Iterator &i, Ipv4Address ad)
Write an Ipv4Address to a Buffer.
uint8_t m_secctrlKeyIdMode
Auxiliary security header - Security Control field - Bit 3-4 will indicate size of Key Id...
Mac16Address m_addrShortDstAddr
Dst Short addr (0 or 2 Octets)
void SetSeqNum(uint8_t seqNum)
Set the Sequence number.
Represent the Mac Header with the Frame Control and Sequence Number fields.
bool IsCommand(void) const
Returns true if the header is a command.
uint64_t GetKeyIdSrc64(void) const
Get the Auxiliary Security Header - Key Identifier - Key Source (4 Octects)
uint16_t GetDstPanId(void) const
Get the Destination PAN ID.
uint16_t m_addrDstPanId
Dst PAN id (0 or 2 Octets)
uint8_t m_fctrlFrmPending
Frame Control field Bit 4.
LrWpanMacType
The possible MAC types, see IEEE 802.15.4-2006, Table 79.
uint16_t m_addrSrcPanId
Src PAN id (0 or 2 Octets)
void SetAckReq(void)
Set the Frame Control field "Ack. Request" bit to true.
void SetFrmCounter(uint32_t frmCntr)
Set the auxiliary security header "Frame Counter" octet.
uint8_t GetFrameVer(void) const
Get the Frame Version of Frame control field.
iterator in a Buffer instance
Definition: buffer.h:98
void SetSrcAddrFields(uint16_t panId, Mac16Address addr)
Set Source address fields.
an EUI-64 address
Definition: mac64-address.h:43
uint32_t GetDistanceFrom(Iterator const &o) const
Definition: buffer.cc:783
void SetKeyIdMode(uint8_t keyIdMode)
Set the Security Control field "Key Identifier Mode" bits (2 bits)
bool IsPanIdComp(void) const
Check if PAN ID Compression bit of Frame Control is enabled.
bool IsFrmPend(void) const
Check if Frame Pending bit of Frame Control is enabled.
uint32_t m_auxKeyIdKeySrc32
Auxiliary security header - Key Source (4 Octets)
void SetSecCtrlReserved(uint8_t res)
Set the Security Control field "Reserved" bits (3 bits)
void SetSecEnable(void)
Set the Frame Control field "Security Enabled" bit to true.
uint8_t GetDstAddrMode(void) const
Get the Dest.
uint64_t m_auxKeyIdKeySrc64
Auxiliary security header - Key Source (8 Octets)
enum LrWpanMacType GetType(void) const
Get the header type.
Mac64Address m_addrExtDstAddr
Dst Ext addr (0 or 8 Octets)
void SetFrameVer(uint8_t ver)
Set the Frame version.
uint8_t m_SeqNum
Sequence Number (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.
uint8_t GetSecLevel(void) const
Get the Auxiliary Security Header - Security Control - Security Level bits.
uint8_t GetKeyIdMode(void) const
Get the Auxiliary Security Header - Security Control - Key Identifier Mode bits.
void SetType(enum LrWpanMacType wpanMacType)
Set the Frame Control field "Frame Type" bits.
Mac64Address GetExtSrcAddr(void) const
Get the Source Extended address.
void SetFrmCtrlRes(uint8_t res)
Set the Frame Control field "Reserved" bits.
void SetPanIdComp(void)
Set the Frame Control field "PAN ID Compression" bit to true.
Every class exported by the ns3 library is enclosed in the ns3 namespace.
uint8_t GetSrcAddrMode(void) const
Get the Source Addressing Mode of Frame control field.
uint8_t m_auxKeyIdKeyIndex
Auxiliary security header - Key Index (1 Octet)
Mac16Address m_addrShortSrcAddr
Src Short addr (0 or 2 Octets)
void SetDstAddrMode(uint8_t addrMode)
Set the Destination address mode.
uint8_t m_fctrlPanIdComp
Frame Control field Bit 6 = 0 - no compression, 1 - using only DstPanId for both Src and DstPanId...
bool IsAckReq(void) const
Check if Ack.
This class can contain 16 bit addresses.
Definition: mac16-address.h:41
Mac64Address m_addrExtSrcAddr
Src Ext addr (0 or 8 Octets)
uint32_t GetKeyIdSrc32(void) const
Get the Auxiliary Security Header - Key Identifier - Key Source (2 Octects)
uint8_t m_secctrlSecLevel
Auxiliary security header - Security Control field - Bit 0-2.
void SetDstAddrFields(uint16_t panId, Mac16Address addr)
Set Destination address fields.
uint16_t GetSrcPanId(void) const
Get the Source PAN ID.
void SetSecControl(uint8_t secLevel)
Set the auxiliary security header "Security Control" octet.
void WriteHtolsbU16(uint16_t data)
Definition: buffer.cc:910
bool IsBeacon(void) const
Returns true if the header is a beacon.
bool IsSecEnable(void) const
Check if Security Enabled bit of Frame Control is enabled.
uint32_t Deserialize(Buffer::Iterator start)
void SetFrmPend(void)
Set the Frame Control field "Frame Pending" bit to true.
void WriteU8(uint8_t data)
Definition: buffer.h:869
uint8_t GetSecControl(void) const
Get the Auxiliary Security Header - Security Control Octect.
void WriteHtolsbU64(uint64_t data)
Definition: buffer.cc:926
void SetFrameControl(uint16_t frameControl)
Set the whole Frame Control field.
void SetSrcAddrMode(uint8_t addrMode)
Set the Source address mode.
void Print(std::ostream &os) const
static TypeId GetTypeId(void)
Get the type ID.
uint8_t ReadU8(void)
Definition: buffer.h:1021
uint8_t m_fctrlReserved
Frame Control field Bit 7-9.
uint32_t m_auxFrmCntr
Auxiliary security header - Frame Counter (4 Octets)
uint8_t m_fctrlSrcAddrMode
Frame Control field Bit 14-15 = 0 - No SrcAddr, 2 - ShtSrcAddr, 3 - ExtSrcAddr.
uint16_t ReadLsbtohU16(void)
Definition: buffer.cc:1065
uint8_t m_fctrlFrmVer
Frame Control field Bit 12-13.
uint8_t m_fctrlAckReq
Frame Control field Bit 5.
void Serialize(Buffer::Iterator start) const
uint8_t GetKeyIdIndex(void) const
Get the Auxiliary Security Header - Key Identifier - Key Index.
uint64_t ReadLsbtohU64(void)
Definition: buffer.cc:1093
uint8_t m_fctrlFrmType
Frame Control field Bit 0-2 = 0 - Beacon, 1 - Data, 2 - Ack, 3 - Command.
void SetSecLevel(uint8_t secLevel)
Set the Security Control field "Security Level" bits (3 bits)
a unique identifier for an interface.
Definition: type-id.h:58
uint8_t GetFrmCtrlRes(void) const
Get the Reserved bits of Frame control field.
TypeId SetParent(TypeId tid)
Set the parent TypeId.
Definition: type-id.cc:923
uint32_t ReadLsbtohU32(void)
Definition: buffer.cc:1076
uint8_t GetSecCtrlReserved(void) const
Get the Auxiliary Security Header - Security Control - Reserved bits.
void WriteHtolsbU32(uint32_t data)
Definition: buffer.cc:917
Mac64Address GetExtDstAddr(void) const
Get the Destination Extended address.