X-Git-Url: https://gerrit.fd.io/r/gitweb?a=blobdiff_plain;ds=sidebyside;f=src%2Fvnet%2Fethernet%2Fmac_address.h;h=0631ec38bd222308b24af965d65dafb2c8aae775;hb=HEAD;hp=aa773c5c44945a0a031a70e4013a7222895012e7;hpb=cbe25aab3be72154f2c706c39eeba6a77f34450f;p=vpp.git diff --git a/src/vnet/ethernet/mac_address.h b/src/vnet/ethernet/mac_address.h index aa773c5c449..0631ec38bd2 100644 --- a/src/vnet/ethernet/mac_address.h +++ b/src/vnet/ethernet/mac_address.h @@ -111,11 +111,11 @@ mac_address_is_zero (const mac_address_t * mac) static_always_inline u64 mac_address_as_u64 (const mac_address_t * mac) { - u64 *as_u64; + volatile u64 as_u64 = 0; - as_u64 = (u64 *) mac->bytes; + clib_memcpy ((void *) &as_u64, mac->bytes, 6); - return (*as_u64); + return as_u64; } static_always_inline void @@ -149,6 +149,12 @@ mac_address_set_zero (mac_address_t * mac) mac->u.last_2 = 0; } +static_always_inline int +mac_address_n_bits_set (const mac_address_t * a) +{ + return (count_set_bits (mac_address_as_u64 (a))); +} + extern void mac_address_increment (mac_address_t * mac); extern uword unformat_mac_address_t (unformat_input_t * input, va_list * args);