bug 86: add missing functions to manipulate Mac48Address
This commit is contained in:
@@ -133,19 +133,48 @@ Mac48Address::GetType (void)
|
||||
return type;
|
||||
}
|
||||
|
||||
bool
|
||||
Mac48Address::IsBroadcast (void) const
|
||||
{
|
||||
return *this == GetBroadcast ();
|
||||
}
|
||||
bool
|
||||
Mac48Address::IsMulticast (void) const
|
||||
{
|
||||
return (m_address[0] & 0x01) == 0x01;
|
||||
}
|
||||
Mac48Address
|
||||
Mac48Address::GetBroadcast (void)
|
||||
{
|
||||
static Mac48Address broadcast = Mac48Address ("ff:ff:ff:ff:ff:ff");
|
||||
return broadcast;
|
||||
}
|
||||
bool operator == (const Mac48Address &a, const Mac48Address &b)
|
||||
{
|
||||
uint8_t ada[6];
|
||||
uint8_t adb[6];
|
||||
a.CopyTo (ada);
|
||||
b.CopyTo (adb);
|
||||
return memcmp (ada, adb, 6) == 0;
|
||||
return memcmp (a.m_address, b.m_address, 6) == 0;
|
||||
}
|
||||
bool operator != (const Mac48Address &a, const Mac48Address &b)
|
||||
{
|
||||
return ! (a == b);
|
||||
}
|
||||
|
||||
bool operator < (const Mac48Address &a, const Mac48Address &b)
|
||||
{
|
||||
for (uint8_t i = 0; i < 6; i++)
|
||||
{
|
||||
if (a.m_address[i] < b.m_address[i])
|
||||
{
|
||||
return true;
|
||||
}
|
||||
else if (a.m_address[i] > b.m_address[i])
|
||||
{
|
||||
return false;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
std::ostream& operator<< (std::ostream& os, const Mac48Address & address)
|
||||
{
|
||||
uint8_t ad[6];
|
||||
|
||||
@@ -79,6 +79,20 @@ public:
|
||||
* Allocate a new Mac48Address.
|
||||
*/
|
||||
static Mac48Address Allocate (void);
|
||||
|
||||
/**
|
||||
* \returns true if this is a broadcast address, false otherwise.
|
||||
*/
|
||||
bool IsBroadcast (void) const;
|
||||
/**
|
||||
* \returns true if this is a multicast address, false otherwise.
|
||||
*/
|
||||
bool IsMulticast (void) const;
|
||||
|
||||
/**
|
||||
* \returns the broadcast address
|
||||
*/
|
||||
static Mac48Address GetBroadcast (void);
|
||||
private:
|
||||
/**
|
||||
* \returns a new Address instance
|
||||
@@ -87,11 +101,15 @@ private:
|
||||
*/
|
||||
Address ConvertTo (void) const;
|
||||
static uint8_t GetType (void);
|
||||
friend bool operator < (const Mac48Address &a, const Mac48Address &b);
|
||||
friend bool operator == (const Mac48Address &a, const Mac48Address &b);
|
||||
|
||||
uint8_t m_address[6];
|
||||
};
|
||||
|
||||
bool operator == (const Mac48Address &a, const Mac48Address &b);
|
||||
bool operator != (const Mac48Address &a, const Mac48Address &b);
|
||||
bool operator < (const Mac48Address &a, const Mac48Address &b);
|
||||
std::ostream& operator<< (std::ostream& os, const Mac48Address & address);
|
||||
|
||||
} // namespace ns3
|
||||
|
||||
Reference in New Issue
Block a user