NDN-DPDK
High-Speed Named Data Networking Forwarder
All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Macros Pages
flowdef.h
Go to the documentation of this file.
1 #ifndef NDNDPDK_ETHFACE_FLOWDEF_H
2 #define NDNDPDK_ETHFACE_FLOWDEF_H
3 
6 #include "../iface/enum.h"
7 #include "locator.h"
8 
9 enum {
12 };
13 
15 typedef struct EthFlowDef {
16  struct rte_flow_attr attr;
17 
18  struct rte_flow_item pattern[EthFlowDef_NPatterns];
20  struct rte_flow_item_eth ethSpec;
21  struct rte_flow_item_eth ethMask;
22  struct rte_flow_item_vlan vlanSpec;
23  struct rte_flow_item_vlan vlanMask;
24  union {
25  struct {
26  struct rte_flow_item_ipv4 ip4Spec;
27  struct rte_flow_item_ipv4 ip4Mask;
28  };
29  struct {
30  struct rte_flow_item_ipv6 ip6Spec;
31  struct rte_flow_item_ipv6 ip6Mask;
32  };
33  };
34  struct rte_flow_item_udp udpSpec;
35  struct rte_flow_item_udp udpMask;
36  union {
37  struct {
38  struct rte_flow_item_raw rawSpec;
39  struct rte_flow_item_raw rawMask;
40  uint8_t rawSpecBuf[16];
41  uint8_t rawMaskBuf[16];
42  };
43  struct {
44  struct rte_flow_item_vxlan vxlanSpec;
45  struct rte_flow_item_vxlan vxlanMask;
46  struct rte_flow_item_eth innerEthSpec;
47  struct rte_flow_item_eth innerEthMask;
48  };
49  struct {
50  struct rte_flow_item_gtp gtpSpec;
51  struct rte_flow_item_gtp gtpMask;
52  };
53  };
54 
55  struct rte_flow_action actions[3];
56  union {
57  struct rte_flow_action_queue queueAct;
58  struct {
59  struct rte_flow_action_rss rssAct;
61  };
62  };
63  struct rte_flow_action_mark markAct;
65 
66 typedef enum EthFlowDefResult {
67  EthFlowDefResultValid = RTE_BIT32(0),
68  EthFlowDefResultMarked = RTE_BIT32(1),
70 
79 __attribute__((nonnull)) EthFlowDefResult
80 EthFlowDef_Prepare(EthFlowDef* flow, const EthLocator* loc, int variant, uint32_t mark,
81  const uint16_t queues[], int nQueues);
82 
83 __attribute__((nonnull)) void
84 EthFlowDef_DebugPrint(const EthFlowDef* flow, const char* msg);
85 
87 __attribute__((nonnull)) void
88 EthFlowDef_UpdateError(const EthFlowDef* flow, struct rte_flow_error* error);
89 
90 #endif // NDNDPDK_ETHFACE_FLOWDEF_H
struct vlanhdr __rte_packed
struct EthFlowDef EthFlowDef
EthFace rte_flow pattern.
void EthFlowDef_UpdateError(const EthFlowDef *flow, struct rte_flow_error *error)
Update error->cause to be an offset if it's within flow .
Definition: flowdef.c:328
@ EthFlowDef_MaxVariant
Definition: flowdef.h:10
@ EthFlowDef_NPatterns
Definition: flowdef.h:11
EthFlowDefResult
Definition: flowdef.h:66
@ EthFlowDefResultValid
Definition: flowdef.h:67
@ EthFlowDefResultMarked
Definition: flowdef.h:68
void EthFlowDef_DebugPrint(const EthFlowDef *flow, const char *msg)
Definition: flowdef.c:267
EthFlowDefResult EthFlowDef_Prepare(EthFlowDef *flow, const EthLocator *loc, int variant, uint32_t mark, const uint16_t queues[], int nQueues)
Prepare rte_flow definition from locator.
Definition: flowdef.c:248
@ MaxFaceRxThreads
Definition: enum.h:9
EthFace rte_flow pattern.
Definition: flowdef.h:15
struct rte_flow_item_ipv4 ip4Mask
Definition: flowdef.h:27
struct rte_flow_item_ipv4 ip4Spec
Definition: flowdef.h:26
struct rte_flow_item_raw rawMask
Definition: flowdef.h:39
uint16_t rssQueues[MaxFaceRxThreads]
Definition: flowdef.h:60
struct rte_flow_action_rss rssAct
Definition: flowdef.h:59
struct rte_flow_item_vlan vlanSpec
Definition: flowdef.h:22
struct rte_flow_item_vxlan vxlanMask
Definition: flowdef.h:45
struct rte_flow_action actions[3]
Definition: flowdef.h:55
struct rte_flow_action_mark markAct
Definition: flowdef.h:63
uint8_t rawMaskBuf[16]
Definition: flowdef.h:41
struct rte_flow_item_vxlan vxlanSpec
Definition: flowdef.h:44
struct rte_flow_item_vlan vlanMask
Definition: flowdef.h:23
struct rte_flow_item_eth innerEthMask
Definition: flowdef.h:47
struct rte_flow_item_ipv6 ip6Spec
Definition: flowdef.h:30
struct rte_flow_item_raw rawSpec
Definition: flowdef.h:38
uint16_t patternSpecLen[EthFlowDef_NPatterns]
Definition: flowdef.h:19
struct rte_flow_action_queue queueAct
Definition: flowdef.h:57
struct rte_flow_item_gtp gtpMask
Definition: flowdef.h:51
struct rte_flow_item pattern[EthFlowDef_NPatterns]
Definition: flowdef.h:18
struct rte_flow_item_eth innerEthSpec
Definition: flowdef.h:46
struct rte_flow_item_ipv6 ip6Mask
Definition: flowdef.h:31
struct rte_flow_attr attr
Definition: flowdef.h:16
struct rte_flow_item_eth ethSpec
Definition: flowdef.h:20
struct rte_flow_item_udp udpSpec
Definition: flowdef.h:34
struct rte_flow_item_eth ethMask
Definition: flowdef.h:21
struct rte_flow_item_udp udpMask
Definition: flowdef.h:35
struct rte_flow_item_gtp gtpSpec
Definition: flowdef.h:50
uint8_t rawSpecBuf[16]
Definition: flowdef.h:40
EthFace address information.
Definition: locator.h:10