common/macaddress.h (50 lines of code) (raw):
#ifndef __MACADDRESS__
#define __MACADDRESS__
#include <net/ethernet.h>
#include <string.h>
#include <stdint.h>
#include <string>
namespace swss {
class MacAddress
{
public:
MacAddress();
MacAddress(const uint8_t *mac);
MacAddress(const std::string& macStr);
inline void getMac(uint8_t *mac) const
{
memcpy(mac, m_mac, ETHER_ADDR_LEN);
}
inline const uint8_t *getMac() const
{
return m_mac;
}
inline bool operator==(const MacAddress &o) const
{
return !memcmp(m_mac, o.m_mac, ETHER_ADDR_LEN);
}
inline bool operator!=(const MacAddress &o) const
{
return !(*this == o);
}
inline bool operator<(const MacAddress &o) const
{
return memcmp(m_mac, o.m_mac, sizeof(m_mac)) < 0;
}
inline bool operator!() const
{
return (!m_mac[0] && !m_mac[1] && !m_mac[2] &&
!m_mac[3] && !m_mac[4] && !m_mac[5]);
}
inline operator bool() const
{
return !!(*this);
}
const std::string to_string() const;
static std::string to_string(const uint8_t* mac);
static bool parseMacString(const std::string& strmac, uint8_t* mac);
private:
uint8_t m_mac[ETHER_ADDR_LEN];
};
}
#endif