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;
59 typedef std::list< Ptr<PbbTlv> >::iterator
Iterator;
89 int Size (
void)
const;
94 bool Empty (
void)
const;
185 void Print (std::ostream &os)
const;
195 void Print (std::ostream &os,
int level)
const;
223 typedef std::list< Ptr<PbbAddressTlv> >::iterator
Iterator;
253 int Size (
void)
const;
258 bool Empty (
void)
const;
351 void Print (std::ostream &os)
const;
361 void Print (std::ostream &os,
int level)
const;
660 virtual void Print (std::ostream &os)
const;
1041 void Print (std::ostream &os)
const;
1052 void Print (std::ostream &os,
int level)
const;
1531 void Print (std::ostream &os)
const;
1542 void Print (std::ostream &os,
int level)
const;
1596 void GetHeadTail (uint8_t *head, uint8_t &headlen,
1597 uint8_t *tail, uint8_t &taillen)
const;
1605 bool HasZeroTail (
const uint8_t *tail, uint8_t taillen)
const;
1719 void SetValue (
const uint8_t * buffer, uint32_t size);
1765 void Print (std::ostream &os)
const;
1775 void Print (std::ostream &os,
int level)
const;
virtual void SerializeOriginatorAddress(Buffer::Iterator &start) const
Serialize the originator address.
bool operator==(const PbbAddressTlvBlock &other) const
Equality operator for PbbAddressTlvBlock.
bool m_hasOriginatorAddress
Originator address present.
bool operator!=(const PbbTlvBlock &other) const
Inequality operator for PbbTlvBlock.
PrefixIterator PrefixEnd(void)
bool HasSequenceNumber(void) const
Tests whether or not this message has a sequence number.
AddressBlockIterator AddressBlockEnd()
bool m_hasHopCount
Hop count present.
virtual void SerializeOriginatorAddress(Buffer::Iterator &start) const
Serialize the originator address.
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)
virtual uint8_t GetAddressLength(void) const
Returns address length.
std::list< Ptr< PbbTlv > >::iterator Iterator
PbbTlv container iterator.
bool operator!=(const PbbAddressBlock &other) const
Inequality operator for PbbAddressBlock.
bool m_hasIndexStart
Start index present.
Smart pointer class similar to boost::intrusive_ptr.
uint8_t PrefixBack(void) const
void MessagePushFront(Ptr< PbbMessage > message)
Prepends a message to the front of this packet.
Ptr< PbbMessage > MessageBack(void)
bool operator==(const PbbTlvBlock &other) const
Equality operator for PbbTlvBlock.
std::list< Ptr< PbbMessage > >::const_iterator ConstMessageIterator
PbbMessage Const Iterator for PbbPacket.
void PushFront(Ptr< PbbTlv > tlv)
Prepends a TLV to the front of this block.
int AddressSize(void) const
virtual Ptr< PbbAddressBlock > AddressBlockDeserialize(Buffer::Iterator &start) const
Deserialize an address block.
Buffer GetValue(void) const
Address AddressFront(void) const
Main PacketBB Packet object.
void Serialize(Buffer::Iterator &start) const
Serializes this block into the specified buffer.
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.
bool HasHopCount(void) const
Tests whether or not this message has a hop count.
virtual ~PbbMessageIpv6()
virtual ~PbbAddressBlockIpv6()
void Print(std::ostream &os) const
Pretty-prints the contents of this TLV.
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.
Ptr< PbbAddressTlv > Front(void) const
bool PrefixEmpty(void) const
void SetIndexStop(uint8_t index)
Set an index as stop point.
virtual Address DeserializeOriginatorAddress(Buffer::Iterator &start) const =0
Deserialize the originator address.
automatically resized byte buffer
~PbbAddressTlvBlock(void)
virtual TypeId GetInstanceTypeId(void) const
Get the most derived TypeId for this Object.
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...
virtual void PrintAddress(std::ostream &os, ConstAddressIterator iter) const
Print one or more addresses.
Ptr< PbbTlv > Back(void) const
Address GetOriginatorAddress(void) const
virtual uint8_t GetAddressLength(void) const
Returns address length.
void TlvPushFront(Ptr< PbbTlv > tlv)
Prepends a packet TLV to the front of this packet.
PbbAddressLength
Used in Messages to determine whether it contains IPv4 or IPv6 addresses.
std::list< Address > m_addressList
Addresses container.
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 TlvEmpty(void) const
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.
int AddressBlockSize(void) const
virtual void SerializeAddress(uint8_t *buffer, ConstAddressIterator iter) const
Serialize one or more addresses.
std::list< Ptr< PbbTlv > >::const_iterator ConstIterator
PbbTlv container const iterator.
int PrefixSize(void) const
uint8_t GetHopCount(void) const
bool AddressBlockEmpty(void) const
uint8_t m_type
Type of this TLV.
uint32_t GetSerializedSize(void) const
std::list< Ptr< PbbAddressBlock > >::const_iterator ConstAddressBlockIterator
PbbAddressBlock const iterator.
uint8_t GetIndexStart(void) const
Get the starting point index.
void SetMultivalue(bool isMultivalue)
Set the multivalue parameter.
void MessagePopFront(void)
Removes a message from the front of this packet.
void SetSequenceNumber(uint16_t seqnum)
Sets the sequence number of this message.
uint32_t GetSerializedSize(void) const
void TlvPopBack(void)
Removes a message TLV from the back of this message.
uint8_t PrefixFront(void) const
std::list< Ptr< PbbMessage > >::iterator MessageIterator
PbbMessage Iterator for PbbPacket.
Ptr< PbbAddressTlv > TlvFront(void)
uint8_t m_type
the type for this message
std::list< uint8_t > m_prefixList
Prefixes container.
bool HasIndexStart(void) const
Checks if there is a starting index.
std::list< Ptr< PbbAddressBlock > >::iterator AddressBlockIterator
PbbAddressBlock iterator.
Ptr< PbbTlv > TlvBack(void)
iterator in a Buffer instance
a polymophic address class
virtual void PrintOriginatorAddress(std::ostream &os) const
Print the originator address.
bool m_hasSequenceNumber
Sequence number present.
MessageIterator MessageEnd(void)
bool HasOriginatorAddress(void) const
Tests whether or not this message has an originator address.
uint16_t m_sequenceNumber
Sequence number.
AddressBlockIterator AddressBlockBegin()
virtual Address DeserializeAddress(uint8_t *buffer) const =0
Deserialize one address.
void SetType(uint8_t type)
Sets the type of this TLV.
void PopBack(void)
Removes an Address TLV from the back of this block.
void Serialize(Buffer::Iterator &start) const
Serializes this address block into the specified buffer.
uint16_t GetSequenceNumber(void) const
bool operator==(const PbbPacket &other) const
Equality operator for PbbPacket.
bool operator!=(const PbbAddressTlvBlock &other) const
Inequality operator for PbbAddressTlvBlock.
void Print(std::ostream &os) const
Pretty-prints the contents of this message.
void AddressBlockClear(void)
Removes all address blocks from this message.
uint8_t GetIndexStop(void) const
Concrete IPv4 specific PbbMessage.
void TlvPushFront(Ptr< PbbAddressTlv > address)
Prepends an address TLV to the front of this message.
virtual void Serialize(Buffer::Iterator start) const
Serializes this packet into the specified buffer.
int MessageSize(void) const
std::list< Address >::const_iterator ConstAddressIterator
Address const iterator.
Iterator Erase(Iterator position)
Removes the Address TLV at the specified position.
Address AddressBack(void) const
bool MessageEmpty(void) const
void AddressPopFront(void)
Removes an address from the front of this block.
TlvIterator TlvBegin(void)
std::list< Address >::iterator AddressIterator
Address iterator.
TlvIterator Erase(TlvIterator position)
Removes the packet TLV at the specified position.
void SetIndexStart(uint8_t index)
Sets the index of the first address in the associated address block that this address TLV applies to...
Ptr< PbbAddressTlv > TlvBack(void)
bool HasIndexStop(void) const
Tests whether or not this address TLV has a stop index.
bool m_hasHopLimit
Hop limit present.
bool m_isMultivalue
Is multivalue.
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
PbbTlv iterator for PbbPacket.
void TlvPopBack(void)
Removes an address TLV from the back of this message.
void Print(std::ostream &os) const
Pretty-prints the contents of this block.
uint8_t GetIndexStop(void) const
Get the stop point index.
uint8_t m_hopCount
Hop count.
void GetHeadTail(uint8_t *head, uint8_t &headlen, uint8_t *tail, uint8_t &taillen) const
Get head and tail.
void AddressPushBack(Address address)
Appends an address to the back of this block.
void TlvClear(void)
Removes all message TLVs from this block.
Ptr< PbbAddressBlock > AddressBlockFront(void)
PbbAddressLength m_addrSize
the address size
std::list< uint8_t >::const_iterator ConstPrefixIterator
Prefix const iterator.
bool m_hasValue
Has value.
bool TlvEmpty(void) const
virtual void PrintAddress(std::ostream &os, ConstAddressIterator iter) const =0
Print one or more addresses.
uint8_t m_typeExt
Extended type.
void Deserialize(Buffer::Iterator &start)
Deserializes a block from the specified buffer.
std::list< Ptr< PbbTlv > >::iterator TlvIterator
PbbTlv iterator.
void Print(std::ostream &os) const
Pretty-prints the contents of this block.
void Deserialize(Buffer::Iterator &start)
Deserializes a block from the specified buffer.
virtual Ptr< PbbAddressBlock > AddressBlockDeserialize(Buffer::Iterator &start) const =0
Deserialize an address block.
uint8_t GetTypeExt(void) const
void Print(std::ostream &os) const
Pretty-prints the contents of this address block.
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 operator==(const PbbAddressBlock &other) const
Equality operator for PbbAddressBlock.
virtual void SerializeAddress(uint8_t *buffer, ConstAddressIterator iter) const =0
Serialize one or more addresses.
bool HasValue(void) const
Tests whether or not this TLV has a value.
virtual ~PbbAddressBlock()
virtual Address DeserializeOriginatorAddress(Buffer::Iterator &start) const
Deserialize the originator address.
void Serialize(Buffer::Iterator &start) const
Serializes this message into the specified buffer.
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.
Concrete IPv6 specific PbbAddressBlock.
void PrefixPushFront(uint8_t prefix)
Prepends a prefix to the front of this block.
bool operator!=(const PbbMessage &other) const
Inequality operator for PbbMessage.
std::list< Ptr< PbbAddressTlv > >::iterator Iterator
PbbAddressTlv iterator for PbbAddressTlvBlock.
bool IsMultivalue(void) const
Check the multivalue parameter.
PbbAddressTlvBlock::Iterator TlvIterator
tlvblock iterator
AddressBlockIterator AddressBlockErase(AddressBlockIterator position)
Removes the address block at the specified position.
bool HasHopLimit(void) const
Tests whether or not this message has a hop limit.
Every class exported by the ns3 library is enclosed in the ns3 namespace.
PbbAddressTlvBlock m_addressTlvList
PbbAddressTlv container.
virtual ~PbbMessageIpv4()
void TlvClear(void)
Removes all address TLVs from this block.
bool HasSequenceNumber(void) const
Tests whether or not this packet has a sequence number.
bool operator!=(const PbbPacket &other) const
Inequality operator for PbbPacket.
void PrefixPushBack(uint8_t prefix)
Appends a prefix to the back of this block.
bool m_hasIndexStop
Stop index present.
virtual Address DeserializeAddress(uint8_t *buffer) const
Deserialize one address.
std::list< Ptr< PbbAddressTlv > > m_tlvList
PbbAddressTlv container.
void AddressBlockPopFront(void)
Removes an address block from the front of this message.
Address m_originatorAddress
originator address
A block of packet or message TLVs (PbbTlv).
uint8_t m_indexStart
Start index.
uint8_t GetHopLimit(void) const
virtual void Print(std::ostream &os) const
Pretty-prints the contents of this block.
std::list< Ptr< PbbMessage > > m_messageList
PbbTlvBlock container.
virtual PbbAddressLength GetAddressLength(void) const
Returns address length (IPV4 3 or IPV6 15)
bool AddressEmpty(void) const
uint32_t GetSerializedSize(void) const
void SetIndexStart(uint8_t index)
Set an index as starting point.
void TlvPushBack(Ptr< PbbAddressTlv > address)
Appends an address TLV to the back of this message.
std::list< Ptr< PbbTlv > > m_tlvList
PbbTlv container.
PbbTlvBlock m_tlvList
PbbTlv container.
std::list< Ptr< PbbAddressBlock > > m_addressBlockList
PbbAddressBlock container.
bool m_hasTypeExt
Extended type present.
A block of Address TLVs (PbbAddressTlv).
bool HasIndexStart(void) const
Tests whether or not this address TLV has a start index.
void PopBack(void)
Removes a TLV from the back of this block.
uint16_t GetSequenceNumber(void) const
void TlvPopFront(void)
Removes a packet TLV from the front of this packet.
virtual void PrintAddress(std::ostream &os, ConstAddressIterator iter) const
Print one or more addresses.
uint16_t m_seqnum
Sequence number.
PbbAddressTlvBlock::ConstIterator ConstTlvIterator
tlvblock const iterator
virtual ~PbbAddressBlockIpv4()
virtual void PrintOriginatorAddress(std::ostream &os) const =0
Print the originator address.
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.
void AddressBlockPushFront(Ptr< PbbAddressBlock > block)
Prepends an address block to the front of this message.
virtual Address DeserializeAddress(uint8_t *buffer) const
Deserialize one address.
uint8_t GetIndexStart(void) const
void MessagePopBack(void)
Removes a message from the back of this packet.
Ptr< PbbTlv > TlvFront(void)
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
Returns address length (IPV4 3 or IPV6 15)
void SetTypeExt(uint8_t type)
Sets the type extension of this TLV.
virtual Ptr< PbbAddressBlock > AddressBlockDeserialize(Buffer::Iterator &start) const
Deserialize an address block.
bool TlvEmpty(void) const
virtual uint32_t GetSerializedSize(void) const
uint32_t GetSerializedSize(void) const
AddressIterator AddressBegin(void)
void AddressClear(void)
Removes all addresses from this block.
virtual void SerializeOriginatorAddress(Buffer::Iterator &start) const =0
Serialize the originator address.
void SetHopCount(uint8_t hopcount)
Sets the current number of hops this message has traveled.
bool HasZeroTail(const uint8_t *tail, uint8_t taillen) const
Check if the tail is empty.
virtual uint8_t GetAddressLength(void) const =0
Returns address length.
Ptr< PbbTlv > TlvFront(void)
uint8_t GetPrefixFlags(void) const
Get the prefix flags.
Ptr< PbbAddressTlv > Back(void) const
void PrefixPopFront(void)
Removes a prefix from the front of this block.
virtual Address DeserializeOriginatorAddress(Buffer::Iterator &start) const
Deserialize the originator address.
PrefixIterator PrefixErase(PrefixIterator position)
Removes the prefix at the specified position.
void SetOriginatorAddress(Address address)
Sets the address for the node that created this packet.
std::list< Ptr< PbbAddressTlv > >::const_iterator ConstIterator
PbbAddressTlv const iterator for PbbAddressTlvBlock.
uint8_t m_hopLimit
Hop limit.
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 Serialize(Buffer::Iterator &start) const
Serializes this block into the specified buffer.
void TlvPopFront(void)
Removes an address TLV from the front of this message.
uint8_t GetType(void) const
bool operator!=(const PbbTlv &other) const
Inequality operator for PbbTlv.
void Serialize(Buffer::Iterator &start) const
Serializes this TLV into the specified buffer.
bool HasTypeExt(void) const
Tests whether or not this TLV has a type extension.
virtual void SerializeAddress(uint8_t *buffer, ConstAddressIterator iter) const
Serialize one or more addresses.
uint32_t GetSerializedSize(void) const
uint8_t GetType(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.
bool HasIndexStop(void) const
Checks if there is a stop index.
PrefixIterator PrefixBegin(void)
bool m_hasseqnum
Sequence number present.
Ptr< PbbMessage > MessageFront(void)
void TlvPushFront(Ptr< PbbTlv > tlv)
Prepends a message TLV to the front of this message.
MessageIterator MessageBegin(void)
void Clear(void)
Removes all TLVs from this block.
std::list< uint8_t >::iterator PrefixIterator
Prefix iterator.
bool operator==(const PbbMessage &other) const
Equality operator for PbbMessage.
AddressIterator AddressErase(AddressIterator position)
Removes the address at the specified position.
void AddressPopBack(void)
Removes an address from the back of this block.
bool IsMultivalue(void) const
Tests whether or not this address TLV is "multivalue".
PbbTlvBlock m_tlvList
PbbTlvBlock.
Concrete IPv6 specific PbbMessage class.
uint8_t m_indexStop
Stop index.
A template-based reference counting class.
a unique identifier for an interface.
Ptr< PbbTlv > Front(void) const
std::list< Ptr< PbbTlv > >::const_iterator ConstTlvIterator
PbbTlv const iterator for PbbPacket.
static Ptr< PbbMessage > DeserializeMessage(Buffer::Iterator &start)
Deserializes a message, returning the correct object depending on whether it is an IPv4 message or an...
An Address Block and its associated Address TLV Blocks.
void TlvPushBack(Ptr< PbbTlv > tlv)
Appends a message TLV to the back of this message.
std::list< Ptr< PbbTlv > >::const_iterator ConstTlvIterator
PbbTlv const iterator.
AddressIterator AddressInsert(AddressIterator position, const Address value)
Inserts an address at the specified position in this block.
virtual void PrintOriginatorAddress(std::ostream &os) const
Print the originator address.
static TypeId GetTypeId(void)
Get the type ID.
void AddressPushFront(Address address)
Prepends an address to the front of this block.
void PrefixClear(void)
Removes all prefixes from this block.
virtual PbbAddressLength GetAddressLength(void) const
Returns address length (IPV4 3 or IPV6 15)
bool operator==(const PbbTlv &other) const
Equality operator for PbbTlv.
virtual uint32_t Deserialize(Buffer::Iterator start)
Deserializes a packet from the specified buffer.
void TlvClear(void)
Removes all packet TLVs from this packet.
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.
uint8_t GetVersion(void) const