*/
static inline int is_unicast_ether_addr(const struct ether_addr *ea)
{
- return ((ea->addr_bytes[0] & ETHER_GROUP_ADDR) == 0);
+ return (ea->addr_bytes[0] & ETHER_GROUP_ADDR) == 0;
}
/**
*/
static inline int is_multicast_ether_addr(const struct ether_addr *ea)
{
- return (ea->addr_bytes[0] & ETHER_GROUP_ADDR);
+ return ea->addr_bytes[0] & ETHER_GROUP_ADDR;
}
/**
*/
static inline int is_broadcast_ether_addr(const struct ether_addr *ea)
{
- const uint16_t *ea_words = (const uint16_t *)ea;
+ const unaligned_uint16_t *ea_words = (const unaligned_uint16_t *)ea;
return (ea_words[0] == 0xFFFF && ea_words[1] == 0xFFFF &&
ea_words[2] == 0xFFFF);
*/
static inline int is_universal_ether_addr(const struct ether_addr *ea)
{
- return ((ea->addr_bytes[0] & ETHER_LOCAL_ADMIN_ADDR) == 0);
+ return (ea->addr_bytes[0] & ETHER_LOCAL_ADMIN_ADDR) == 0;
}
/**
*/
static inline int is_local_admin_ether_addr(const struct ether_addr *ea)
{
- return ((ea->addr_bytes[0] & ETHER_LOCAL_ADMIN_ADDR) != 0);
+ return (ea->addr_bytes[0] & ETHER_LOCAL_ADMIN_ADDR) != 0;
}
/**
*/
static inline int is_valid_assigned_ether_addr(const struct ether_addr *ea)
{
- return (is_unicast_ether_addr(ea) && (! is_zero_ether_addr(ea)));
+ return is_unicast_ether_addr(ea) && (! is_zero_ether_addr(ea));
}
/**
* A pointer to buffer contains the formatted MAC address.
* @param size
* The format buffer size.
- * @param ea_to
+ * @param eth_addr
* A pointer to a ether_addr structure.
*/
static inline void
#define ETHER_TYPE_VLAN 0x8100 /**< IEEE 802.1Q VLAN tagging. */
#define ETHER_TYPE_1588 0x88F7 /**< IEEE 802.1AS 1588 Precise Time Protocol. */
#define ETHER_TYPE_SLOW 0x8809 /**< Slow protocols (LACP and Marker). */
+#define ETHER_TYPE_TEB 0x6558 /**< Transparent Ethernet Bridging. */
#define ETHER_VXLAN_HLEN (sizeof(struct udp_hdr) + sizeof(struct vxlan_hdr))
/**< VXLAN tunnel header length. */
struct ether_hdr *oh, *nh;
struct vlan_hdr *vh;
-#ifdef RTE_MBUF_REFCNT
/* Can't insert header if mbuf is shared */
if (rte_mbuf_refcnt_read(*m) > 1) {
struct rte_mbuf *copy;
rte_pktmbuf_free(*m);
*m = copy;
}
-#endif
+
oh = rte_pktmbuf_mtod(*m, struct ether_hdr *);
nh = (struct ether_hdr *)
rte_pktmbuf_prepend(*m, sizeof(struct vlan_hdr));