#include <stdio.h>
#include <stdlib.h>
#include "MacAddress.h"
namespace pcpp
{
MacAddress MacAddress::Zero(0,0,0,0,0,0);
std::string MacAddress::toString() const
{
char str[19];
snprintf(str, sizeof str, "%02x:%02x:%02x:%02x:%02x:%02x", m_Address[0], m_Address[1], m_Address[2], m_Address[3], m_Address[4], m_Address[5]);
return std::string(str);
}
void MacAddress::init(const char* addr)
{
const unsigned int addrLen = sizeof m_Address;
unsigned int i = 0;
for(; *addr != 0 && i < addrLen; ++i)
{
char byte[3];
memset(byte, 0, sizeof byte);
byte[0] = *addr++;
if(*addr == '\0') break;
byte[1] = *addr++;
if(*addr != '\0') ++addr; m_Address[i] = static_cast<uint8_t>(strtol(byte, nullptr, 16));
if(m_Address[i] == 0 && (byte[0] != '0' || byte[1] != '0'))
{
m_IsValid = false;
return;
}
}
m_IsValid = (i == addrLen && *addr == '\0');
}
}