bug 86: add missing functions to manipulate Mac48Address

This commit is contained in:
Mathieu Lacage
2007-10-11 13:11:45 +02:00
parent 20b226769f
commit cd045df1c3
2 changed files with 52 additions and 5 deletions

View File

@@ -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];

View File

@@ -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