DPDK 21.11.9
|
#include <stdint.h>
#include <stdio.h>
#include <rte_memcpy.h>
#include <rte_random.h>
#include <rte_mbuf.h>
#include <rte_byteorder.h>
Go to the source code of this file.
Data Structures | |
struct | rte_ether_addr |
struct | rte_ether_hdr |
struct | rte_vlan_hdr |
Functions | |
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) |
Variables | |
uint8_t | addr_bytes [RTE_ETHER_ADDR_LEN] |
struct rte_ether_addr | dst_addr |
struct rte_ether_addr | src_addr |
rte_be16_t | ether_type |
Ethernet Helpers in RTE
Definition in file rte_ether.h.
#define RTE_ETHER_ADDR_LEN 6 |
Length of Ethernet address.
Definition at line 26 of file rte_ether.h.
#define RTE_ETHER_TYPE_LEN 2 |
Length of Ethernet type field.
Definition at line 27 of file rte_ether.h.
#define RTE_ETHER_CRC_LEN 4 |
Length of Ethernet CRC.
Definition at line 28 of file rte_ether.h.
#define RTE_ETHER_HDR_LEN |
Length of Ethernet header.
Definition at line 31 of file rte_ether.h.
#define RTE_ETHER_MIN_LEN 64 |
Minimum frame len, including CRC.
Definition at line 32 of file rte_ether.h.
#define RTE_ETHER_MAX_LEN 1518 |
Maximum frame len, including CRC.
Definition at line 33 of file rte_ether.h.
#define RTE_ETHER_MTU |
Ethernet MTU.
Definition at line 36 of file rte_ether.h.
#define RTE_VLAN_HLEN 4 |
VLAN (IEEE 802.1Q) header length.
Definition at line 38 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 40 of file rte_ether.h.
#define RTE_ETHER_MAX_JUMBO_FRAME_LEN 0x3F00 |
Maximum Jumbo frame length, including CRC.
Definition at line 44 of file rte_ether.h.
#define RTE_ETHER_MAX_VLAN_ID 4095 |
Maximum VLAN ID.
Definition at line 46 of file rte_ether.h.
#define RTE_ETHER_MIN_MTU 68 |
Minimum MTU for IPv4 packets, see RFC 791.
Definition at line 48 of file rte_ether.h.
#define RTE_ETHER_LOCAL_ADMIN_ADDR 0x02 |
Locally assigned Eth. address.
Definition at line 79 of file rte_ether.h.
#define RTE_ETHER_GROUP_ADDR 0x01 |
Multicast or broadcast Eth. address.
Definition at line 80 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 242 of file rte_ether.h.
#define RTE_ETHER_ADDR_BYTES | ( | mac_addrs | ) |
Macro to extract the MAC address bytes from rte_ether_addr struct
Definition at line 246 of file rte_ether.h.
#define RTE_ETHER_TYPE_IPV4 0x0800 |
IPv4 Protocol.
Definition at line 307 of file rte_ether.h.
#define RTE_ETHER_TYPE_IPV6 0x86DD |
IPv6 Protocol.
Definition at line 308 of file rte_ether.h.
#define RTE_ETHER_TYPE_ARP 0x0806 |
#define RTE_ETHER_TYPE_RARP 0x8035 |
Reverse Arp Protocol.
Definition at line 310 of file rte_ether.h.
#define RTE_ETHER_TYPE_VLAN 0x8100 |
IEEE 802.1Q VLAN tagging.
Definition at line 311 of file rte_ether.h.
#define RTE_ETHER_TYPE_QINQ 0x88A8 |
IEEE 802.1ad QinQ tagging.
Definition at line 312 of file rte_ether.h.
#define RTE_ETHER_TYPE_QINQ1 0x9100 |
Deprecated QinQ VLAN.
Definition at line 313 of file rte_ether.h.
#define RTE_ETHER_TYPE_QINQ2 0x9200 |
Deprecated QinQ VLAN.
Definition at line 314 of file rte_ether.h.
#define RTE_ETHER_TYPE_QINQ3 0x9300 |
Deprecated QinQ VLAN.
Definition at line 315 of file rte_ether.h.
#define RTE_ETHER_TYPE_PPPOE_DISCOVERY 0x8863 |
PPPoE Discovery Stage.
Definition at line 316 of file rte_ether.h.
#define RTE_ETHER_TYPE_PPPOE_SESSION 0x8864 |
PPPoE Session Stage.
Definition at line 317 of file rte_ether.h.
#define RTE_ETHER_TYPE_ETAG 0x893F |
IEEE 802.1BR E-Tag.
Definition at line 318 of file rte_ether.h.
#define RTE_ETHER_TYPE_1588 0x88F7 |
IEEE 802.1AS 1588 Precise Time Protocol.
Definition at line 320 of file rte_ether.h.
#define RTE_ETHER_TYPE_SLOW 0x8809 |
Slow protocols (LACP and Marker).
Definition at line 321 of file rte_ether.h.
#define RTE_ETHER_TYPE_TEB 0x6558 |
Transparent Ethernet Bridging.
Definition at line 322 of file rte_ether.h.
#define RTE_ETHER_TYPE_LLDP 0x88CC |
LLDP Protocol.
Definition at line 323 of file rte_ether.h.
#define RTE_ETHER_TYPE_MPLS 0x8847 |
MPLS ethertype.
Definition at line 324 of file rte_ether.h.
#define RTE_ETHER_TYPE_MPLSM 0x8848 |
MPLS multicast ethertype.
Definition at line 325 of file rte_ether.h.
#define RTE_ETHER_TYPE_ECPRI 0xAEFE |
eCPRI ethertype (.1Q supported).
Definition at line 326 of file rte_ether.h.
|
inlinestatic |
Check if two Ethernet addresses are the same.
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. |
Definition at line 96 of file rte_ether.h.
|
inlinestatic |
Check if an Ethernet address is filled with zeros.
ea | A pointer to a ether_addr structure containing the ethernet address to check. |
Definition at line 115 of file rte_ether.h.
|
inlinestatic |
Check if an Ethernet address is a unicast address.
ea | A pointer to a ether_addr structure containing the ethernet address to check. |
Definition at line 132 of file rte_ether.h.
|
inlinestatic |
Check if an Ethernet address is a multicast address.
ea | A pointer to a ether_addr structure containing the ethernet address to check. |
Definition at line 147 of file rte_ether.h.
|
inlinestatic |
Check if an Ethernet address is a broadcast address.
ea | A pointer to a ether_addr structure containing the ethernet address to check. |
Definition at line 162 of file rte_ether.h.
|
inlinestatic |
Check if an Ethernet address is a universally assigned address.
ea | A pointer to a ether_addr structure containing the ethernet address to check. |
Definition at line 179 of file rte_ether.h.
|
inlinestatic |
Check if an Ethernet address is a locally assigned address.
ea | A pointer to a ether_addr structure containing the ethernet address to check. |
Definition at line 194 of file rte_ether.h.
|
inlinestatic |
Check if an Ethernet address is a valid address. Checks that the address is a unicast address and is not filled with zeros.
ea | A pointer to a ether_addr structure containing the ethernet address to check. |
Definition at line 210 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.
addr | A pointer to Ethernet address. |
|
inlinestatic |
Copy an Ethernet address.
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 233 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.
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.
str | A pointer to buffer contains the formatted MAC address. The supported formats are: XX:XX:XX:XX:XX:XX or XXXX:XXXX:XXXX where XX is a hex digit: 0-9, a-f, or A-F. |
eth_addr | A pointer to a ether_addr structure. |
|
inlinestatic |
Extract VLAN tag information into mbuf
Software version of VLAN stripping
m | The packet mbuf. |
Definition at line 339 of file rte_ether.h.
|
inlinestatic |
Insert VLAN tag into mbuf.
Software version of VLAN unstripping
m | The packet mbuf. |
Definition at line 371 of file rte_ether.h.
uint8_t addr_bytes[RTE_ETHER_ADDR_LEN] |
Addr bytes in tx order
Definition at line 0 of file rte_ether.h.
struct rte_ether_addr dst_addr |
Destination address.
Definition at line 0 of file rte_ether.h.
struct rte_ether_addr src_addr |
Source address.
Definition at line 1 of file rte_ether.h.
rte_be16_t ether_type |
Frame type.
Definition at line 2 of file rte_ether.h.