NDN-DPDK
High-Speed Named Data Networking Forwarder
Loading...
Searching...
No Matches
api.h
Go to the documentation of this file.
1#ifndef NDNDPDK_BPF_XDP_API_H
2#define NDNDPDK_BPF_XDP_API_H
3
5
8
9#include <linux/bpf.h>
10#include <linux/if_ether.h>
11#include <linux/in.h>
12#include <linux/ip.h>
13#include <linux/ipv6.h>
14#include <linux/udp.h>
15
16#include <bpf/bpf_endian.h>
17#include <bpf/bpf_helpers.h>
18
19struct __rte_packed_begin vlanhdr {
20 uint16_t vlan_tci;
21 uint16_t eth_proto;
23
24struct __rte_packed_begin vxlanhdr {
25 uint8_t flags;
26 uint8_t rsvd0[3];
27 uint8_t vni[3];
28 uint8_t rsvd1;
30
31typedef struct __rte_packed_begin VxlanInnerHdr {
32 struct vxlanhdr vx;
33 struct ethhdr eth;
35
36typedef struct __rte_packed_begin GtpInnerHdr {
38 struct iphdr ipv4;
39 struct udphdr udp;
41
42enum {
44 UDPPortGTP = 2152,
45};
46
47#define PacketPtrAs_(ptr, size, ...) \
48 __extension__({ \
49 if ((const uint8_t*)ptr + (size_t)(size) > (const uint8_t*)(long)ctx->data_end) { \
50 return XDP_DROP; \
51 } \
52 pkt; \
53 })
54
67#define PacketPtrAs(ptr, ...) PacketPtrAs_((ptr), ##__VA_ARGS__, sizeof(*(ptr)))
68
69#endif // NDNDPDK_BPF_XDP_API_H
@ UDPPortGTP
Definition api.h:44
@ UDPPortVXLAN
Definition api.h:43
struct __rte_packed_begin vlanhdr __rte_packed_end
GTP-U header with PDU session container.
Definition xdp-locator.h:46
Definition api.h:36
EthGtpHdr gtp
Definition api.h:37
struct iphdr ipv4
Definition api.h:38
struct udphdr udp
Definition api.h:39
Definition api.h:31
struct ethhdr eth
Definition api.h:33
struct vxlanhdr vx
Definition api.h:32
Definition api.h:19
uint16_t vlan_tci
Definition api.h:20
uint16_t eth_proto
Definition api.h:21
Definition api.h:24
uint8_t flags
Definition api.h:25
uint8_t vni[3]
Definition api.h:27
uint8_t rsvd1
Definition api.h:28
uint8_t rsvd0[3]
Definition api.h:26