Rather than leaving 2 bytes of junk in the upper word
of a mac address represented as a u64, zero them out.
That way later compairsons stand a chance of matching
when deleting a bridge's arp termination entries.
The volatile qualifier shouldn't be needed here, but
without it the compiler removes the clib_memcpy() at -O2.
Bad compiler. No biscuit.
Type: fix
commit:
faf22cb303b65e2a6bf8dad959d7f5ee6d031c4f
Change-Id: Iebcf35fdd421293dccbcaefadef767f7e139438e
Signed-off-by: Jon Loeliger <jdl@netgate.com>
static_always_inline u64
mac_address_as_u64 (const mac_address_t * mac)
{
static_always_inline u64
mac_address_as_u64 (const mac_address_t * mac)
{
+ volatile u64 as_u64 = 0;
- as_u64 = (u64 *) mac->bytes;
+ clib_memcpy ((void *) &as_u64, mac->bytes, 6);
}
static_always_inline void
}
static_always_inline void