virMacAddrSet(virMacAddrPtr dst, const virMacAddr *src)
{
memcpy(dst, src, sizeof(*src));
+ dst->generated = false;
}
/**
virMacAddrSetRaw(virMacAddrPtr dst, const unsigned char src[VIR_MAC_BUFLEN])
{
memcpy(dst->addr, src, VIR_MAC_BUFLEN);
+ dst->generated = false;
}
/**
{
size_t i;
+ addr->generated = false;
errno = 0;
for (i = 0; i < VIR_MAC_BUFLEN; i++) {
char *end_ptr;
str[VIR_MAC_HEXLEN])
return -1;
+ addr->generated = false;
for (i = 0; i < VIR_MAC_BUFLEN; i++)
addr->addr[i] = (virHexToBin(str[2 * i]) << 4 |
virHexToBin(str[2 * i + 1]));
addr->addr[3] = virRandomBits(8);
addr->addr[4] = virRandomBits(8);
addr->addr[5] = virRandomBits(8);
+ addr->generated = true;
}
/* The low order bit of the first byte is the "multicast" bit. */
struct _virMacAddr {
unsigned char addr[VIR_MAC_BUFLEN];
+ bool generated; /* True if MAC address was autogenerated,
+ false otherwise. */
};
int virMacAddrCompare(const char *mac1, const char *mac2);