ethernet: add sanity checks to p2p_ethernet_add/del
[vpp.git] / src / vnet / ethernet / packet.h
index 04ce420..13d7daf 100644 (file)
@@ -64,20 +64,20 @@ typedef struct
 
 /* I/G bit: individual (unicast)/group (broadcast/multicast). */
 always_inline uword
-ethernet_address_cast (const u8 * a)
+ethernet_address_cast (u8 * a)
 {
   return (a[0] >> 0) & 1;
 }
 
 always_inline int
-ethernet_address_is_broadcast (const u8 * a)
+ethernet_address_is_broadcast (u8 * a)
 {
   return clib_mem_unaligned (a, u32) == 0xffffffff &&
     clib_mem_unaligned (a + 4, u16) == 0xffff;
 }
 
 always_inline uword
-ethernet_address_is_locally_administered (const u8 * a)
+ethernet_address_is_locally_administered (u8 * a)
 {
   return (a[0] >> 1) & 1;
 }
@@ -142,8 +142,8 @@ ethernet_vlan_header_set_priority_net_order (ethernet_vlan_header_t * h,
 {
   u8 *bytes = (u8 *) (&h->priority_cfi_and_id);
 
-  bytes[0] &= 0x1f;
-  bytes[0] |= (prio & 0x7) << 5;
+  bytes[0] &= 0x0f;
+  bytes[0] |= (prio & 0xf) << 4;
 }
 
 always_inline u8
@@ -151,7 +151,7 @@ ethernet_vlan_header_get_priority_net_order (ethernet_vlan_header_t * h)
 {
   u8 *bytes = (u8 *) (&h->priority_cfi_and_id);
 
-  return (bytes[0] >> 5);
+  return (bytes[0] >> 4);
 }
 
 /* VLAN with ethertype first and vlan id second */