NDN-DPDK
High-Speed Named Data Networking Forwarder
All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Macros Pages
api.h
Go to the documentation of this file.
1 #ifndef NDNDPDK_BPF_XDP_API_H
2 #define NDNDPDK_BPF_XDP_API_H
3 
6 #include "../../csrc/ethface/xdp-locator.h"
7 #include "../../csrc/ndni/an.h"
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 
19 struct vlanhdr {
20  uint16_t vlan_tci;
21  uint16_t eth_proto;
23 
24 struct vxlanhdr {
25  uint8_t flags;
26  uint8_t rsvd0[3];
27  uint8_t vni[3];
28  uint8_t rsvd1;
29 } __rte_packed;
30 
31 typedef struct VxlanInnerHdr {
32  struct vxlanhdr vx;
33  struct ethhdr eth;
35 
36 typedef struct GtpInnerHdr {
38  struct iphdr ipv4;
39  struct udphdr udp;
41 
42 enum {
43  UDPPortVXLAN = 4789,
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 GtpInnerHdr GtpInnerHdr
struct VxlanInnerHdr VxlanInnerHdr
struct vlanhdr __rte_packed
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