31 #include "ns3/address.h"
32 #include "ns3/header.h"
33 #include "ns3/buffer.h"
34 #include "ns3/simple-ref-count.h"
40 class PbbAddressBlock;
58 typedef std::list< Ptr<PbbTlv> >::iterator
Iterator;
87 int Size (
void)
const;
92 bool Empty (
void)
const;
183 void Print (std::ostream &os)
const;
193 void Print (std::ostream &os,
int level)
const;
210 typedef std::list< Ptr<PbbAddressTlv> >::iterator
Iterator;
239 int Size (
void)
const;
244 bool Empty (
void)
const;
337 void Print (std::ostream &os)
const;
347 void Print (std::ostream &os,
int level)
const;
628 virtual void Print (std::ostream &os)
const;
994 void Print (std::ostream &os)
const;
1005 void Print (std::ostream &os,
int level)
const;
1430 void Print (std::ostream &os)
const;
1441 void Print (std::ostream &os,
int level)
const;
1455 void GetHeadTail (uint8_t *head, uint8_t &headlen,
1456 uint8_t *tail, uint8_t &taillen)
const;
1457 bool HasZeroTail (
const uint8_t *tail, uint8_t taillen)
const;
1565 void SetValue (
const uint8_t * buffer, uint32_t size);
1611 void Print (std::ostream &os)
const;
1621 void Print (std::ostream &os,
int level)
const;
bool m_hasOriginatorAddress
PrefixIterator PrefixEnd(void)
AddressBlockIterator AddressBlockEnd()
void Print(std::ostream &os) const
Pretty-prints the contents of this message.
void TlvPushBack(Ptr< PbbTlv > tlv)
Appends a packet TLV to the back of this packet.
void AddressBlockPushBack(Ptr< PbbAddressBlock > block)
Appends an address block to the front of this message.
TlvIterator TlvBegin(void)
std::list< Ptr< PbbTlv > >::iterator Iterator
smart pointer class similar to boost::intrusive_ptr
void MessagePushFront(Ptr< PbbMessage > message)
Prepends a message to the front of this packet.
Ptr< PbbMessage > MessageBack(void)
std::list< Ptr< PbbMessage > >::const_iterator ConstMessageIterator
void PushFront(Ptr< PbbTlv > tlv)
Prepends a TLV to the front of this block.
uint16_t GetSequenceNumber(void) const
Main PacketBB Packet object.
virtual Address DeserializeOriginatorAddress(Buffer::Iterator &start) const
bool HasIndexStart(void) const
void MessagePushBack(Ptr< PbbMessage > message)
Appends a message to the back of this packet.
void PopFront(void)
Removes an AddressTLV from the front of this block.
uint32_t GetSerializedSize(void) const
virtual ~PbbMessageIpv6()
bool IsMultivalue(void) const
virtual ~PbbAddressBlockIpv6()
Concrete IPv4 specific PbbAddressBlock.
void PushFront(Ptr< PbbAddressTlv > tlv)
Prepends an Address TLV to the front of this block.
void SetSequenceNumber(uint16_t number)
Sets the sequence number of this packet.
bool HasSequenceNumber(void) const
Tests whether or not this message has a sequence number.
void SetIndexStop(uint8_t index)
virtual Address DeserializeOriginatorAddress(Buffer::Iterator &start) const =0
automatically resized byte buffer
int PrefixSize(void) const
~PbbAddressTlvBlock(void)
void AddressBlockPopBack(void)
Removes an address block from the back of this message.
void SetIndexStop(uint8_t index)
Sets the index of the last address in the associated address block that this address TLV applies to...
bool TlvEmpty(void) const
void TlvPushFront(Ptr< PbbTlv > tlv)
Prepends a packet TLV to the front of this packet.
virtual void SerializeOriginatorAddress(Buffer::Iterator &start) const
std::list< Address > m_addressList
Ptr< PbbAddressBlock > AddressBlockBack(void)
void PrefixPopBack(void)
Removes a prefix from the back of this block.
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.
AddressIterator AddressEnd(void)
void SetMultivalue(bool isMultivalue)
Sets whether or not this address TLV is "multivalue".
A message within a PbbPacket packet.
void MessageClear(void)
Removes all messages from this packet.
void PushBack(Ptr< PbbTlv > tlv)
Appends a TLV to the back of this block.
std::list< Ptr< PbbTlv > >::const_iterator ConstIterator
Ptr< PbbAddressTlv > Back(void) const
bool operator!=(const PbbAddressBlock &other) const
void Print(std::ostream &os) const
Pretty-prints the contents of this block.
bool HasIndexStart(void) const
Tests whether or not this address TLV has a start index.
bool HasIndexStop(void) const
Tests whether or not this address TLV has a stop index.
std::list< Ptr< PbbAddressBlock > >::const_iterator ConstAddressBlockIterator
uint8_t GetIndexStart(void) const
void SetMultivalue(bool isMultivalue)
void MessagePopFront(void)
Removes a message from the front of this packet.
void SetSequenceNumber(uint16_t seqnum)
Sets the sequence number of this message.
void TlvPopBack(void)
Removes a message TLV from the back of this message.
uint8_t GetIndexStart(void) const
std::list< Ptr< PbbMessage > >::iterator MessageIterator
Ptr< PbbAddressTlv > TlvFront(void)
std::list< uint8_t > m_prefixList
std::list< Ptr< PbbAddressBlock > >::iterator AddressBlockIterator
bool IsMultivalue(void) const
Tests whether or not this address TLV is "multivalue".
Ptr< PbbTlv > TlvBack(void)
iterator in a Buffer instance
a polymophic address class
virtual void PrintAddress(std::ostream &os, ConstAddressIterator iter) const
MessageIterator MessageEnd(void)
uint16_t m_sequenceNumber
AddressBlockIterator AddressBlockBegin()
virtual Address DeserializeAddress(uint8_t *buffer) const =0
void SetType(uint8_t type)
Sets the type of this TLV.
void PopBack(void)
Removes an Address TLV from the back of this block.
bool TlvEmpty(void) const
bool AddressEmpty(void) const
void AddressBlockClear(void)
Removes all address blocks from this message.
Address GetOriginatorAddress(void) const
uint8_t GetTypeExt(void) const
virtual PbbAddressLength GetAddressLength(void) const
Concrete IPv4 specific PbbMessage.
void TlvPushFront(Ptr< PbbAddressTlv > address)
Prepends an address TLV to the front of this message.
std::list< Address >::const_iterator ConstAddressIterator
Iterator Erase(Iterator position)
Removes the Address TLV at the specified position.
virtual void SerializeAddress(uint8_t *buffer, ConstAddressIterator iter) const
bool operator!=(const PbbTlv &other) const
void AddressPopFront(void)
Removes an address from the front of this block.
TlvIterator TlvBegin(void)
std::list< Address >::iterator AddressIterator
TlvIterator Erase(TlvIterator position)
Removes the packet TLV at the specified position.
bool operator==(const PbbMessage &other) const
virtual void PrintAddress(std::ostream &os, ConstAddressIterator iter) const
void SetIndexStart(uint8_t index)
Sets the index of the first address in the associated address block that this address TLV applies to...
bool operator!=(const PbbPacket &other) const
Ptr< PbbAddressTlv > TlvBack(void)
uint8_t GetVersion(void) const
virtual uint8_t GetAddressLength(void) const
void PushBack(Ptr< PbbAddressTlv > tlv)
Appends an Address TLV to the back of this block.
void SetType(uint8_t type)
Sets the type for this message.
std::list< Ptr< PbbTlv > >::iterator TlvIterator
void Serialize(Buffer::Iterator &start) const
Serializes this message into the specified buffer.
void TlvPopBack(void)
Removes an address TLV from the back of this message.
virtual Ptr< PbbAddressBlock > AddressBlockDeserialize(Buffer::Iterator &start) const
uint16_t GetSequenceNumber(void) const
int MessageSize(void) const
void AddressPushBack(Address address)
Appends an address to the back of this block.
Address AddressFront(void) const
void TlvClear(void)
Removes all message TLVs from this block.
Ptr< PbbAddressBlock > AddressBlockFront(void)
bool TlvEmpty(void) const
uint8_t PrefixBack(void) const
PbbAddressLength m_addrSize
Ptr< PbbTlv > Front(void) const
bool operator==(const PbbTlvBlock &other) const
std::list< uint8_t >::const_iterator ConstPrefixIterator
bool HasHopCount(void) const
Tests whether or not this message has a hop count.
virtual void PrintAddress(std::ostream &os, ConstAddressIterator iter) const =0
uint8_t GetType(void) const
Ptr< PbbTlv > Back(void) const
void Deserialize(Buffer::Iterator &start)
Deserializes a block from the specified buffer.
std::list< Ptr< PbbTlv > >::iterator TlvIterator
uint32_t GetSerializedSize(void) const
int AddressBlockSize(void) const
void Deserialize(Buffer::Iterator &start)
Deserializes a block from the specified buffer.
virtual Ptr< PbbAddressBlock > AddressBlockDeserialize(Buffer::Iterator &start) const =0
virtual uint32_t GetSerializedSize(void) const
virtual PbbAddressLength GetAddressLength(void) const
void Deserialize(Buffer::Iterator &start)
Deserializes a message from the specified buffer.
void TlvPopFront(void)
Removes a message TLV from the front of this message.
bool HasValue(void) const
Tests whether or not this TLV has a value.
virtual void SerializeOriginatorAddress(Buffer::Iterator &start) const
virtual void SerializeAddress(uint8_t *buffer, ConstAddressIterator iter) const =0
virtual ~PbbAddressBlock()
void Deserialize(Buffer::Iterator &start)
Deserializes a TLV from the specified buffer.
void TlvPopBack(void)
Removes a packet TLV from the back of this block.
void SetHopLimit(uint8_t hoplimit)
Sets the maximum number of hops this message should travel.
bool HasOriginatorAddress(void) const
Tests whether or not this message has an originator address.
Concrete IPv6 specific PbbAddressBlock.
uint8_t PrefixFront(void) const
void PrefixPushFront(uint8_t prefix)
Prepends a prefix to the front of this block.
std::list< Ptr< PbbAddressTlv > >::iterator Iterator
PbbAddressTlvBlock::Iterator TlvIterator
bool HasHopLimit(void) const
Tests whether or not this message has a hop limit.
AddressBlockIterator AddressBlockErase(AddressBlockIterator position)
Removes the address block at the specified position.
void Serialize(Buffer::Iterator &start) const
Serializes this address block into the specified buffer.
void Print(std::ostream &os) const
Pretty-prints the contents of this TLV.
virtual void PrintOriginatorAddress(std::ostream &os) const
void Print(std::ostream &os) const
Pretty-prints the contents of this address block.
PbbAddressTlvBlock m_addressTlvList
virtual ~PbbMessageIpv4()
void TlvClear(void)
Removes all address TLVs from this block.
bool operator==(const PbbPacket &other) const
uint32_t GetSerializedSize(void) const
void PrefixPushBack(uint8_t prefix)
Appends a prefix to the back of this block.
std::list< Ptr< PbbAddressTlv > > m_tlvList
void AddressBlockPopFront(void)
Removes an address block from the front of this message.
bool operator!=(const PbbTlvBlock &other) const
Address m_originatorAddress
A block of packet or message TLVs (PbbTlv).
uint8_t GetType(void) const
bool MessageEmpty(void) const
uint8_t GetIndexStop(void) const
std::list< Ptr< PbbMessage > > m_messageList
void Print(std::ostream &os) const
Pretty-prints the contents of this block.
void SetIndexStart(uint8_t index)
void TlvPushBack(Ptr< PbbAddressTlv > address)
Appends an address TLV to the back of this message.
std::list< Ptr< PbbTlv > > m_tlvList
int AddressSize(void) const
std::list< Ptr< PbbAddressBlock > > m_addressBlockList
bool operator!=(const PbbAddressTlvBlock &other) const
A block of Address TLVs (PbbAddressTlv).
uint8_t GetHopCount(void) const
bool HasSequenceNumber(void) const
Tests whether or not this packet has a sequence number.
void PopBack(void)
Removes a TLV from the back of this block.
void TlvPopFront(void)
Removes a packet TLV from the front of this packet.
bool operator==(const PbbTlv &other) const
uint8_t GetHopLimit(void) const
PbbAddressTlvBlock::ConstIterator ConstTlvIterator
virtual ~PbbAddressBlockIpv4()
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.
Ptr< PbbTlv > TlvBack(void)
TlvIterator TlvErase(TlvIterator position)
Removes the message TLV at the specified position.
uint32_t GetSerializedSize(void) const
void AddressBlockPushFront(Ptr< PbbAddressBlock > block)
Prepends an address block to the front of this message.
void MessagePopBack(void)
Removes a message from the back of this packet.
Ptr< PbbTlv > TlvFront(void)
virtual void SerializeAddress(uint8_t *buffer, ConstAddressIterator iter) const
Iterator Insert(Iterator position, const Ptr< PbbAddressTlv > tlv)
Inserts an Address TLV at the specified position in this block.
virtual PbbAddressLength GetAddressLength(void) const =0
void SetTypeExt(uint8_t type)
Sets the type extension of this TLV.
AddressIterator AddressBegin(void)
void AddressClear(void)
Removes all addresses from this block.
virtual void SerializeOriginatorAddress(Buffer::Iterator &start) const =0
void SetHopCount(uint8_t hopcount)
Sets the current number of hops this message has traveled.
virtual uint8_t GetAddressLength(void) const =0
Ptr< PbbTlv > TlvFront(void)
bool operator!=(const PbbMessage &other) const
void PrefixPopFront(void)
Removes a prefix from the front of this block.
Address AddressBack(void) const
PrefixIterator PrefixErase(PrefixIterator position)
Removes the prefix at the specified position.
void Serialize(Buffer::Iterator &start) const
Serializes this block into the specified buffer.
void SetOriginatorAddress(Address address)
Sets the address for the node that created this packet.
std::list< Ptr< PbbAddressTlv > >::const_iterator ConstIterator
uint32_t GetSerializedSize(void) const
void Deserialize(Buffer::Iterator &start)
Deserializes an address block from the specified buffer.
Iterator Insert(Iterator position, const Ptr< PbbTlv > tlv)
Inserts a TLV at the specified position in this block.
void TlvPopFront(void)
Removes an address TLV from the front of this message.
virtual Address DeserializeOriginatorAddress(Buffer::Iterator &start) const
uint8_t GetPrefixFlags(void) const
bool HasZeroTail(const uint8_t *tail, uint8_t taillen) const
Buffer GetValue(void) const
uint8_t GetIndexStop(void) const
void Clear(void)
Removes all Address TLVs from this block.
void SetValue(Buffer start)
Sets the value of this message to the specified buffer.
PrefixIterator PrefixBegin(void)
virtual void Print(std::ostream &os) const
Pretty-prints the contents of this block.
Ptr< PbbMessage > MessageFront(void)
virtual Ptr< PbbAddressBlock > AddressBlockDeserialize(Buffer::Iterator &start) const
void TlvPushFront(Ptr< PbbTlv > tlv)
Prepends a message TLV to the front of this message.
MessageIterator MessageBegin(void)
bool HasIndexStop(void) const
void Clear(void)
Removes all TLVs from this block.
std::list< uint8_t >::iterator PrefixIterator
virtual Address DeserializeAddress(uint8_t *buffer) const
AddressIterator AddressErase(AddressIterator position)
Removes the address at the specified position.
void AddressPopBack(void)
Removes an address from the back of this block.
Concrete IPv6 specific PbbMessage class.
A template-based reference counting class.
void Serialize(Buffer::Iterator &start) const
Serializes this block into the specified buffer.
a unique identifier for an interface.
virtual void Serialize(Buffer::Iterator start) const
Serializes this packet into the specified buffer.
std::list< Ptr< PbbTlv > >::const_iterator ConstTlvIterator
static Ptr< PbbMessage > DeserializeMessage(Buffer::Iterator &start)
Deserializes a message, returning the correct object depending on whether it is an IPv4 message or an...
bool AddressBlockEmpty(void) const
void GetHeadTail(uint8_t *head, uint8_t &headlen, uint8_t *tail, uint8_t &taillen) const
An Address Block and its associated Address TLV Blocks.
virtual void PrintOriginatorAddress(std::ostream &os) const
bool operator==(const PbbAddressTlvBlock &other) const
void Serialize(Buffer::Iterator &start) const
Serializes this TLV into the specified buffer.
void TlvPushBack(Ptr< PbbTlv > tlv)
Appends a message TLV to the back of this message.
virtual TypeId GetInstanceTypeId(void) const
bool operator==(const PbbAddressBlock &other) const
std::list< Ptr< PbbTlv > >::const_iterator ConstTlvIterator
AddressIterator AddressInsert(AddressIterator position, const Address value)
Inserts an address at the specified position in this block.
virtual uint8_t GetAddressLength(void) const
static TypeId GetTypeId(void)
void AddressPushFront(Address address)
Prepends an address to the front of this block.
void PrefixClear(void)
Removes all prefixes from this block.
bool PrefixEmpty(void) const
Ptr< PbbAddressTlv > Front(void) const
virtual uint32_t Deserialize(Buffer::Iterator start)
Deserializes a packet from the specified buffer.
void TlvClear(void)
Removes all packet TLVs from this packet.
virtual Address DeserializeAddress(uint8_t *buffer) const
TlvIterator TlvErase(TlvIterator position)
Removes the address TLV at the specified position.
Iterator Erase(Iterator position)
Removes the TLV at the specified position.
void PopFront(void)
Removes a TLV from the front of this block.