DPDK
16.04.0
|
#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 | ether_addr |
struct | ether_hdr |
struct | vlan_hdr |
struct | vxlan_hdr |
Macros | |
#define | ETHER_ADDR_LEN 6 |
#define | ETHER_TYPE_LEN 2 |
#define | ETHER_CRC_LEN 4 |
#define | ETHER_HDR_LEN (ETHER_ADDR_LEN * 2 + ETHER_TYPE_LEN) |
#define | ETHER_MIN_LEN 64 |
#define | ETHER_MAX_LEN 1518 |
#define | ETHER_MTU (ETHER_MAX_LEN - ETHER_HDR_LEN - ETHER_CRC_LEN) |
#define | ETHER_MAX_VLAN_FRAME_LEN (ETHER_MAX_LEN + 4) |
#define | ETHER_MAX_JUMBO_FRAME_LEN 0x3F00 |
#define | ETHER_MAX_VLAN_ID 4095 |
#define | ETHER_MIN_MTU 68 |
#define | ETHER_LOCAL_ADMIN_ADDR 0x02 |
#define | ETHER_GROUP_ADDR 0x01 |
#define | ETHER_TYPE_IPv4 0x0800 |
#define | ETHER_TYPE_IPv6 0x86DD |
#define | ETHER_TYPE_ARP 0x0806 |
#define | ETHER_TYPE_RARP 0x8035 |
#define | ETHER_TYPE_VLAN 0x8100 |
#define | ETHER_TYPE_1588 0x88F7 |
#define | ETHER_TYPE_SLOW 0x8809 |
#define | ETHER_TYPE_TEB 0x6558 |
#define | ETHER_VXLAN_HLEN (sizeof(struct udp_hdr) + sizeof(struct vxlan_hdr)) |
Functions | |
static int | is_same_ether_addr (const struct ether_addr *ea1, const struct ether_addr *ea2) |
static int | is_zero_ether_addr (const struct ether_addr *ea) |
static int | is_unicast_ether_addr (const struct ether_addr *ea) |
static int | is_multicast_ether_addr (const struct ether_addr *ea) |
static int | is_broadcast_ether_addr (const struct ether_addr *ea) |
static int | is_universal_ether_addr (const struct ether_addr *ea) |
static int | is_local_admin_ether_addr (const struct ether_addr *ea) |
static int | is_valid_assigned_ether_addr (const struct ether_addr *ea) |
static void | eth_random_addr (uint8_t *addr) |
static void | ether_addr_copy (const struct ether_addr *ea_from, struct ether_addr *ea_to) |
static void | ether_format_addr (char *buf, uint16_t size, const struct ether_addr *eth_addr) |
static int | rte_vlan_strip (struct rte_mbuf *m) |
static int | rte_vlan_insert (struct rte_mbuf **m) |
Ethernet Helpers in RTE
Definition in file rte_ether.h.
#define ETHER_ADDR_LEN 6 |
Length of Ethernet address.
Definition at line 55 of file rte_ether.h.
#define ETHER_TYPE_LEN 2 |
Length of Ethernet type field.
Definition at line 56 of file rte_ether.h.
#define ETHER_CRC_LEN 4 |
Length of Ethernet CRC.
Definition at line 57 of file rte_ether.h.
#define ETHER_HDR_LEN (ETHER_ADDR_LEN * 2 + ETHER_TYPE_LEN) |
Length of Ethernet header.
Definition at line 58 of file rte_ether.h.
#define ETHER_MIN_LEN 64 |
Minimum frame len, including CRC.
Definition at line 60 of file rte_ether.h.
#define ETHER_MAX_LEN 1518 |
Maximum frame len, including CRC.
Definition at line 61 of file rte_ether.h.
#define ETHER_MTU (ETHER_MAX_LEN - ETHER_HDR_LEN - ETHER_CRC_LEN) |
Ethernet MTU.
Definition at line 62 of file rte_ether.h.
#define ETHER_MAX_VLAN_FRAME_LEN (ETHER_MAX_LEN + 4) |
Maximum VLAN frame length, including CRC.
Definition at line 65 of file rte_ether.h.
#define ETHER_MAX_JUMBO_FRAME_LEN 0x3F00 |
Maximum Jumbo frame length, including CRC.
Definition at line 68 of file rte_ether.h.
#define ETHER_MAX_VLAN_ID 4095 |
Maximum VLAN ID.
Definition at line 71 of file rte_ether.h.
#define ETHER_MIN_MTU 68 |
Minimum MTU for IPv4 packets, see RFC 791.
Definition at line 73 of file rte_ether.h.
#define ETHER_LOCAL_ADMIN_ADDR 0x02 |
Locally assigned Eth. address.
Definition at line 90 of file rte_ether.h.
#define ETHER_GROUP_ADDR 0x01 |
Multicast or broadcast Eth. address.
Definition at line 91 of file rte_ether.h.
#define ETHER_TYPE_IPv4 0x0800 |
IPv4 Protocol.
Definition at line 327 of file rte_ether.h.
#define ETHER_TYPE_IPv6 0x86DD |
IPv6 Protocol.
Definition at line 328 of file rte_ether.h.
#define ETHER_TYPE_ARP 0x0806 |
Arp Protocol.
Definition at line 329 of file rte_ether.h.
#define ETHER_TYPE_RARP 0x8035 |
Reverse Arp Protocol.
Definition at line 330 of file rte_ether.h.
#define ETHER_TYPE_VLAN 0x8100 |
IEEE 802.1Q VLAN tagging.
Definition at line 331 of file rte_ether.h.
#define ETHER_TYPE_1588 0x88F7 |
IEEE 802.1AS 1588 Precise Time Protocol.
Definition at line 332 of file rte_ether.h.
#define ETHER_TYPE_SLOW 0x8809 |
Slow protocols (LACP and Marker).
Definition at line 333 of file rte_ether.h.
#define ETHER_TYPE_TEB 0x6558 |
Transparent Ethernet Bridging.
Definition at line 334 of file rte_ether.h.
VXLAN tunnel header length.
Definition at line 336 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 107 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 127 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 146 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 161 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 176 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 194 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 209 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 225 of file rte_ether.h.
|
inlinestatic |
Generate a random Ethernet address that is locally administered and not multicast.
addr | A pointer to Ethernet address. |
Definition at line 236 of file rte_ether.h.
|
inlinestatic |
Fast 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 254 of file rte_ether.h.
|
inlinestatic |
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. |
Definition at line 284 of file rte_ether.h.
|
inlinestatic |
Extract VLAN tag information into mbuf
Software version of VLAN stripping
m | The packet mbuf. |
Definition at line 350 of file rte_ether.h.
|
inlinestatic |
Insert VLAN tag into mbuf.
Software version of VLAN unstripping
m | The packet mbuf. |
Definition at line 381 of file rte_ether.h.