ethernet: trivial additions 84/25384/3
authorNeale Ranns <nranns@cisco.com>
Mon, 24 Feb 2020 12:45:53 +0000 (12:45 +0000)
committerDamjan Marion <dmarion@me.com>
Mon, 24 Feb 2020 15:46:37 +0000 (15:46 +0000)
Type: improvement

- macros to identify SENDER and TARGET in ARP header
- count the number of bits set in a mac_address

Signed-off-by: Neale Ranns <nranns@cisco.com>
Change-Id: Id31e27a4f5f01a8cfb70d3798416bb2519981654

src/vnet/ethernet/arp_packet.h
src/vnet/ethernet/mac_address.h

index a35adf1..6b4dfa6 100644 (file)
@@ -146,6 +146,9 @@ typedef struct
   };
 } ethernet_arp_header_t;
 
+#define ARP_SENDER 0
+#define ARP_TARGET 1
+
 extern u8 *format_ethernet_arp_header (u8 * s, va_list * va);
 extern u8 *format_ethernet_arp_opcode (u8 * s, va_list * va);
 extern u8 *format_ethernet_arp_hardware_type (u8 * s, va_list * va);
index aa773c5..68feb39 100644 (file)
@@ -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);