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 
65 LrWpanMacHeader::GetType (void) const
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 
ns3::TypeId
a unique identifier for an interface.
Definition: type-id.h:59
ns3::LrWpanMacHeader::NOKEYSOURCE
@ NOKEYSOURCE
Definition: lr-wpan-mac-header.h:86
ns3::LrWpanMacHeader::SetSecDisable
void SetSecDisable(void)
Set the Frame Control field "Security Enabled" bit to false.
Definition: lr-wpan-mac-header.cc:311
ns3::LrWpanMacHeader::GetSecLevel
uint8_t GetSecLevel(void) const
Get the Auxiliary Security Header - Security Control - Security Level bits.
Definition: lr-wpan-mac-header.cc:219
ns3::LrWpanMacHeader::m_addrSrcPanId
uint16_t m_addrSrcPanId
Src PAN id (0 or 2 Octets)
Definition: lr-wpan-mac-header.h:421
NS_OBJECT_ENSURE_REGISTERED
#define NS_OBJECT_ENSURE_REGISTERED(type)
Register an Object subclass with the TypeId system.
Definition: object-base.h:45
ns3::LrWpanMacHeader::SetFrmCtrlRes
void SetFrmCtrlRes(uint8_t res)
Set the Frame Control field "Reserved" bits.
Definition: lr-wpan-mac-header.cc:358
ns3::LrWpanMacHeader::m_fctrlPanIdComp
uint8_t m_fctrlPanIdComp
Frame Control field Bit 6 = 0 - no compression, 1 - using only DstPanId for both Src and DstPanId.
Definition: lr-wpan-mac-header.h:408
ns3::Buffer::Iterator::WriteHtolsbU16
void WriteHtolsbU16(uint16_t data)
Definition: buffer.cc:911
ns3::LrWpanMacHeader::m_fctrlReserved
uint8_t m_fctrlReserved
Frame Control field Bit 7-9.
Definition: lr-wpan-mac-header.h:409
ns3::LrWpanMacHeader::~LrWpanMacHeader
~LrWpanMacHeader(void)
Definition: lr-wpan-mac-header.cc:59
ns3::LrWpanMacHeader::m_fctrlFrmVer
uint8_t m_fctrlFrmVer
Frame Control field Bit 12-13.
Definition: lr-wpan-mac-header.h:411
ns3::LrWpanMacHeader::m_fctrlSrcAddrMode
uint8_t m_fctrlSrcAddrMode
Frame Control field Bit 14-15 = 0 - No SrcAddr, 2 - ShtSrcAddr, 3 - ExtSrcAddr.
Definition: lr-wpan-mac-header.h:412
ns3::LrWpanMacHeader::SetDstAddrMode
void SetDstAddrMode(uint8_t addrMode)
Set the Destination address mode.
Definition: lr-wpan-mac-header.cc:364
ns3::LrWpanMacHeader::GetSeqNum
uint8_t GetSeqNum(void) const
Get the frame Sequence number.
Definition: lr-wpan-mac-header.cc:156
ns3
Every class exported by the ns3 library is enclosed in the ns3 namespace.
ns3::LrWpanMacHeader::m_addrShortSrcAddr
Mac16Address m_addrShortSrcAddr
Src Short addr (0 or 2 Octets)
Definition: lr-wpan-mac-header.h:422
ns3::Buffer::Iterator::GetDistanceFrom
uint32_t GetDistanceFrom(Iterator const &o) const
Definition: buffer.cc:788
ns3::LrWpanMacHeader::LRWPAN_MAC_DATA
@ LRWPAN_MAC_DATA
LRWPAN_MAC_DATA.
Definition: lr-wpan-mac-header.h:63
ns3::LrWpanMacHeader::LRWPAN_MAC_COMMAND
@ LRWPAN_MAC_COMMAND
LRWPAN_MAC_COMMAND.
Definition: lr-wpan-mac-header.h:65
ns3::LrWpanMacHeader::Serialize
void Serialize(Buffer::Iterator start) const
Definition: lr-wpan-mac-header.cc:636
ns3::LrWpanMacHeader::LRWPAN_MAC_BEACON
@ LRWPAN_MAC_BEACON
LRWPAN_MAC_BEACON.
Definition: lr-wpan-mac-header.h:62
ns3::Mac16Address
This class can contain 16 bit addresses.
Definition: mac16-address.h:42
ns3::Buffer::Iterator::ReadU8
uint8_t ReadU8(void)
Definition: buffer.h:1021
ns3::LrWpanMacHeader::GetKeyIdMode
uint8_t GetKeyIdMode(void) const
Get the Auxiliary Security Header - Security Control - Key Identifier Mode bits.
Definition: lr-wpan-mac-header.cc:225
ns3::LrWpanMacHeader::SetKeyIdMode
void SetKeyIdMode(uint8_t keyIdMode)
Set the Security Control field "Key Identifier Mode" bits (2 bits)
Definition: lr-wpan-mac-header.cc:441
ns3::LrWpanMacHeader::SetSecControl
void SetSecControl(uint8_t secLevel)
Set the auxiliary security header "Security Control" octet.
Definition: lr-wpan-mac-header.cc:421
ns3::LrWpanMacHeader::GetFrameVer
uint8_t GetFrameVer(void) const
Get the Frame Version of Frame control field.
Definition: lr-wpan-mac-header.cc:143
ns3::LrWpanMacHeader::GetShortSrcAddr
Mac16Address GetShortSrcAddr(void) const
Get the Source Short address.
Definition: lr-wpan-mac-header.cc:189
ns3::Buffer::Iterator::WriteU8
void WriteU8(uint8_t data)
Definition: buffer.h:869
ns3::LrWpanMacHeader::LRWPAN_MAC_ACKNOWLEDGMENT
@ LRWPAN_MAC_ACKNOWLEDGMENT
LRWPAN_MAC_ACKNOWLEDGMENT.
Definition: lr-wpan-mac-header.h:64
ns3::LrWpanMacHeader::GetTypeId
static TypeId GetTypeId(void)
Get the type ID.
Definition: lr-wpan-mac-header.cc:477
ns3::LrWpanMacHeader::m_secctrlKeyIdMode
uint8_t m_secctrlKeyIdMode
Auxiliary security header - Security Control field - Bit 3-4 will indicate size of Key Id.
Definition: lr-wpan-mac-header.h:431
ns3::LrWpanMacHeader::SetKeyId
void SetKeyId(uint8_t keyIndex)
Set the Key Index.
Definition: lr-wpan-mac-header.cc:453
lr-wpan-mac-header.h
ns3::LrWpanMacHeader::GetSerializedSize
uint32_t GetSerializedSize(void) const
Definition: lr-wpan-mac-header.cc:556
ns3::LrWpanMacHeader::GetShortDstAddr
Mac16Address GetShortDstAddr(void) const
Get the Destination Short address.
Definition: lr-wpan-mac-header.cc:170
ns3::Mac64Address
an EUI-64 address
Definition: mac64-address.h:44
ns3::LrWpanMacHeader::GetKeyIdSrc32
uint32_t GetKeyIdSrc32(void) const
Get the Auxiliary Security Header - Key Identifier - Key Source (2 Octects)
Definition: lr-wpan-mac-header.cc:237
ns3::TypeId::SetParent
TypeId SetParent(TypeId tid)
Set the parent TypeId.
Definition: type-id.cc:923
ns3::LrWpanMacHeader::GetKeyIdSrc64
uint64_t GetKeyIdSrc64(void) const
Get the Auxiliary Security Header - Key Identifier - Key Source (4 Octects)
Definition: lr-wpan-mac-header.cc:243
ns3::LrWpanMacHeader::SetSrcAddrMode
void SetSrcAddrMode(uint8_t addrMode)
Set the Source address mode.
Definition: lr-wpan-mac-header.cc:378
ns3::LrWpanMacHeader::SetSecEnable
void SetSecEnable(void)
Set the Frame Control field "Security Enabled" bit to true.
Definition: lr-wpan-mac-header.cc:304
ns3::LrWpanMacHeader::GetSrcPanId
uint16_t GetSrcPanId(void) const
Get the Source PAN ID.
Definition: lr-wpan-mac-header.cc:181
ns3::LrWpanMacHeader::IsAckReq
bool IsAckReq(void) const
Check if Ack.
Definition: lr-wpan-mac-header.cc:119
ns3::LrWpanMacHeader::EXTADDR
@ EXTADDR
Definition: lr-wpan-mac-header.h:77
ns3::LrWpanMacHeader::m_fctrlDstAddrMode
uint8_t m_fctrlDstAddrMode
Frame Control field Bit 10-11 = 0 - No DstAddr, 2 - ShtDstAddr, 3 - ExtDstAddr.
Definition: lr-wpan-mac-header.h:410
ns3::LrWpanMacHeader::m_secctrlReserved
uint8_t m_secctrlReserved
Auxiliary security header - Security Control field - Bit 5-7.
Definition: lr-wpan-mac-header.h:438
ns3::LrWpanMacHeader::SetDstAddrFields
void SetDstAddrFields(uint16_t panId, Mac16Address addr)
Set Destination address fields.
Definition: lr-wpan-mac-header.cc:407
ns3::Buffer::Iterator::WriteHtolsbU64
void WriteHtolsbU64(uint64_t data)
Definition: buffer.cc:927
ns3::Buffer::Iterator::ReadLsbtohU64
uint64_t ReadLsbtohU64(void)
Definition: buffer.cc:1094
visualizer.core.start
def start()
Definition: core.py:1855
ns3::Buffer::Iterator::WriteHtolsbU32
void WriteHtolsbU32(uint32_t data)
Definition: buffer.cc:918
ns3::LrWpanMacHeader::Print
void Print(std::ostream &os) const
Definition: lr-wpan-mac-header.cc:493
ns3::LrWpanMacHeader::SetNoAckReq
void SetNoAckReq(void)
Set the Frame Control field "Ack. Request" bit to false.
Definition: lr-wpan-mac-header.cc:339
ns3::LrWpanMacHeader::IMPLICIT
@ IMPLICIT
Definition: lr-wpan-mac-header.h:85
ns3::LrWpanMacHeader::SetFrameVer
void SetFrameVer(uint8_t ver)
Set the Frame version.
Definition: lr-wpan-mac-header.cc:371
ns3::LrWpanMacHeader::SetSeqNum
void SetSeqNum(uint8_t seqNum)
Set the Sequence number.
Definition: lr-wpan-mac-header.cc:385
ns3::LrWpanMacHeader::m_fctrlFrmType
uint8_t m_fctrlFrmType
Frame Control field Bit 0-2 = 0 - Beacon, 1 - Data, 2 - Ack, 3 - Command.
Definition: lr-wpan-mac-header.h:404
ns3::LrWpanMacHeader::SetNoFrmPend
void SetNoFrmPend(void)
Set the Frame Control field "Frame Pending" bit to false.
Definition: lr-wpan-mac-header.cc:325
ns3::LrWpanMacHeader::SHORTKEYSOURCE
@ SHORTKEYSOURCE
Definition: lr-wpan-mac-header.h:87
ns3::LrWpanMacHeader::GetSrcAddrMode
uint8_t GetSrcAddrMode(void) const
Get the Source Addressing Mode of Frame control field.
Definition: lr-wpan-mac-header.cc:149
ns3::LrWpanMacHeader::LONGKEYSOURCE
@ LONGKEYSOURCE
Definition: lr-wpan-mac-header.h:88
ns3::LrWpanMacHeader::m_auxKeyIdKeyIndex
uint8_t m_auxKeyIdKeyIndex
Auxiliary security header - Key Index (1 Octet)
Definition: lr-wpan-mac-header.h:446
ns3::LrWpanMacHeader::IsData
bool IsData(void) const
Returns true if the header is a data.
Definition: lr-wpan-mac-header.cc:262
ns3::LrWpanMacHeader::GetKeyIdIndex
uint8_t GetKeyIdIndex(void) const
Get the Auxiliary Security Header - Key Identifier - Key Index.
Definition: lr-wpan-mac-header.cc:250
ns3::LrWpanMacHeader::SetNoPanIdComp
void SetNoPanIdComp(void)
Set the Frame Control field "PAN ID Compression" bit to false.
Definition: lr-wpan-mac-header.cc:352
ns3::LrWpanMacHeader::SetPanIdComp
void SetPanIdComp(void)
Set the Frame Control field "PAN ID Compression" bit to true.
Definition: lr-wpan-mac-header.cc:346
ns3::LrWpanMacHeader::GetType
enum LrWpanMacType GetType(void) const
Get the header type.
Definition: lr-wpan-mac-header.cc:65
ns3::LrWpanMacHeader::SetAckReq
void SetAckReq(void)
Set the Frame Control field "Ack. Request" bit to true.
Definition: lr-wpan-mac-header.cc:332
ns3::LrWpanMacHeader::IsPanIdComp
bool IsPanIdComp(void) const
Check if PAN ID Compression bit of Frame Control is enabled.
Definition: lr-wpan-mac-header.cc:125
ns3::LrWpanMacHeader::m_fctrlSecU
uint8_t m_fctrlSecU
Frame Control field Bit 3 = 0 - no AuxSecHdr , 1 - security enabled AuxSecHdr present.
Definition: lr-wpan-mac-header.h:405
ns3::LrWpanMacHeader
Represent the Mac Header with the Frame Control and Sequence Number fields.
Definition: lr-wpan-mac-header.h:54
ns3::Buffer::Iterator::ReadLsbtohU32
uint32_t ReadLsbtohU32(void)
Definition: buffer.cc:1077
ns3::LrWpanMacHeader::m_auxFrmCntr
uint32_t m_auxFrmCntr
Auxiliary security header - Frame Counter (4 Octets)
Definition: lr-wpan-mac-header.h:427
ns3::LrWpanMacHeader::m_secctrlSecLevel
uint8_t m_secctrlSecLevel
Auxiliary security header - Security Control field - Bit 0-2.
Definition: lr-wpan-mac-header.h:430
ns3::LrWpanMacHeader::GetExtDstAddr
Mac64Address GetExtDstAddr(void) const
Get the Destination Extended address.
Definition: lr-wpan-mac-header.cc:175
ns3::Header
Protocol header serialization and deserialization.
Definition: header.h:43
ns3::LrWpanMacHeader::SetSrcAddrFields
void SetSrcAddrFields(uint16_t panId, Mac16Address addr)
Set Source address fields.
Definition: lr-wpan-mac-header.cc:391
ns3::LrWpanMacHeader::LrWpanMacHeader
LrWpanMacHeader(void)
Definition: lr-wpan-mac-header.cc:29
ns3::LrWpanMacHeader::SetSecLevel
void SetSecLevel(uint8_t secLevel)
Set the Security Control field "Security Level" bits (3 bits)
Definition: lr-wpan-mac-header.cc:435
ns3::LrWpanMacHeader::IsAcknowledgment
bool IsAcknowledgment(void) const
Returns true if the header is an ack.
Definition: lr-wpan-mac-header.cc:268
ns3::LrWpanMacHeader::SetFrmPend
void SetFrmPend(void)
Set the Frame Control field "Frame Pending" bit to true.
Definition: lr-wpan-mac-header.cc:318
ns3::LrWpanMacHeader::m_auxKeyIdKeySrc32
uint32_t m_auxKeyIdKeySrc32
Auxiliary security header - Key Source (4 Octets)
Definition: lr-wpan-mac-header.h:442
ns3::LrWpanMacHeader::GetExtSrcAddr
Mac64Address GetExtSrcAddr(void) const
Get the Source Extended address.
Definition: lr-wpan-mac-header.cc:194
ns3::Buffer::Iterator::ReadLsbtohU16
uint16_t ReadLsbtohU16(void)
Definition: buffer.cc:1066
ns3::LrWpanMacHeader::GetDstPanId
uint16_t GetDstPanId(void) const
Get the Destination PAN ID.
Definition: lr-wpan-mac-header.cc:163
ns3::Header::Deserialize
virtual uint32_t Deserialize(Buffer::Iterator start)=0
Deserialize the object from a buffer iterator.
ns3::LrWpanMacHeader::SetFrmCounter
void SetFrmCounter(uint32_t frmCntr)
Set the auxiliary security header "Frame Counter" octet.
Definition: lr-wpan-mac-header.cc:429
ns3::LrWpanMacHeader::IsFrmPend
bool IsFrmPend(void) const
Check if Frame Pending bit of Frame Control is enabled.
Definition: lr-wpan-mac-header.cc:113
ns3::LrWpanMacHeader::IsSecEnable
bool IsSecEnable(void) const
Check if Security Enabled bit of Frame Control is enabled.
Definition: lr-wpan-mac-header.cc:107
ns3::Buffer::Iterator
iterator in a Buffer instance
Definition: buffer.h:99
ns3::LrWpanMacHeader::NOADDR
@ NOADDR
Definition: lr-wpan-mac-header.h:74
ns3::LrWpanMacHeader::m_addrShortDstAddr
Mac16Address m_addrShortDstAddr
Dst Short addr (0 or 2 Octets)
Definition: lr-wpan-mac-header.h:419
ns3::LrWpanMacHeader::m_addrExtDstAddr
Mac64Address m_addrExtDstAddr
Dst Ext addr (0 or 8 Octets)
Definition: lr-wpan-mac-header.h:420
ns3::LrWpanMacHeader::m_addrDstPanId
uint16_t m_addrDstPanId
Dst PAN id (0 or 2 Octets)
Definition: lr-wpan-mac-header.h:418
ns3::LrWpanMacHeader::GetFrmCounter
uint32_t GetFrmCounter(void) const
Get the Auxiliary Security Header - Frame Counter Octects.
Definition: lr-wpan-mac-header.cc:213
ns3::LrWpanMacHeader::SetFrameControl
void SetFrameControl(uint16_t frameControl)
Set the whole Frame Control field.
Definition: lr-wpan-mac-header.cc:289
ns3::LrWpanMacHeader::SetSecCtrlReserved
void SetSecCtrlReserved(uint8_t res)
Set the Security Control field "Reserved" bits (3 bits)
Definition: lr-wpan-mac-header.cc:447
ns3::WriteTo
void WriteTo(Buffer::Iterator &i, Ipv4Address ad)
Write an Ipv4Address to a Buffer.
Definition: address-utils.cc:28
ns3::LrWpanMacHeader::GetDstAddrMode
uint8_t GetDstAddrMode(void) const
Get the Dest.
Definition: lr-wpan-mac-header.cc:137
ns3::LrWpanMacHeader::IsBeacon
bool IsBeacon(void) const
Returns true if the header is a beacon.
Definition: lr-wpan-mac-header.cc:256
ns3::LrWpanMacHeader::GetSecControl
uint8_t GetSecControl(void) const
Get the Auxiliary Security Header - Security Control Octect.
Definition: lr-wpan-mac-header.cc:201
ns3::LrWpanMacHeader::m_fctrlFrmPending
uint8_t m_fctrlFrmPending
Frame Control field Bit 4.
Definition: lr-wpan-mac-header.h:406
ns3::LrWpanMacHeader::GetSecCtrlReserved
uint8_t GetSecCtrlReserved(void) const
Get the Auxiliary Security Header - Security Control - Reserved bits.
Definition: lr-wpan-mac-header.cc:231
ns3::LrWpanMacHeader::IsCommand
bool IsCommand(void) const
Returns true if the header is a command.
Definition: lr-wpan-mac-header.cc:274
ns3::LrWpanMacHeader::m_fctrlAckReq
uint8_t m_fctrlAckReq
Frame Control field Bit 5.
Definition: lr-wpan-mac-header.h:407
ns3::LrWpanMacHeader::LRWPAN_MAC_RESERVED
@ LRWPAN_MAC_RESERVED
LRWPAN_MAC_RESERVED.
Definition: lr-wpan-mac-header.h:66
ns3::LrWpanMacHeader::GetFrmCtrlRes
uint8_t GetFrmCtrlRes(void) const
Get the Reserved bits of Frame control field.
Definition: lr-wpan-mac-header.cc:131
ns3::LrWpanMacHeader::m_addrExtSrcAddr
Mac64Address m_addrExtSrcAddr
Src Ext addr (0 or 8 Octets)
Definition: lr-wpan-mac-header.h:423
ns3::LrWpanMacHeader::SHORTADDR
@ SHORTADDR
Definition: lr-wpan-mac-header.h:76
ns3::LrWpanMacHeader::m_SeqNum
uint8_t m_SeqNum
Sequence Number (1 Octet)
Definition: lr-wpan-mac-header.h:415
ns3::LrWpanMacHeader::m_auxKeyIdKeySrc64
uint64_t m_auxKeyIdKeySrc64
Auxiliary security header - Key Source (8 Octets)
Definition: lr-wpan-mac-header.h:443
ns3::LrWpanMacHeader::LrWpanMacType
LrWpanMacType
The possible MAC types, see IEEE 802.15.4-2006, Table 79.
Definition: lr-wpan-mac-header.h:61
ns3::LrWpanMacHeader::GetInstanceTypeId
virtual TypeId GetInstanceTypeId(void) const
Get the most derived TypeId for this Object.
Definition: lr-wpan-mac-header.cc:487
ns3::LrWpanMacHeader::SetType
void SetType(enum LrWpanMacType wpanMacType)
Set the Frame Control field "Frame Type" bits.
Definition: lr-wpan-mac-header.cc:282
ns3::ReadFrom
void ReadFrom(Buffer::Iterator &i, Ipv4Address &ad)
Read an Ipv4Address from a Buffer.
Definition: address-utils.cc:70
ns3::LrWpanMacHeader::GetFrameControl
uint16_t GetFrameControl(void) const
Get the Frame control field.
Definition: lr-wpan-mac-header.cc:89