Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
rte_ether.h(3)			     DPDK			rte_ether.h(3)

NAME
       rte_ether.h

SYNOPSIS
       #include	<assert.h>
       #include	<stdalign.h>
       #include	<stdint.h>
       #include	<stdio.h>
       #include	<rte_random.h>
       #include	<rte_mbuf.h>
       #include	<rte_byteorder.h>

   Data	Structures
       struct rte_ether_hdr
       struct rte_vlan_hdr

   Macros
       #define RTE_ETHER_ADDR_LEN   6
       #define RTE_ETHER_TYPE_LEN   2
       #define RTE_ETHER_CRC_LEN   4
       #define RTE_ETHER_HDR_LEN
       #define RTE_ETHER_MIN_LEN   64
       #define RTE_ETHER_MAX_LEN   1518
       #define RTE_ETHER_MTU
       #define RTE_VLAN_HLEN   4
       #define RTE_ETHER_MAX_VLAN_FRAME_LEN    (RTE_ETHER_MAX_LEN +
	   RTE_VLAN_HLEN)
       #define RTE_ETHER_MAX_JUMBO_FRAME_LEN	    0x3F00
       #define RTE_ETHER_MAX_VLAN_ID   4095
       #define RTE_ETHER_MIN_MTU   68
       #define RTE_ETHER_LOCAL_ADMIN_ADDR   0x02
       #define RTE_ETHER_GROUP_ADDR   0x01
       #define RTE_ETHER_ADDR_PRT_FMT	'%02X:%02X:%02X:%02X:%02X:%02X'
       #define RTE_ETHER_ADDR_BYTES(mac_addrs)
       #define RTE_ETHER_TYPE_IPV4   0x0800
       #define RTE_ETHER_TYPE_IPV6   0x86DD
       #define RTE_ETHER_TYPE_ARP   0x0806
       #define RTE_ETHER_TYPE_RARP   0x8035
       #define RTE_ETHER_TYPE_VLAN   0x8100
       #define RTE_ETHER_TYPE_QINQ   0x88A8
       #define RTE_ETHER_TYPE_QINQ1   0x9100
       #define RTE_ETHER_TYPE_QINQ2   0x9200
       #define RTE_ETHER_TYPE_QINQ3   0x9300
       #define RTE_ETHER_TYPE_PPPOE_DISCOVERY	0x8863
       #define RTE_ETHER_TYPE_PPPOE_SESSION   0x8864
       #define RTE_ETHER_TYPE_ETAG   0x893F
       #define RTE_ETHER_TYPE_1588   0x88F7
       #define RTE_ETHER_TYPE_SLOW   0x8809
       #define RTE_ETHER_TYPE_TEB   0x6558
       #define RTE_ETHER_TYPE_LLDP   0x88CC
       #define RTE_ETHER_TYPE_MPLS   0x8847
       #define RTE_ETHER_TYPE_MPLSM   0x8848
       #define RTE_ETHER_TYPE_ECPRI   0xAEFE

   Functions
       struct __rte_aligned (2)	rte_ether_addr
       static int rte_is_same_ether_addr (const	struct rte_ether_addr *ea1,
	   const struct	rte_ether_addr *ea2)
       static int rte_is_zero_ether_addr (const	struct rte_ether_addr *ea)
       static int rte_is_unicast_ether_addr (const struct rte_ether_addr *ea)
       static int rte_is_multicast_ether_addr (const struct rte_ether_addr
	   *ea)
       static int rte_is_broadcast_ether_addr (const struct rte_ether_addr
	   *ea)
       static int rte_is_universal_ether_addr (const struct rte_ether_addr
	   *ea)
       static int rte_is_local_admin_ether_addr	(const struct rte_ether_addr
	   *ea)
       static int rte_is_valid_assigned_ether_addr (const struct
	   rte_ether_addr *ea)
       void rte_eth_random_addr	(uint8_t *addr)
       static void rte_ether_addr_copy (const struct rte_ether_addr
	   *__restrict ea_from,	struct rte_ether_addr *__restrict ea_to)
       void rte_ether_format_addr (char	*buf, uint16_t size, const struct
	   rte_ether_addr *eth_addr)
       int rte_ether_unformat_addr (const char *str, struct rte_ether_addr
	   *eth_addr)
       static int rte_vlan_strip (struct rte_mbuf *m)
       static int rte_vlan_insert (struct rte_mbuf **m)

Detailed Description
       Ethernet	Helpers	in RTE

       Definition in file rte_ether.h.

Macro Definition Documentation
   #define RTE_ETHER_ADDR_LEN	6
       Length of Ethernet address.

       Definition at line 27 of	file rte_ether.h.

   #define RTE_ETHER_TYPE_LEN	2
       Length of Ethernet type field.

       Definition at line 28 of	file rte_ether.h.

   #define RTE_ETHER_CRC_LEN   4
       Length of Ethernet CRC.

       Definition at line 29 of	file rte_ether.h.

   #define RTE_ETHER_HDR_LEN
       Value:.PP
	   (RTE_ETHER_ADDR_LEN * 2 + \
	       RTE_ETHER_TYPE_LEN)
       Length of Ethernet header.

       Definition at line 32 of	file rte_ether.h.

   #define RTE_ETHER_MIN_LEN   64
       Minimum frame len, including CRC.

       Definition at line 33 of	file rte_ether.h.

   #define RTE_ETHER_MAX_LEN   1518
       Maximum frame len, including CRC.

       Definition at line 34 of	file rte_ether.h.

   #define RTE_ETHER_MTU
       Value:.PP
	   (RTE_ETHER_MAX_LEN -	RTE_ETHER_HDR_LEN - \
	       RTE_ETHER_CRC_LEN)
       Ethernet	MTU.

       Definition at line 37 of	file rte_ether.h.

   #define RTE_VLAN_HLEN   4
       VLAN (IEEE 802.1Q) header length.

       Definition at line 39 of	file rte_ether.h.

   #define RTE_ETHER_MAX_VLAN_FRAME_LEN	   (RTE_ETHER_MAX_LEN +	RTE_VLAN_HLEN)

       Maximum VLAN frame length (excluding QinQ), including CRC.

       Definition at line 41 of	file rte_ether.h.

   #define RTE_ETHER_MAX_JUMBO_FRAME_LEN	0x3F00
       Maximum Jumbo frame length, including CRC.

       Definition at line 45 of	file rte_ether.h.

   #define RTE_ETHER_MAX_VLAN_ID   4095
       Maximum VLAN ID.

       Definition at line 47 of	file rte_ether.h.

   #define RTE_ETHER_MIN_MTU   68
       Minimum MTU for IPv4 packets, see RFC 791.

       Definition at line 49 of	file rte_ether.h.

   #define RTE_ETHER_LOCAL_ADMIN_ADDR	0x02
       Locally assigned	Eth. address.

       Definition at line 85 of	file rte_ether.h.

   #define RTE_ETHER_GROUP_ADDR	  0x01
       Multicast or broadcast Eth. address.

       Definition at line 86 of	file rte_ether.h.

   #define RTE_ETHER_ADDR_PRT_FMT   '%02X:%02X:%02X:%02X:%02X:%02X'
       Macro to	print six-bytes	of MAC address in hex format

       Definition at line 248 of file rte_ether.h.

   #define RTE_ETHER_ADDR_BYTES(mac_addrs)
       Value:.PP
			    ((mac_addrs)->addr_bytes[0]), \
			    ((mac_addrs)->addr_bytes[1]), \
			    ((mac_addrs)->addr_bytes[2]), \
			    ((mac_addrs)->addr_bytes[3]), \
			    ((mac_addrs)->addr_bytes[4]), \
			    ((mac_addrs)->addr_bytes[5])
       Macro to	extract	the MAC	address	bytes from rte_ether_addr struct

       Definition at line 252 of file rte_ether.h.

   #define RTE_ETHER_TYPE_IPV4	 0x0800
       IPv4 Protocol.

       Definition at line 329 of file rte_ether.h.

   #define RTE_ETHER_TYPE_IPV6	 0x86DD
       IPv6 Protocol.

       Definition at line 330 of file rte_ether.h.

   #define RTE_ETHER_TYPE_ARP	0x0806
       Arp Protocol.

       Definition at line 331 of file rte_ether.h.

   #define RTE_ETHER_TYPE_RARP	 0x8035
       Reverse Arp Protocol.

       Definition at line 332 of file rte_ether.h.

   #define RTE_ETHER_TYPE_VLAN	 0x8100
       IEEE 802.1Q VLAN	tagging.

       Definition at line 333 of file rte_ether.h.

   #define RTE_ETHER_TYPE_QINQ	 0x88A8
       IEEE 802.1ad QinQ tagging.

       Definition at line 334 of file rte_ether.h.

   #define RTE_ETHER_TYPE_QINQ1	  0x9100
       Deprecated QinQ VLAN.

       Definition at line 335 of file rte_ether.h.

   #define RTE_ETHER_TYPE_QINQ2	  0x9200
       Deprecated QinQ VLAN.

       Definition at line 336 of file rte_ether.h.

   #define RTE_ETHER_TYPE_QINQ3	  0x9300
       Deprecated QinQ VLAN.

       Definition at line 337 of file rte_ether.h.

   #define RTE_ETHER_TYPE_PPPOE_DISCOVERY   0x8863
       PPPoE Discovery Stage.

       Definition at line 338 of file rte_ether.h.

   #define RTE_ETHER_TYPE_PPPOE_SESSION	  0x8864
       PPPoE Session Stage.

       Definition at line 339 of file rte_ether.h.

   #define RTE_ETHER_TYPE_ETAG	 0x893F
       IEEE 802.1BR E-Tag.

       Definition at line 340 of file rte_ether.h.

   #define RTE_ETHER_TYPE_1588	 0x88F7
       IEEE 802.1AS 1588 Precise Time Protocol.

       Definition at line 342 of file rte_ether.h.

   #define RTE_ETHER_TYPE_SLOW	 0x8809
       Slow protocols (LACP and	Marker).

       Definition at line 343 of file rte_ether.h.

   #define RTE_ETHER_TYPE_TEB	0x6558
       Transparent Ethernet Bridging.

       Definition at line 344 of file rte_ether.h.

   #define RTE_ETHER_TYPE_LLDP	 0x88CC
       LLDP Protocol.

       Definition at line 345 of file rte_ether.h.

   #define RTE_ETHER_TYPE_MPLS	 0x8847
       MPLS ethertype.

       Definition at line 346 of file rte_ether.h.

   #define RTE_ETHER_TYPE_MPLSM	  0x8848
       MPLS multicast ethertype.

       Definition at line 347 of file rte_ether.h.

   #define RTE_ETHER_TYPE_ECPRI	  0xAEFE
       eCPRI ethertype (.1Q supported).

       Definition at line 348 of file rte_ether.h.

Function Documentation
   struct __rte_aligned	(2)
       Ethernet	address: A universally administered address is uniquely
       assigned	to a device by its manufacturer. The first three octets	(in
       transmission order) contain the Organizationally	Unique Identifier
       (OUI). The following three (MAC-48 and EUI-48) octets are assigned by
       that organization with the only constraint of uniqueness. A locally
       administered address is assigned	to a device by a network administrator
       and does	not contain OUIs. See
       http://standards.ieee.org/regauth/groupmac/tutorial.html	< Addr bytes
       in tx order

       Definition at line 1 of file rte_ether.h.

   static int rte_is_same_ether_addr (const struct rte_ether_addr * ea1, const
       struct rte_ether_addr * ea2) [inline],  [static]
       Check if	two Ethernet addresses are the same.

       Parameters
	   ea1 A pointer to the	first ether_addr structure containing the
	   ethernet address.
	   ea2 A pointer to the	second ether_addr structure containing the
	   ethernet address.

       Returns
	   True	(1) if the given two ethernet address are the same; False (0)
	   otherwise.

       Definition at line 102 of file rte_ether.h.

   static int rte_is_zero_ether_addr (const struct rte_ether_addr * ea)
       [inline],  [static]
       Check if	an Ethernet address is filled with zeros.

       Parameters
	   ea A	pointer	to a ether_addr	structure containing the ethernet
	   address to check.

       Returns
	   True	(1) if the given ethernet address is filled with zeros;	false
	   (0) otherwise.

       Definition at line 121 of file rte_ether.h.

   static int rte_is_unicast_ether_addr	(const struct rte_ether_addr * ea)
       [inline],  [static]
       Check if	an Ethernet address is a unicast address.

       Parameters
	   ea A	pointer	to a ether_addr	structure containing the ethernet
	   address to check.

       Returns
	   True	(1) if the given ethernet address is a unicast address;	false
	   (0) otherwise.

       Definition at line 138 of file rte_ether.h.

   static int rte_is_multicast_ether_addr (const struct	rte_ether_addr * ea)
       [inline],  [static]
       Check if	an Ethernet address is a multicast address.

       Parameters
	   ea A	pointer	to a ether_addr	structure containing the ethernet
	   address to check.

       Returns
	   True	(1) if the given ethernet address is a multicast address;
	   false (0) otherwise.

       Definition at line 153 of file rte_ether.h.

   static int rte_is_broadcast_ether_addr (const struct	rte_ether_addr * ea)
       [inline],  [static]
       Check if	an Ethernet address is a broadcast address.

       Parameters
	   ea A	pointer	to a ether_addr	structure containing the ethernet
	   address to check.

       Returns
	   True	(1) if the given ethernet address is a broadcast address;
	   false (0) otherwise.

       Definition at line 168 of file rte_ether.h.

   static int rte_is_universal_ether_addr (const struct	rte_ether_addr * ea)
       [inline],  [static]
       Check if	an Ethernet address is a universally assigned address.

       Parameters
	   ea A	pointer	to a ether_addr	structure containing the ethernet
	   address to check.

       Returns
	   True	(1) if the given ethernet address is a universally assigned
	   address; false (0) otherwise.

       Definition at line 185 of file rte_ether.h.

   static int rte_is_local_admin_ether_addr (const struct rte_ether_addr * ea)
       [inline],  [static]
       Check if	an Ethernet address is a locally assigned address.

       Parameters
	   ea A	pointer	to a ether_addr	structure containing the ethernet
	   address to check.

       Returns
	   True	(1) if the given ethernet address is a locally assigned
	   address; false (0) otherwise.

       Definition at line 200 of file rte_ether.h.

   static int rte_is_valid_assigned_ether_addr (const struct rte_ether_addr *
       ea) [inline],  [static]
       Check if	an Ethernet address is a valid address.	Checks that the
       address is a unicast address and	is not filled with zeros.

       Parameters
	   ea A	pointer	to a ether_addr	structure containing the ethernet
	   address to check.

       Returns
	   True	(1) if the given ethernet address is valid; false (0)
	   otherwise.

       Definition at line 216 of file rte_ether.h.

   void	rte_eth_random_addr (uint8_t * addr)
       Generate	a random Ethernet address that is locally administered and not
       multicast.

       Parameters
	   addr	A pointer to Ethernet address.

   static void rte_ether_addr_copy (const struct rte_ether_addr	*__restrict
       ea_from,	struct rte_ether_addr *__restrict ea_to) [inline],  [static]
       Copy an Ethernet	address.

       Parameters
	   ea_from A pointer to	a ether_addr structure holding the Ethernet
	   address to copy.
	   ea_to A pointer to a	ether_addr structure where to copy the
	   Ethernet address.

       Definition at line 239 of file rte_ether.h.

   void	rte_ether_format_addr (char * buf, uint16_t size, const	struct
       rte_ether_addr *	eth_addr)
       Format 48bits Ethernet address in pattern xx:xx:xx:xx:xx:xx.

       Parameters
	   buf A pointer to buffer contains the	formatted MAC address.
	   size	The format buffer size.
	   eth_addr A pointer to a ether_addr structure.

   int rte_ether_unformat_addr (const char * str, struct rte_ether_addr	*
       eth_addr)
       Convert string with Ethernet address to an ether_addr.

       Parameters
	   str A pointer to buffer contains the	formatted MAC address. Accepts
	   either byte or word format separated	by colon, hyphen or period.

       The example formats are:	XX:XX:XX:XX:XX:XX - Canonical form XX-XX-XX-
       XX-XX-XX	- Windows and IEEE 802 XXXX.XXXX.XXXX -	Cisco where XX is a
       hex digit: 0-9, a-f, or A-F. In the byte	format,	leading	zeros are
       optional.

       Parameters
	   eth_addr A pointer to a ether_addr structure.

       Returns
	   0 if	successful -1 and sets rte_errno if invalid string

   static int rte_vlan_strip (struct rte_mbuf *	m) [inline],  [static]
       Extract VLAN tag	information into mbuf

       Software	version	of VLAN	stripping

       Parameters
	   m The packet	mbuf.

       Returns

	    0:	Success

	    1:	not a vlan packet

       Definition at line 361 of file rte_ether.h.

   static int rte_vlan_insert (struct rte_mbuf ** m) [inline],	[static]
       Insert VLAN tag into mbuf.

       Software	version	of VLAN	unstripping

       Parameters
	   m The packet	mbuf.

       Returns

	    0:	 On success -EPERM: mbuf is shared overwriting would be	unsafe
	     -ENOSPC: not enough headroom in mbuf

       Definition at line 393 of file rte_ether.h.

Author
       Generated automatically by Doxygen for DPDK from	the source code.

Version	25.11.0			Thu Jun	11 2026			rte_ether.h(3)

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=RTE_ETHER_MAX_JUMBO_FRAME_LEN&sektion=3&manpath=FreeBSD+Ports+15.1.quarterly>

home | help