A Discrete-Event Network Simulator
API
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
packetbb.h
Go to the documentation of this file.
1 /* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
2 /* vim: set ts=2 sw=2 sta expandtab ai si cin: */
3 /*
4  * Copyright (c) 2009 Drexel University
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: Tom Wambold <tom5760@gmail.com>
20  */
21 /* These classes implement RFC 5444 - The Generalized Mobile Ad Hoc Network
22  * (MANET) Packet/PbbMessage Format
23  * See: http://tools.ietf.org/html/rfc5444 for details */
24 
25 #ifndef PACKETBB_H
26 #define PACKETBB_H
27 
28 #include <list>
29 
30 #include "ns3/ptr.h"
31 #include "ns3/address.h"
32 #include "ns3/header.h"
33 #include "ns3/buffer.h"
34 #include "ns3/simple-ref-count.h"
35 
36 namespace ns3 {
37 
38 /* Forward declare objects */
39 class PbbMessage;
40 class PbbAddressBlock;
41 class PbbTlv;
42 class PbbAddressTlv;
43 
46  IPV4 = 3,
47  IPV6 = 15,
48 };
49 
56 {
57 public:
58  typedef std::list< Ptr<PbbTlv> >::iterator Iterator;
59  typedef std::list< Ptr<PbbTlv> >::const_iterator ConstIterator;
60 
61  PbbTlvBlock (void);
62  ~PbbTlvBlock (void);
63 
67  Iterator Begin (void);
68 
72  ConstIterator Begin (void) const;
73 
77  Iterator End (void);
78 
82  ConstIterator End (void) const;
83 
87  int Size (void) const;
88 
92  bool Empty (void) const;
93 
97  Ptr<PbbTlv> Front (void) const;
98 
102  Ptr<PbbTlv> Back (void) const;
103 
108  void PushFront (Ptr<PbbTlv> tlv);
109 
113  void PopFront (void);
114 
119  void PushBack (Ptr<PbbTlv> tlv);
120 
124  void PopBack (void);
125 
133  Iterator Insert (Iterator position, const Ptr<PbbTlv> tlv);
134 
140  Iterator Erase (Iterator position);
141 
150 
154  void Clear (void);
155 
159  uint32_t GetSerializedSize (void) const;
160 
168  void Serialize (Buffer::Iterator &start) const;
169 
178 
183  void Print (std::ostream &os) const;
184 
193  void Print (std::ostream &os, int level) const;
194 
200  bool operator== (const PbbTlvBlock &other) const;
206  bool operator!= (const PbbTlvBlock &other) const;
207 
208 private:
209  std::list< Ptr<PbbTlv> > m_tlvList;
210 };
211 
218 {
219 public:
220  typedef std::list< Ptr<PbbAddressTlv> >::iterator Iterator;
221  typedef std::list< Ptr<PbbAddressTlv> >::const_iterator ConstIterator;
222 
223  PbbAddressTlvBlock (void);
224  ~PbbAddressTlvBlock (void);
225 
229  Iterator Begin (void);
230 
234  ConstIterator Begin (void) const;
235 
239  Iterator End (void);
240 
244  ConstIterator End (void) const;
245 
249  int Size (void) const;
250 
254  bool Empty (void) const;
255 
259  Ptr<PbbAddressTlv> Front (void) const;
260 
264  Ptr<PbbAddressTlv> Back (void) const;
265 
270  void PushFront (Ptr<PbbAddressTlv> tlv);
271 
275  void PopFront (void);
276 
281  void PushBack (Ptr<PbbAddressTlv> tlv);
282 
286  void PopBack (void);
287 
295  Iterator Insert (Iterator position, const Ptr<PbbAddressTlv> tlv);
296 
302  Iterator Erase (Iterator position);
303 
314 
318  void Clear (void);
319 
323  uint32_t GetSerializedSize (void) const;
324 
332  void Serialize (Buffer::Iterator &start) const;
333 
342 
347  void Print (std::ostream &os) const;
348 
357  void Print (std::ostream &os, int level) const;
358 
364  bool operator== (const PbbAddressTlvBlock &other) const;
365 
371  bool operator!= (const PbbAddressTlvBlock &other) const;
372 
373 private:
374  std::list< Ptr<PbbAddressTlv> > m_tlvList;
375 };
376 
385 class PbbPacket : public SimpleRefCount<PbbPacket,Header>
386 {
387 public:
388  typedef std::list< Ptr<PbbTlv> >::iterator TlvIterator;
389  typedef std::list< Ptr<PbbTlv> >::const_iterator ConstTlvIterator;
390  typedef std::list< Ptr<PbbMessage> >::iterator MessageIterator;
391  typedef std::list< Ptr<PbbMessage> >::const_iterator ConstMessageIterator;
392 
393  PbbPacket (void);
394  ~PbbPacket (void);
395 
401  uint8_t GetVersion (void) const;
402 
407  void SetSequenceNumber (uint16_t number);
408 
415  uint16_t GetSequenceNumber (void) const;
416 
424  bool HasSequenceNumber (void) const;
425 
426  /* Manipulating Packet TLVs */
427 
431  TlvIterator TlvBegin (void);
432 
436  ConstTlvIterator TlvBegin (void) const;
437 
441  TlvIterator TlvEnd (void);
442 
447  ConstTlvIterator TlvEnd (void) const;
448 
452  int TlvSize (void) const;
453 
457  bool TlvEmpty (void) const;
458 
462  Ptr<PbbTlv> TlvFront (void);
463 
467  const Ptr<PbbTlv> TlvFront (void) const;
468 
472  Ptr<PbbTlv> TlvBack (void);
473 
477  const Ptr<PbbTlv> TlvBack (void) const;
478 
483  void TlvPushFront (Ptr<PbbTlv> tlv);
484 
488  void TlvPopFront (void);
489 
494  void TlvPushBack (Ptr<PbbTlv> tlv);
495 
499  void TlvPopBack (void);
500 
506  TlvIterator Erase (TlvIterator position);
507 
518 
522  void TlvClear (void);
523 
524  /* Manipulating Packet Messages */
525 
530 
534  ConstMessageIterator MessageBegin (void) const;
535 
540 
545  ConstMessageIterator MessageEnd (void) const;
546 
550  int MessageSize (void) const;
551 
555  bool MessageEmpty (void) const;
556 
561 
565  const Ptr<PbbMessage> MessageFront (void) const;
566 
571 
575  const Ptr<PbbMessage> MessageBack (void) const;
576 
581  void MessagePushFront (Ptr<PbbMessage> message);
582 
586  void MessagePopFront (void);
587 
592  void MessagePushBack (Ptr<PbbMessage> message);
593 
597  void MessagePopBack (void);
598 
605 
614 
618  void MessageClear (void);
619 
620  /* Methods implemented by all headers */
621  static TypeId GetTypeId (void);
622  virtual TypeId GetInstanceTypeId (void) const;
623 
627  virtual uint32_t GetSerializedSize (void) const;
628 
633  virtual void Serialize (Buffer::Iterator start) const;
634 
643  virtual uint32_t Deserialize (Buffer::Iterator start);
644 
649  virtual void Print (std::ostream &os) const;
650 
656  bool operator== (const PbbPacket &other) const;
657 
663  bool operator!= (const PbbPacket &other) const;
664 
665 protected:
666 
667 private:
669  std::list< Ptr<PbbMessage> > m_messageList;
670 
671  uint8_t m_version;
672 
674  uint16_t m_seqnum;
675 };
676 
684 class PbbMessage : public SimpleRefCount<PbbMessage>
685 {
686 public:
687  typedef std::list< Ptr<PbbTlv> >::iterator TlvIterator;
688  typedef std::list< Ptr<PbbTlv> >::const_iterator ConstTlvIterator;
689  typedef std::list< Ptr<PbbAddressBlock> >::iterator AddressBlockIterator;
690  typedef std::list< Ptr<PbbAddressBlock> >::const_iterator ConstAddressBlockIterator;
691 
692  PbbMessage ();
693  virtual ~PbbMessage ();
694 
699  void SetType (uint8_t type);
700 
704  uint8_t GetType (void) const;
705 
711 
718  Address GetOriginatorAddress (void) const;
719 
724  bool HasOriginatorAddress (void) const;
725 
730  void SetHopLimit (uint8_t hoplimit);
731 
738  uint8_t GetHopLimit (void) const;
739 
746  bool HasHopLimit (void) const;
747 
752  void SetHopCount (uint8_t hopcount);
753 
760  uint8_t GetHopCount (void) const;
761 
766  bool HasHopCount (void) const;
767 
772  void SetSequenceNumber (uint16_t seqnum);
773 
780  uint16_t GetSequenceNumber (void) const;
781 
786  bool HasSequenceNumber (void) const;
787 
788  /* Manipulating PbbMessage TLVs */
789 
794 
798  ConstTlvIterator TlvBegin () const;
799 
804  TlvIterator TlvEnd ();
805 
810  ConstTlvIterator TlvEnd () const;
811 
815  int TlvSize (void) const;
816 
820  bool TlvEmpty (void) const;
821 
825  Ptr<PbbTlv> TlvFront (void);
826 
830  const Ptr<PbbTlv> TlvFront (void) const;
831 
835  Ptr<PbbTlv> TlvBack (void);
836 
840  const Ptr<PbbTlv> TlvBack (void) const;
841 
846  void TlvPushFront (Ptr<PbbTlv> tlv);
847 
851  void TlvPopFront (void);
852 
857  void TlvPushBack (Ptr<PbbTlv> tlv);
858 
862  void TlvPopBack (void);
863 
869  TlvIterator TlvErase (TlvIterator position);
870 
881 
885  void TlvClear (void);
886 
887  /* Manipulating Address Block and Address TLV pairs */
888 
893 
898 
904 
910 
914  int AddressBlockSize (void) const;
915 
920  bool AddressBlockEmpty (void) const;
921 
926 
930  const Ptr<PbbAddressBlock> AddressBlockFront (void) const;
931 
936 
940  const Ptr<PbbAddressBlock> AddressBlockBack (void) const;
941 
947 
951  void AddressBlockPopFront (void);
952 
958 
962  void AddressBlockPopBack (void);
963 
970 
981  AddressBlockIterator last);
982 
986  void AddressBlockClear (void);
987 
998 
1002  uint32_t GetSerializedSize (void) const;
1003 
1011  void Serialize (Buffer::Iterator &start) const;
1012 
1021 
1026  void Print (std::ostream &os) const;
1027 
1037  void Print (std::ostream &os, int level) const;
1038 
1044  bool operator== (const PbbMessage &other) const;
1050  bool operator!= (const PbbMessage &other) const;
1051 
1052 protected:
1061  virtual PbbAddressLength GetAddressLength (void) const = 0;
1062 
1063  virtual void SerializeOriginatorAddress (Buffer::Iterator &start) const = 0;
1065  virtual void PrintOriginatorAddress (std::ostream &os) const = 0;
1066 
1068 
1069 private:
1071  std::list< Ptr<PbbAddressBlock> > m_addressBlockList;
1072 
1073  uint8_t m_type;
1075 
1078 
1080  uint8_t m_hopLimit;
1081 
1083  uint8_t m_hopCount;
1084 
1087 };
1088 
1094 class PbbMessageIpv4 : public PbbMessage {
1095 public:
1096  PbbMessageIpv4 ();
1097  virtual ~PbbMessageIpv4 ();
1098 
1099 protected:
1108  virtual PbbAddressLength GetAddressLength (void) const;
1109 
1110  virtual void SerializeOriginatorAddress (Buffer::Iterator &start) const;
1111  virtual Address DeserializeOriginatorAddress (Buffer::Iterator &start) const;
1112  virtual void PrintOriginatorAddress (std::ostream &os) const;
1113 
1115 };
1116 
1122 class PbbMessageIpv6 : public PbbMessage {
1123 public:
1124  PbbMessageIpv6 ();
1125  virtual ~PbbMessageIpv6 ();
1126 
1127 protected:
1136  virtual PbbAddressLength GetAddressLength (void) const;
1137 
1138  virtual void SerializeOriginatorAddress (Buffer::Iterator &start) const;
1139  virtual Address DeserializeOriginatorAddress (Buffer::Iterator &start) const;
1140  virtual void PrintOriginatorAddress (std::ostream &os) const;
1141 
1143 };
1144 
1151 class PbbAddressBlock : public SimpleRefCount<PbbAddressBlock>
1152 {
1153 public:
1154  typedef std::list< Address >::iterator AddressIterator;
1155  typedef std::list< Address >::const_iterator ConstAddressIterator;
1156 
1157  typedef std::list<uint8_t>::iterator PrefixIterator;
1158  typedef std::list<uint8_t>::const_iterator ConstPrefixIterator;
1159 
1162 
1163  PbbAddressBlock ();
1164  virtual ~PbbAddressBlock ();
1165 
1166  /* Manipulating the address block */
1167 
1172 
1176  ConstAddressIterator AddressBegin (void) const;
1177 
1181  AddressIterator AddressEnd (void);
1182 
1186  ConstAddressIterator AddressEnd (void) const;
1187 
1191  int AddressSize (void) const;
1192 
1196  bool AddressEmpty (void) const;
1197 
1201  Address AddressFront (void) const;
1202 
1206  Address AddressBack (void) const;
1207 
1213 
1217  void AddressPopFront (void);
1218 
1224 
1228  void AddressPopBack (void);
1229 
1238  const Address value);
1239 
1246 
1257 
1261  void AddressClear (void);
1262 
1263  /* Prefix methods */
1264 
1268  PrefixIterator PrefixBegin (void);
1269 
1273  ConstPrefixIterator PrefixBegin (void) const;
1274 
1278  PrefixIterator PrefixEnd (void);
1279 
1283  ConstPrefixIterator PrefixEnd (void) const;
1284 
1288  int PrefixSize (void) const;
1289 
1293  bool PrefixEmpty (void) const;
1294 
1298  uint8_t PrefixFront (void) const;
1299 
1303  uint8_t PrefixBack (void) const;
1304 
1309  void PrefixPushFront (uint8_t prefix);
1310 
1314  void PrefixPopFront (void);
1315 
1320  void PrefixPushBack (uint8_t prefix);
1321 
1325  void PrefixPopBack (void);
1326 
1334  PrefixIterator PrefixInsert (PrefixIterator position, const uint8_t value);
1335 
1342 
1353 
1357  void PrefixClear (void);
1358 
1359  /* Manipulating the TLV block */
1360 
1364  TlvIterator TlvBegin (void);
1365 
1369  ConstTlvIterator TlvBegin (void) const;
1370 
1374  TlvIterator TlvEnd (void);
1375 
1379  ConstTlvIterator TlvEnd (void) const;
1380 
1384  int TlvSize (void) const;
1385 
1389  bool TlvEmpty (void) const;
1390 
1395 
1399  const Ptr<PbbAddressTlv> TlvFront (void) const;
1400 
1404  Ptr<PbbAddressTlv> TlvBack (void);
1405 
1409  const Ptr<PbbAddressTlv> TlvBack (void) const;
1410 
1416 
1420  void TlvPopFront (void);
1421 
1427 
1431  void TlvPopBack (void);
1432 
1440  TlvIterator TlvInsert (TlvIterator position, const Ptr<PbbTlv> value);
1441 
1447  TlvIterator TlvErase (TlvIterator position);
1448 
1459 
1463  void TlvClear (void);
1464 
1468  uint32_t GetSerializedSize (void) const;
1469 
1477  void Serialize (Buffer::Iterator &start) const;
1478 
1487 
1492  void Print (std::ostream &os) const;
1493 
1503  void Print (std::ostream &os, int level) const;
1504 
1510  bool operator== (const PbbAddressBlock &other) const;
1511 
1517  bool operator!= (const PbbAddressBlock &other) const;
1518 
1519 protected:
1524  virtual uint8_t GetAddressLength (void) const = 0;
1525  virtual void SerializeAddress (uint8_t *buffer, ConstAddressIterator iter) const = 0;
1526  virtual Address DeserializeAddress (uint8_t *buffer) const = 0;
1527  virtual void PrintAddress (std::ostream &os, ConstAddressIterator iter) const = 0;
1528 
1529 private:
1530  uint8_t GetPrefixFlags (void) const;
1531  void GetHeadTail (uint8_t *head, uint8_t &headlen,
1532  uint8_t *tail, uint8_t &taillen) const;
1533  bool HasZeroTail (const uint8_t *tail, uint8_t taillen) const;
1534 
1535  std::list<Address> m_addressList;
1536  std::list<uint8_t> m_prefixList;
1538 };
1539 
1546 {
1547 public:
1549  virtual ~PbbAddressBlockIpv4 ();
1550 
1551 protected:
1556  virtual uint8_t GetAddressLength (void) const;
1557  virtual void SerializeAddress (uint8_t *buffer, ConstAddressIterator iter) const;
1558  virtual Address DeserializeAddress (uint8_t *buffer) const;
1559  virtual void PrintAddress (std::ostream &os, ConstAddressIterator iter) const;
1560 };
1561 
1568 {
1569 public:
1571  virtual ~PbbAddressBlockIpv6 ();
1572 
1573 protected:
1578  virtual uint8_t GetAddressLength (void) const;
1579  virtual void SerializeAddress (uint8_t *buffer, ConstAddressIterator iter) const;
1580  virtual Address DeserializeAddress (uint8_t *buffer) const;
1581  virtual void PrintAddress (std::ostream &os, ConstAddressIterator iter) const;
1582 };
1583 
1587 class PbbTlv : public SimpleRefCount<PbbTlv>
1588 {
1589 public:
1590  PbbTlv (void);
1591  virtual ~PbbTlv (void);
1592 
1597  void SetType (uint8_t type);
1598 
1602  uint8_t GetType (void) const;
1603 
1611  void SetTypeExt (uint8_t type);
1612 
1619  uint8_t GetTypeExt (void) const;
1620 
1628  bool HasTypeExt (void) const;
1629 
1637  void SetValue (Buffer start);
1638 
1647  void SetValue (const uint8_t * buffer, uint32_t size);
1648 
1655  Buffer GetValue (void) const;
1656 
1664  bool HasValue (void) const;
1665 
1669  uint32_t GetSerializedSize (void) const;
1670 
1678  void Serialize (Buffer::Iterator &start) const;
1679 
1687  void Deserialize (Buffer::Iterator &start);
1688 
1693  void Print (std::ostream &os) const;
1694 
1703  void Print (std::ostream &os, int level) const;
1704 
1710  bool operator== (const PbbTlv &other) const;
1711 
1717  bool operator!= (const PbbTlv &other) const;
1718 
1719 protected:
1720  void SetIndexStart (uint8_t index);
1721  uint8_t GetIndexStart (void) const;
1722  bool HasIndexStart (void) const;
1723 
1724  void SetIndexStop (uint8_t index);
1725  uint8_t GetIndexStop (void) const;
1726  bool HasIndexStop (void) const;
1727 
1728  void SetMultivalue (bool isMultivalue);
1729  bool IsMultivalue (void) const;
1730 
1731 private:
1732  uint8_t m_type;
1733 
1735  uint8_t m_typeExt;
1736 
1738  uint8_t m_indexStart;
1739 
1741  uint8_t m_indexStop;
1742 
1746 };
1747 
1751 class PbbAddressTlv : public PbbTlv
1752 {
1753 public:
1759  void SetIndexStart (uint8_t index);
1760 
1768  uint8_t GetIndexStart (void) const;
1769 
1777  bool HasIndexStart (void) const;
1778 
1784  void SetIndexStop (uint8_t index);
1785 
1793  uint8_t GetIndexStop (void) const;
1794 
1802  bool HasIndexStop (void) const;
1803 
1812  void SetMultivalue (bool isMultivalue);
1813 
1818  bool IsMultivalue (void) const;
1819 };
1820 
1821 } /* namespace ns3 */
1822 
1823 #endif /* PACKETBB_H */
bool m_hasOriginatorAddress
Definition: packetbb.h:1076
PrefixIterator PrefixEnd(void)
Definition: packetbb.cc:1973
AddressBlockIterator AddressBlockEnd()
Definition: packetbb.cc:1293
bool m_hasHopCount
Definition: packetbb.h:1082
void Print(std::ostream &os) const
Pretty-prints the contents of this message.
Definition: packetbb.cc:1576
void TlvPushBack(Ptr< PbbTlv > tlv)
Appends a packet TLV to the back of this packet.
Definition: packetbb.cc:677
void AddressBlockPushBack(Ptr< PbbAddressBlock > block)
Appends an address block to the front of this message.
Definition: packetbb.cc:1363
TlvIterator TlvBegin(void)
Definition: packetbb.cc:593
std::list< Ptr< PbbTlv > >::iterator Iterator
Definition: packetbb.h:58
bool m_hasIndexStart
Definition: packetbb.h:1737
smart pointer class similar to boost::intrusive_ptr
Definition: ptr.h:59
void MessagePushFront(Ptr< PbbMessage > message)
Prepends a message to the front of this packet.
Definition: packetbb.cc:784
Ptr< PbbMessage > MessageBack(void)
Definition: packetbb.cc:770
A packet or message TLV.
Definition: packetbb.h:1587
std::list< Ptr< PbbMessage > >::const_iterator ConstMessageIterator
This is a PbbMessageIterator for PbbPacket.
Definition: packetbb.h:391
void PushFront(Ptr< PbbTlv > tlv)
Prepends a TLV to the front of this block.
Definition: packetbb.cc:133
uint16_t GetSequenceNumber(void) const
Definition: packetbb.cc:1141
int Size(void) const
Definition: packetbb.cc:105
Main PacketBB Packet object.
Definition: packetbb.h:385
virtual Address DeserializeOriginatorAddress(Buffer::Iterator &start) const
Definition: packetbb.cc:1754
bool HasIndexStart(void) const
Definition: packetbb.cc:2718
void MessagePushBack(Ptr< PbbMessage > message)
Appends a message to the back of this packet.
Definition: packetbb.cc:798
void PopFront(void)
Removes an AddressTLV from the front of this block.
Definition: packetbb.cc:381
uint32_t GetSerializedSize(void) const
Definition: packetbb.cc:2794
virtual ~PbbMessageIpv6()
Definition: packetbb.cc:1787
bool IsMultivalue(void) const
Definition: packetbb.cc:2755
virtual ~PbbAddressBlockIpv6()
Definition: packetbb.cc:2613
Concrete IPv4 specific PbbAddressBlock.
Definition: packetbb.h:1545
void PushFront(Ptr< PbbAddressTlv > tlv)
Prepends an Address TLV to the front of this block.
Definition: packetbb.cc:374
void SetSequenceNumber(uint16_t number)
Sets the sequence number of this packet.
Definition: packetbb.cc:568
bool HasSequenceNumber(void) const
Tests whether or not this message has a sequence number.
Definition: packetbb.cc:1149
void SetIndexStop(uint8_t index)
Definition: packetbb.cc:2725
int TlvSize(void) const
Definition: packetbb.cc:2101
virtual Address DeserializeOriginatorAddress(Buffer::Iterator &start) const =0
automatically resized byte buffer
Definition: buffer.h:92
int PrefixSize(void) const
Definition: packetbb.cc:1987
void AddressBlockPopBack(void)
Removes an address block from the back of this message.
Definition: packetbb.cc:1370
void SetIndexStop(uint8_t index)
Sets the index of the last address in the associated address block that this address TLV applies to...
Definition: packetbb.cc:3053
TlvIterator TlvEnd()
Definition: packetbb.cc:1172
bool TlvEmpty(void) const
Definition: packetbb.cc:628
void TlvPushFront(Ptr< PbbTlv > tlv)
Prepends a packet TLV to the front of this packet.
Definition: packetbb.cc:663
virtual void SerializeOriginatorAddress(Buffer::Iterator &start) const
Definition: packetbb.cc:1744
PbbAddressLength
Used in Messages to determine whether it contains IPv4 or IPv6 addresses.
Definition: packetbb.h:45
std::list< Address > m_addressList
Definition: packetbb.h:1535
Ptr< PbbAddressBlock > AddressBlockBack(void)
Definition: packetbb.cc:1335
void PrefixPopBack(void)
Removes a prefix from the back of this block.
Definition: packetbb.cc:2036
TlvIterator TlvInsert(TlvIterator position, const Ptr< PbbTlv > value)
Inserts an address TLV at the specified position in this block.
bool HasTypeExt(void) const
Tests whether or not this TLV has a type extension.
Definition: packetbb.cc:2695
AddressIterator AddressEnd(void)
Definition: packetbb.cc:1865
void SetMultivalue(bool isMultivalue)
Sets whether or not this address TLV is "multivalue".
Definition: packetbb.cc:3074
A message within a PbbPacket packet.
Definition: packetbb.h:684
void MessageClear(void)
Removes all messages from this packet.
Definition: packetbb.cc:827
void PushBack(Ptr< PbbTlv > tlv)
Appends a TLV to the back of this block.
Definition: packetbb.cc:147
TlvIterator TlvBegin()
Definition: packetbb.cc:1158
std::list< Ptr< PbbTlv > >::const_iterator ConstIterator
this is an iterator
Definition: packetbb.h:59
Ptr< PbbAddressTlv > Back(void) const
Definition: packetbb.cc:367
bool operator!=(const PbbAddressBlock &other) const
Inequality operator for PbbAddressBlock.
Definition: packetbb.cc:2460
void Print(std::ostream &os) const
Pretty-prints the contents of this block.
Definition: packetbb.cc:488
uint8_t m_type
Definition: packetbb.h:1732
bool HasIndexStart(void) const
Tests whether or not this address TLV has a start index.
Definition: packetbb.cc:3046
bool HasIndexStop(void) const
Tests whether or not this address TLV has a stop index.
Definition: packetbb.cc:3067
std::list< Ptr< PbbAddressBlock > >::const_iterator ConstAddressBlockIterator
This is a PbbAddressBlock iterator for PbbMessage.
Definition: packetbb.h:690
uint8_t GetIndexStart(void) const
Definition: packetbb.cc:2710
void SetMultivalue(bool isMultivalue)
Definition: packetbb.cc:2748
void MessagePopFront(void)
Removes a message from the front of this packet.
Definition: packetbb.cc:791
void SetSequenceNumber(uint16_t seqnum)
Sets the sequence number of this message.
Definition: packetbb.cc:1133
void TlvPopBack(void)
Removes a message TLV from the back of this message.
Definition: packetbb.cc:1249
uint8_t GetIndexStart(void) const
Definition: packetbb.cc:3039
std::list< Ptr< PbbMessage > >::iterator MessageIterator
This is a const PbbTlv iterator for PbbPacket.
Definition: packetbb.h:390
Ptr< PbbAddressTlv > TlvFront(void)
Definition: packetbb.cc:2115
uint8_t m_type
Definition: packetbb.h:1073
std::list< uint8_t > m_prefixList
Definition: packetbb.h:1536
std::list< Ptr< PbbAddressBlock > >::iterator AddressBlockIterator
This is a const PbbTlv iterator for PbbMessage.
Definition: packetbb.h:689
bool IsMultivalue(void) const
Tests whether or not this address TLV is "multivalue".
Definition: packetbb.cc:3081
Ptr< PbbTlv > TlvBack(void)
Definition: packetbb.cc:649
iterator in a Buffer instance
Definition: buffer.h:98
a polymophic address class
Definition: address.h:86
PbbAddressTlvBlock(void)
This is a const PbbAddressTlv iterator for PbbAddressTlvBlock.
Definition: packetbb.cc:305
virtual void PrintAddress(std::ostream &os, ConstAddressIterator iter) const
Definition: packetbb.cc:2640
bool m_hasSequenceNumber
Definition: packetbb.h:1085
MessageIterator MessageEnd(void)
Definition: packetbb.cc:728
uint16_t m_sequenceNumber
Definition: packetbb.h:1086
AddressBlockIterator AddressBlockBegin()
Definition: packetbb.cc:1279
uint8_t m_version
Definition: packetbb.h:671
virtual ~PbbTlv(void)
Definition: packetbb.cc:2658
virtual Address DeserializeAddress(uint8_t *buffer) const =0
void SetType(uint8_t type)
Sets the type of this TLV.
Definition: packetbb.cc:2665
void PopBack(void)
Removes an Address TLV from the back of this block.
Definition: packetbb.cc:395
bool TlvEmpty(void) const
Definition: packetbb.cc:2108
bool AddressEmpty(void) const
Definition: packetbb.cc:1886
void AddressBlockClear(void)
Removes all address blocks from this message.
Definition: packetbb.cc:1392
Address GetOriginatorAddress(void) const
Definition: packetbb.cc:1072
uint8_t GetTypeExt(void) const
Definition: packetbb.cc:2687
virtual PbbAddressLength GetAddressLength(void) const
Returns address length (IPV4 3 or IPV6 15)
Definition: packetbb.cc:1793
Concrete IPv4 specific PbbMessage.
Definition: packetbb.h:1094
void TlvPushFront(Ptr< PbbAddressTlv > address)
Prepends an address TLV to the front of this message.
Definition: packetbb.cc:2143
std::list< Address >::const_iterator ConstAddressIterator
this is an address iterator for PbbAddressBlock
Definition: packetbb.h:1155
Iterator Erase(Iterator position)
Removes the Address TLV at the specified position.
Definition: packetbb.cc:409
virtual void SerializeAddress(uint8_t *buffer, ConstAddressIterator iter) const
Definition: packetbb.cc:2586
bool operator!=(const PbbTlv &other) const
Inequality operator for PbbTlv.
Definition: packetbb.cc:3024
void AddressPopFront(void)
Removes an address from the front of this block.
Definition: packetbb.cc:1914
TlvIterator TlvBegin(void)
Definition: packetbb.cc:2073
PbbTlvBlock(void)
this is a const iterator
Definition: packetbb.cc:64
std::list< Address >::iterator AddressIterator
Definition: packetbb.h:1154
TlvIterator Erase(TlvIterator position)
Removes the packet TLV at the specified position.
Definition: packetbb.cc:691
bool operator==(const PbbMessage &other) const
Equality operator for PbbMessage.
Definition: packetbb.cc:1631
virtual void PrintAddress(std::ostream &os, ConstAddressIterator iter) const
Definition: packetbb.cc:2600
void SetIndexStart(uint8_t index)
Sets the index of the first address in the associated address block that this address TLV applies to...
Definition: packetbb.cc:3032
bool operator!=(const PbbPacket &other) const
Inequality operator for PbbPacket.
Definition: packetbb.cc:1018
Ptr< PbbAddressTlv > TlvBack(void)
Definition: packetbb.cc:2129
uint8_t GetVersion(void) const
Definition: packetbb.cc:561
virtual uint8_t GetAddressLength(void) const
Returns address length.
Definition: packetbb.cc:2579
bool m_hasHopLimit
Definition: packetbb.h:1079
bool m_isMultivalue
Definition: packetbb.h:1743
void PushBack(Ptr< PbbAddressTlv > tlv)
Appends an Address TLV to the back of this block.
Definition: packetbb.cc:388
void SetType(uint8_t type)
Sets the type for this message.
Definition: packetbb.cc:1043
std::list< Ptr< PbbTlv > >::iterator TlvIterator
Definition: packetbb.h:388
void Serialize(Buffer::Iterator &start) const
Serializes this message into the specified buffer.
Definition: packetbb.cc:1444
void TlvPopBack(void)
Removes an address TLV from the back of this message.
Definition: packetbb.cc:2164
uint8_t m_hopCount
Definition: packetbb.h:1083
virtual Ptr< PbbAddressBlock > AddressBlockDeserialize(Buffer::Iterator &start) const
Definition: packetbb.cc:1828
uint16_t GetSequenceNumber(void) const
Definition: packetbb.cc:576
int MessageSize(void) const
Definition: packetbb.cc:742
void AddressPushBack(Address address)
Appends an address to the back of this block.
Definition: packetbb.cc:1921
Address AddressFront(void) const
Definition: packetbb.cc:1893
~PbbPacket(void)
Definition: packetbb.cc:554
void TlvClear(void)
Removes all message TLVs from this block.
Definition: packetbb.cc:1270
Ptr< PbbAddressBlock > AddressBlockFront(void)
Definition: packetbb.cc:1321
bool TlvEmpty(void) const
Definition: packetbb.cc:1193
TlvIterator TlvEnd(void)
Definition: packetbb.cc:2087
uint8_t PrefixBack(void) const
Definition: packetbb.cc:2008
PbbAddressLength m_addrSize
Definition: packetbb.h:1074
Ptr< PbbTlv > Front(void) const
Definition: packetbb.cc:119
bool operator==(const PbbTlvBlock &other) const
Equality operator for PbbTlvBlock.
Definition: packetbb.cc:277
std::list< uint8_t >::const_iterator ConstPrefixIterator
this is a prefix iterator for PbbAddressBlock
Definition: packetbb.h:1158
bool HasHopCount(void) const
Tests whether or not this message has a hop count.
Definition: packetbb.cc:1126
bool m_hasValue
Definition: packetbb.h:1744
virtual void PrintAddress(std::ostream &os, ConstAddressIterator iter) const =0
uint8_t GetType(void) const
Definition: packetbb.cc:2672
bool Empty(void) const
Definition: packetbb.cc:353
uint8_t m_typeExt
Definition: packetbb.h:1735
Ptr< PbbTlv > Back(void) const
Definition: packetbb.cc:126
void Deserialize(Buffer::Iterator &start)
Deserializes a block from the specified buffer.
Definition: packetbb.cc:470
std::list< Ptr< PbbTlv > >::iterator TlvIterator
Definition: packetbb.h:687
uint32_t GetSerializedSize(void) const
Definition: packetbb.cc:193
int AddressBlockSize(void) const
Definition: packetbb.cc:1307
void Deserialize(Buffer::Iterator &start)
Deserializes a block from the specified buffer.
Definition: packetbb.cc:229
virtual Ptr< PbbAddressBlock > AddressBlockDeserialize(Buffer::Iterator &start) const =0
virtual uint32_t GetSerializedSize(void) const
Definition: packetbb.cc:855
virtual PbbAddressLength GetAddressLength(void) const
Returns address length (IPV4 3 or IPV6 15)
Definition: packetbb.cc:1737
~PbbTlvBlock(void)
Definition: packetbb.cc:70
void Deserialize(Buffer::Iterator &start)
Deserializes a message from the specified buffer.
Definition: packetbb.cc:1534
void TlvPopFront(void)
Removes a message TLV from the front of this message.
Definition: packetbb.cc:1235
bool HasValue(void) const
Tests whether or not this TLV has a value.
Definition: packetbb.cc:2787
virtual void SerializeOriginatorAddress(Buffer::Iterator &start) const
Definition: packetbb.cc:1800
virtual void SerializeAddress(uint8_t *buffer, ConstAddressIterator iter) const =0
virtual ~PbbAddressBlock()
Definition: packetbb.cc:1843
void Deserialize(Buffer::Iterator &start)
Deserializes a TLV from the specified buffer.
Definition: packetbb.cc:2889
void TlvPopBack(void)
Removes a packet TLV from the back of this block.
Definition: packetbb.cc:684
void SetHopLimit(uint8_t hoplimit)
Sets the maximum number of hops this message should travel.
Definition: packetbb.cc:1087
bool HasOriginatorAddress(void) const
Tests whether or not this message has an originator address.
Definition: packetbb.cc:1080
Concrete IPv6 specific PbbAddressBlock.
Definition: packetbb.h:1567
uint8_t PrefixFront(void) const
Definition: packetbb.cc:2001
void PrefixPushFront(uint8_t prefix)
Prepends a prefix to the front of this block.
Definition: packetbb.cc:2015
std::list< Ptr< PbbAddressTlv > >::iterator Iterator
Definition: packetbb.h:220
Buffer m_value
Definition: packetbb.h:1745
PbbAddressTlvBlock::Iterator TlvIterator
this is a const prefix iterator for PbbAddressBlock
Definition: packetbb.h:1160
bool HasHopLimit(void) const
Tests whether or not this message has a hop limit.
Definition: packetbb.cc:1103
AddressBlockIterator AddressBlockErase(AddressBlockIterator position)
Removes the address block at the specified position.
Definition: packetbb.cc:1377
void Serialize(Buffer::Iterator &start) const
Serializes this address block into the specified buffer.
Definition: packetbb.cc:2240
void Print(std::ostream &os) const
Pretty-prints the contents of this TLV.
Definition: packetbb.cc:2934
int Size(void) const
Definition: packetbb.cc:346
virtual void PrintOriginatorAddress(std::ostream &os) const
Definition: packetbb.cc:1765
void Print(std::ostream &os) const
Pretty-prints the contents of this address block.
Definition: packetbb.cc:2378
int TlvSize(void) const
Definition: packetbb.cc:621
PbbAddressTlvBlock m_addressTlvList
Definition: packetbb.h:1537
virtual ~PbbMessageIpv4()
Definition: packetbb.cc:1731
void TlvClear(void)
Removes all address TLVs from this block.
Definition: packetbb.cc:2186
bool operator==(const PbbPacket &other) const
Equality operator for PbbPacket.
Definition: packetbb.cc:976
uint32_t GetSerializedSize(void) const
Definition: packetbb.cc:434
void PrefixPushBack(uint8_t prefix)
Appends a prefix to the back of this block.
Definition: packetbb.cc:2029
bool m_hasIndexStop
Definition: packetbb.h:1740
An Address TLV.
Definition: packetbb.h:1751
PbbMessage()
This is a const PbbAddressBlock iterator for PbbMessage.
Definition: packetbb.cc:1025
std::list< Ptr< PbbAddressTlv > > m_tlvList
Definition: packetbb.h:374
PbbAddressBlock()
this is a const tlvblock iterator for PbbAddressBlock
Definition: packetbb.cc:1838
void AddressBlockPopFront(void)
Removes an address block from the front of this message.
Definition: packetbb.cc:1356
bool operator!=(const PbbTlvBlock &other) const
Inequality operator for PbbTlvBlock.
Definition: packetbb.cc:298
Address m_originatorAddress
Definition: packetbb.h:1077
A block of packet or message TLVs (PbbTlv).
Definition: packetbb.h:55
uint8_t m_indexStart
Definition: packetbb.h:1738
uint8_t GetType(void) const
Definition: packetbb.cc:1050
bool MessageEmpty(void) const
Definition: packetbb.cc:749
uint8_t GetIndexStop(void) const
Definition: packetbb.cc:3060
std::list< Ptr< PbbMessage > > m_messageList
Definition: packetbb.h:669
void Print(std::ostream &os) const
Pretty-prints the contents of this block.
Definition: packetbb.cc:247
void SetIndexStart(uint8_t index)
Definition: packetbb.cc:2702
PbbTlv(void)
Definition: packetbb.cc:2648
void TlvPushBack(Ptr< PbbAddressTlv > address)
Appends an address TLV to the back of this message.
Definition: packetbb.cc:2157
std::list< Ptr< PbbTlv > > m_tlvList
Definition: packetbb.h:209
PbbTlvBlock m_tlvList
Definition: packetbb.h:668
int AddressSize(void) const
Definition: packetbb.cc:1879
std::list< Ptr< PbbAddressBlock > > m_addressBlockList
Definition: packetbb.h:1071
bool Empty(void) const
Definition: packetbb.cc:112
virtual ~PbbMessage()
Definition: packetbb.cc:1036
bool m_hasTypeExt
Definition: packetbb.h:1734
Iterator End(void)
Definition: packetbb.cc:91
bool operator!=(const PbbAddressTlvBlock &other) const
Inequality operator for PbbAddressTlvBlock.
Definition: packetbb.cc:539
A block of Address TLVs (PbbAddressTlv).
Definition: packetbb.h:217
uint8_t GetHopCount(void) const
Definition: packetbb.cc:1118
bool HasSequenceNumber(void) const
Tests whether or not this packet has a sequence number.
Definition: packetbb.cc:584
void PopBack(void)
Removes a TLV from the back of this block.
Definition: packetbb.cc:154
void TlvPopFront(void)
Removes a packet TLV from the front of this packet.
Definition: packetbb.cc:670
bool operator==(const PbbTlv &other) const
Equality operator for PbbTlv.
Definition: packetbb.cc:2979
uint8_t GetHopLimit(void) const
Definition: packetbb.cc:1095
uint16_t m_seqnum
Definition: packetbb.h:674
PbbAddressTlvBlock::ConstIterator ConstTlvIterator
this is a tlvblock iterator for PbbAddressBlock
Definition: packetbb.h:1161
virtual ~PbbAddressBlockIpv4()
Definition: packetbb.cc:2573
virtual void PrintOriginatorAddress(std::ostream &os) const =0
PrefixIterator PrefixInsert(PrefixIterator position, const uint8_t value)
Inserts a prefix at the specified position in this block.
Definition: packetbb.cc:2043
Ptr< PbbTlv > TlvBack(void)
Definition: packetbb.cc:1214
TlvIterator TlvErase(TlvIterator position)
Removes the message TLV at the specified position.
Definition: packetbb.cc:1256
uint32_t GetSerializedSize(void) const
Definition: packetbb.cc:1405
void AddressBlockPushFront(Ptr< PbbAddressBlock > block)
Prepends an address block to the front of this message.
Definition: packetbb.cc:1349
void MessagePopBack(void)
Removes a message from the back of this packet.
Definition: packetbb.cc:805
Ptr< PbbTlv > TlvFront(void)
Definition: packetbb.cc:1200
virtual void SerializeAddress(uint8_t *buffer, ConstAddressIterator iter) const
Definition: packetbb.cc:2626
Iterator Insert(Iterator position, const Ptr< PbbAddressTlv > tlv)
Inserts an Address TLV at the specified position in this block.
Definition: packetbb.cc:402
TlvIterator TlvEnd(void)
Definition: packetbb.cc:607
virtual PbbAddressLength GetAddressLength(void) const =0
Returns address length (IPV4 3 or IPV6 15)
Definition: packetbb.cc:1057
void SetTypeExt(uint8_t type)
Sets the type extension of this TLV.
Definition: packetbb.cc:2679
AddressIterator AddressBegin(void)
Definition: packetbb.cc:1851
int TlvSize(void) const
Definition: packetbb.cc:1186
void AddressClear(void)
Removes all addresses from this block.
Definition: packetbb.cc:1950
virtual void SerializeOriginatorAddress(Buffer::Iterator &start) const =0
void SetHopCount(uint8_t hopcount)
Sets the current number of hops this message has traveled.
Definition: packetbb.cc:1110
virtual uint8_t GetAddressLength(void) const =0
Returns address length.
Ptr< PbbTlv > TlvFront(void)
Definition: packetbb.cc:635
bool operator!=(const PbbMessage &other) const
Inequality operator for PbbMessage.
Definition: packetbb.cc:1719
void PrefixPopFront(void)
Removes a prefix from the front of this block.
Definition: packetbb.cc:2022
Address AddressBack(void) const
Definition: packetbb.cc:1900
PrefixIterator PrefixErase(PrefixIterator position)
Removes the prefix at the specified position.
Definition: packetbb.cc:2050
void Serialize(Buffer::Iterator &start) const
Serializes this block into the specified buffer.
Definition: packetbb.cc:206
Iterator Begin(void)
Definition: packetbb.cc:77
void SetOriginatorAddress(Address address)
Sets the address for the node that created this packet.
Definition: packetbb.cc:1064
std::list< Ptr< PbbAddressTlv > >::const_iterator ConstIterator
This is a PbbAddressTlv iterator for PbbAddressTlvBlock.
Definition: packetbb.h:221
uint8_t m_hopLimit
Definition: packetbb.h:1080
uint32_t GetSerializedSize(void) const
Definition: packetbb.cc:2192
void Deserialize(Buffer::Iterator &start)
Deserializes an address block from the specified buffer.
Definition: packetbb.cc:2324
Iterator Insert(Iterator position, const Ptr< PbbTlv > tlv)
Inserts a TLV at the specified position in this block.
Definition: packetbb.cc:161
void TlvPopFront(void)
Removes an address TLV from the front of this message.
Definition: packetbb.cc:2150
virtual Address DeserializeOriginatorAddress(Buffer::Iterator &start) const
Definition: packetbb.cc:1810
uint8_t GetPrefixFlags(void) const
Definition: packetbb.cc:2466
bool HasZeroTail(const uint8_t *tail, uint8_t taillen) const
Definition: packetbb.cc:2552
Buffer GetValue(void) const
Definition: packetbb.cc:2779
uint8_t GetIndexStop(void) const
Definition: packetbb.cc:2733
tuple address
Definition: first.py:37
void Clear(void)
Removes all Address TLVs from this block.
Definition: packetbb.cc:423
void SetValue(Buffer start)
Sets the value of this message to the specified buffer.
Definition: packetbb.cc:2762
Iterator Begin(void)
Definition: packetbb.cc:318
PrefixIterator PrefixBegin(void)
Definition: packetbb.cc:1959
virtual void Print(std::ostream &os) const
Pretty-prints the contents of this block.
Definition: packetbb.cc:951
bool m_hasseqnum
Definition: packetbb.h:673
Ptr< PbbMessage > MessageFront(void)
Definition: packetbb.cc:756
virtual Ptr< PbbAddressBlock > AddressBlockDeserialize(Buffer::Iterator &start) const
Definition: packetbb.cc:1772
void TlvPushFront(Ptr< PbbTlv > tlv)
Prepends a message TLV to the front of this message.
Definition: packetbb.cc:1228
PbbPacket(void)
This is a const PbbMessageIterator for PbbPacket.
Definition: packetbb.cc:547
MessageIterator MessageBegin(void)
Definition: packetbb.cc:714
bool HasIndexStop(void) const
Definition: packetbb.cc:2741
void Clear(void)
Removes all TLVs from this block.
Definition: packetbb.cc:182
Iterator End(void)
Definition: packetbb.cc:332
std::list< uint8_t >::iterator PrefixIterator
this is an const address iterator for PbbAddressBlock
Definition: packetbb.h:1157
virtual Address DeserializeAddress(uint8_t *buffer) const
Definition: packetbb.cc:2593
AddressIterator AddressErase(AddressIterator position)
Removes the address at the specified position.
Definition: packetbb.cc:1935
void AddressPopBack(void)
Removes an address from the back of this block.
Definition: packetbb.cc:1928
PbbTlvBlock m_tlvList
Definition: packetbb.h:1070
Concrete IPv6 specific PbbMessage class.
Definition: packetbb.h:1122
uint8_t m_indexStop
Definition: packetbb.h:1741
A template-based reference counting class.
void Serialize(Buffer::Iterator &start) const
Serializes this block into the specified buffer.
Definition: packetbb.cc:447
a unique identifier for an interface.
Definition: type-id.h:49
virtual void Serialize(Buffer::Iterator start) const
Serializes this packet into the specified buffer.
Definition: packetbb.cc:882
std::list< Ptr< PbbTlv > >::const_iterator ConstTlvIterator
This is a PbbTlv iterator for PbbPacket.
Definition: packetbb.h:389
static Ptr< PbbMessage > DeserializeMessage(Buffer::Iterator &start)
Deserializes a message, returning the correct object depending on whether it is an IPv4 message or an...
Definition: packetbb.cc:1501
bool AddressBlockEmpty(void) const
Definition: packetbb.cc:1314
void GetHeadTail(uint8_t *head, uint8_t &headlen, uint8_t *tail, uint8_t &taillen) const
Definition: packetbb.cc:2487
An Address Block and its associated Address TLV Blocks.
Definition: packetbb.h:1151
virtual void PrintOriginatorAddress(std::ostream &os) const
Definition: packetbb.cc:1821
bool operator==(const PbbAddressTlvBlock &other) const
Equality operator for PbbAddressTlvBlock.
Definition: packetbb.cc:518
void Serialize(Buffer::Iterator &start) const
Serializes this TLV into the specified buffer.
Definition: packetbb.cc:2832
void TlvPushBack(Ptr< PbbTlv > tlv)
Appends a message TLV to the back of this message.
Definition: packetbb.cc:1242
virtual TypeId GetInstanceTypeId(void) const
Definition: packetbb.cc:849
bool operator==(const PbbAddressBlock &other) const
Equality operator for PbbAddressBlock.
Definition: packetbb.cc:2417
std::list< Ptr< PbbTlv > >::const_iterator ConstTlvIterator
This is a PbbTlv iterator for PbbMessage.
Definition: packetbb.h:688
AddressIterator AddressInsert(AddressIterator position, const Address value)
Inserts an address at the specified position in this block.
virtual uint8_t GetAddressLength(void) const
Returns address length.
Definition: packetbb.cc:2619
static TypeId GetTypeId(void)
Definition: packetbb.cc:839
void AddressPushFront(Address address)
Prepends an address to the front of this block.
Definition: packetbb.cc:1907
void PrefixClear(void)
Removes all prefixes from this block.
Definition: packetbb.cc:2064
bool PrefixEmpty(void) const
Definition: packetbb.cc:1994
Ptr< PbbAddressTlv > Front(void) const
Definition: packetbb.cc:360
virtual uint32_t Deserialize(Buffer::Iterator start)
Deserializes a packet from the specified buffer.
Definition: packetbb.cc:917
void TlvClear(void)
Removes all packet TLVs from this packet.
Definition: packetbb.cc:705
virtual Address DeserializeAddress(uint8_t *buffer) const
Definition: packetbb.cc:2633
TlvIterator TlvErase(TlvIterator position)
Removes the address TLV at the specified position.
Definition: packetbb.cc:2171
Iterator Erase(Iterator position)
Removes the TLV at the specified position.
Definition: packetbb.cc:168
void PopFront(void)
Removes a TLV from the front of this block.
Definition: packetbb.cc:140