22 #include "ns3/address-utils.h"
23 #include "ns3/assert.h"
24 #include "ns3/packet.h"
32 m_do (false), m_rf (false), m_usn (false), m_destinationAddress (
Mac48Address ()), m_destSeqNumber (0)
90 m_maxSize (32), m_flags (0), m_hopCount (0), m_ttl (0), m_preqId (0), m_originatorAddress (
91 Mac48Address::GetBroadcast ()), m_originatorSeqNumber (0), m_lifetime (0), m_metric (0),
243 WriteTo (i, (*j)->GetDestinationAddress ());
270 bool usnFlag =
false;
271 uint8_t flags = i.
ReadU8 ();
272 if (flags & (1 << 0))
276 if (flags & (1 << 1))
280 if (flags & (1 << 2))
284 new_element->SetFlags (doFlag, rfFlag, usnFlag);
287 new_element->SetDestinationAddress (addr);
320 <<
", TTL=" << (uint16_t)
m_ttl
326 <<
", Destinations=(";
333 std::vector<Ptr<DestinationAddressUnit> >
340 uint32_t dest_seq_number)
345 if ((*i)->GetDestinationAddress () == dest_address)
352 new_element->SetFlags (doFlag, rfFlag, (dest_seq_number == 0));
353 new_element->SetDestinationAddress (dest_address);
354 new_element->SetDestSeqNumber (dest_seq_number);
364 if ((*i)->GetDestinationAddress () == dest_address)
void SetPreqID(uint32_t id)
Set path discovery id field.
void SetFlags(bool doFlag, bool rfFlag, bool usnFlag)
Set flags function.
Smart pointer class similar to boost::intrusive_ptr.
void SetTTL(uint8_t ttl)
Set remaining number of hops allowed for this element.
uint8_t GetHopCount() const
Get hop count value.
void ReadFrom(Buffer::Iterator &i, Ipv4Address &ad)
Read an Ipv4Address from a Buffer.
std::vector< Ptr< DestinationAddressUnit > > m_destinations
the destinations
uint8_t m_destCount
destination count
uint32_t m_destSeqNumber
destiantion sequence number
#define NS_ASSERT(condition)
At runtime, in debugging builds, if this condition is not true, the program prints the source file...
U * PeekPointer(const Ptr< U > &p)
void WriteTo(Buffer::Iterator &i, Ipv4Address ad)
Write an Ipv4Address to a Buffer.
uint8_t m_hopCount
hop count
bool IsRf()
is RF function
uint32_t GetLifetime() const
Get lifetime value.
uint32_t m_originatorSeqNumber
originator sequence number
bool operator==(const MeshHeader &a, const MeshHeader &b)
uint32_t GetDistanceFrom(Iterator const &o) const
void SetDestSeqNumber(uint32_t dest_seq_number)
Set destination sequence number.
void SetNeedNotPrep()
Set Proactive PREP subfield to off.
iterator in a Buffer instance
void SetLifetime(uint32_t lifetime)
Set lifetime in TUs for the forwarding information to be considered valid.
Mac48Address m_originatorAddress
originator address
Mac48Address GetOriginatorAddress() const
Get originator address value.
uint8_t GetTtl() const
Get TTL value.
void DecrementTtl()
Handle TTL.
Mac48Address m_destinationAddress
desitnation address
virtual void Print(std::ostream &os) const
Generate human-readable form of IE.
void IncrementMetric(uint32_t metric)
Handle Metric:
void SetDestCount(uint8_t dest_count)
Set destination count value.
virtual WifiInformationElementId ElementId() const
See 7.3.2.96 of 802.11s draft 2.07.
uint32_t m_preqId
PREQ ID.
void ClearDestinationAddressElements()
Clear PREQ: remove all destinations.
static Mac48Address GetBroadcast(void)
virtual uint8_t DeserializeInformationField(Buffer::Iterator i, uint8_t length)
Deserialize information (i.e., the body of the IE, not including the Element ID and length octets) ...
uint32_t GetOriginatorSeqNumber() const
Get originator sequence numnber value.
void SetOriginatorAddress(Mac48Address originator_address)
Set originator address value.
void SetOriginatorSeqNumber(uint32_t originator_seq_number)
Set originator sequence number.
void SetMetric(uint32_t metric)
Set metric value.
Every class exported by the ns3 library is enclosed in the ns3 namespace.
void AddDestinationAddressElement(bool doFlag, bool rfFlag, Mac48Address dest_address, uint32_t dest_seq_number)
Add a destination address unit: flags, destination and sequence number.
void DelDestinationAddressElement(Mac48Address dest_address)
Delete a destination address unit by destination.
virtual void SerializeInformationField(Buffer::Iterator i) const
Serialize information (i.e., the body of the IE, not including the Element ID and length octets) ...
bool IsNeedNotPrep() const
Check whether Proactive PREP subfield to off.
uint32_t GetDestSeqNumber() const
Get destination sequence number.
uint8_t GetDestCount() const
Get destination count.
std::vector< Ptr< DestinationAddressUnit > > GetDestinationList()
Get all destinations, which are stored in PREQ:
void SetUnicastPreq()
Set flag indicating that PREQ is unicast.
bool MayAddAddress(Mac48Address originator)
Checks that preq's originator address equals to originator, and this preq is not proactive.
uint8_t m_maxSize
how many destinations we support
void WriteU8(uint8_t data)
bool IsUnicastPreq() const
Is unicast PREQ function.
bool IsDo()
Is do function.
virtual uint8_t GetInformationFieldSize() const
Length of serialized information (i.e., the length of the body of the IE, not including the Element I...
uint32_t GetPreqID() const
Get path discovery id field.
bool IsUsn()
Is USN function.
Mac48Address GetDestinationAddress() const
Get destination address function.
uint8_t WifiInformationElementId
This type is used to represent an Information Element ID.
uint32_t GetMetric() const
Get metric value.
bool IsFull() const
Is full function.
Describes an address unit in PREQ information element See 7.3.2.96 for more details.
void SetDestinationAddress(Mac48Address dest_address)
Set destination address function.
std::ostream & operator<<(std::ostream &os, const IeBeaconTiming &a)
uint32_t ReadLsbtohU32(void)
void SetHopcount(uint8_t hopcount)
Set number of hops from originator to mesh STA transmitting this element.
uint32_t m_lifetime
lifetime
void WriteHtolsbU32(uint32_t data)