net: support MPLS in software packet type parser
[dpdk.git] / lib / librte_net / rte_ether.h
index 27c9195..c2c5e24 100644 (file)
@@ -210,7 +210,7 @@ static inline void eth_random_addr(uint8_t *addr)
        uint8_t *p = (uint8_t *)&rand;
 
        rte_memcpy(addr, p, ETHER_ADDR_LEN);
-       addr[0] &= ~ETHER_GROUP_ADDR;       /* clear multicast bit */
+       addr[0] &= (uint8_t)~ETHER_GROUP_ADDR;       /* clear multicast bit */
        addr[0] |= ETHER_LOCAL_ADMIN_ADDR;  /* set local assignment bit */
 }
 
@@ -306,6 +306,8 @@ struct vxlan_hdr {
 #define ETHER_TYPE_SLOW 0x8809 /**< Slow protocols (LACP and Marker). */
 #define ETHER_TYPE_TEB  0x6558 /**< Transparent Ethernet Bridging. */
 #define ETHER_TYPE_LLDP 0x88CC /**< LLDP Protocol. */
+#define ETHER_TYPE_MPLS 0x8847 /**< MPLS ethertype. */
+#define ETHER_TYPE_MPLSM 0x8848 /**< MPLS multicast ethertype. */
 
 #define ETHER_VXLAN_HLEN (sizeof(struct udp_hdr) + sizeof(struct vxlan_hdr))
 /**< VXLAN tunnel header length. */