FD.io VPP  v21.01.1
Vector Packet Processing
flow.h File Reference
+ Include dependency graph for flow.h:
+ This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Data Structures

struct  ip_port_and_mask_t
 
struct  ip_prot_and_mask_t
 
struct  vnet_flow_t
 
struct  vnet_flow_range_t
 
struct  vnet_flow_main_t
 

Macros

#define foreach_flow_type
 
#define foreach_flow_entry_ethernet   _fe(ethernet_header_t, eth_hdr)
 
#define foreach_flow_entry_ip4
 
#define foreach_flow_entry_ip6
 
#define foreach_flow_entry_ip4_l2tpv3oip
 
#define foreach_flow_entry_ip4_ipsec_esp
 
#define foreach_flow_entry_ip4_ipsec_ah
 
#define foreach_flow_entry_ip4_n_tuple
 
#define foreach_flow_entry_ip6_n_tuple
 
#define foreach_flow_entry_ip4_n_tuple_tagged
 
#define foreach_flow_entry_ip6_n_tuple_tagged
 
#define foreach_flow_entry_ip4_vxlan
 
#define foreach_flow_entry_ip6_vxlan
 
#define foreach_flow_entry_ip4_gtpc
 
#define foreach_flow_entry_ip4_gtpu
 
#define foreach_flow_action
 
#define foreach_flow_error
 
#define foreach_flow_rss_types
 
#define foreach_rss_function
 

Enumerations

enum  vnet_flow_action_t { foreach_flow_action }
 
enum  vnet_flow_error_t { VNET_FLOW_NO_ERROR = 0, foreach_flow_error }
 
enum  vnet_flow_type_t { VNET_FLOW_TYPE_UNKNOWN, VNET_FLOW_N_TYPES }
 
enum  vnet_rss_function_t { VNET_RSS_N_TYPES }
 

Functions

int vnet_flow_get_range (vnet_main_t *vnm, char *owner, u32 count, u32 *start)
 
int vnet_flow_add (vnet_main_t *vnm, vnet_flow_t *flow, u32 *flow_index)
 
int vnet_flow_enable (vnet_main_t *vnm, u32 flow_index, u32 hw_if_index)
 
int vnet_flow_disable (vnet_main_t *vnm, u32 flow_index, u32 hw_if_index)
 
int vnet_flow_del (vnet_main_t *vnm, u32 flow_index)
 
vnet_flow_tvnet_get_flow (u32 flow_index)
 

Variables

 foreach_flow_type
 
vnet_flow_main_t flow_main
 
format_function_t format_flow_actions
 
format_function_t format_flow_enabled_hw
 

Macro Definition Documentation

◆ foreach_flow_action

#define foreach_flow_action
Value:
_(0, COUNT, "count") \
_(1, MARK, "mark") \
_(2, BUFFER_ADVANCE, "buffer-advance") \
_(3, REDIRECT_TO_NODE, "redirect-to-node") \
_(4, REDIRECT_TO_QUEUE, "redirect-to-queue") \
_(5, RSS, "rss") \
_(6, DROP, "drop")
DROP
Definition: error.def:41

Definition at line 108 of file flow.h.

◆ foreach_flow_entry_ethernet

#define foreach_flow_entry_ethernet   _fe(ethernet_header_t, eth_hdr)

Definition at line 47 of file flow.h.

◆ foreach_flow_entry_ip4

#define foreach_flow_entry_ip4
Value:
vl_api_ip_proto_t protocol
Definition: lb_types.api:72
vl_api_mac_address_t src_addr
Definition: flow_types.api:64
vl_api_mac_address_t dst_addr
Definition: flow_types.api:65

Definition at line 50 of file flow.h.

◆ foreach_flow_entry_ip4_gtpc

#define foreach_flow_entry_ip4_gtpc
Value:
foreach_flow_entry_ip4_n_tuple \
_fe(u32, teid)
unsigned int u32
Definition: types.h:88
u32 teid
Definition: flow_types.api:182

Definition at line 100 of file flow.h.

◆ foreach_flow_entry_ip4_gtpu

#define foreach_flow_entry_ip4_gtpu
Value:
foreach_flow_entry_ip4_n_tuple \
_fe(u32, teid)
unsigned int u32
Definition: types.h:88
u32 teid
Definition: flow_types.api:182

Definition at line 104 of file flow.h.

◆ foreach_flow_entry_ip4_ipsec_ah

#define foreach_flow_entry_ip4_ipsec_ah
Value:
foreach_flow_entry_ip4 \
_fe(u32, spi)
unsigned int u32
Definition: types.h:88
u32 spi
Definition: flow_types.api:140

Definition at line 68 of file flow.h.

◆ foreach_flow_entry_ip4_ipsec_esp

#define foreach_flow_entry_ip4_ipsec_esp
Value:
foreach_flow_entry_ip4 \
_fe(u32, spi)
unsigned int u32
Definition: types.h:88
u32 spi
Definition: flow_types.api:140

Definition at line 64 of file flow.h.

◆ foreach_flow_entry_ip4_l2tpv3oip

#define foreach_flow_entry_ip4_l2tpv3oip
Value:
foreach_flow_entry_ip4 \
unsigned int u32
Definition: types.h:88
u32 session_id
Definition: flow_types.api:131

Definition at line 60 of file flow.h.

◆ foreach_flow_entry_ip4_n_tuple

#define foreach_flow_entry_ip4_n_tuple
Value:
foreach_flow_entry_ip4 \
vl_api_ip_port_and_mask_t dst_port
Definition: flow_types.api:92
vl_api_ip_port_and_mask_t src_port
Definition: flow_types.api:91

Definition at line 72 of file flow.h.

◆ foreach_flow_entry_ip4_n_tuple_tagged

#define foreach_flow_entry_ip4_n_tuple_tagged
Value:
foreach_flow_entry_ip4 \
vl_api_ip_port_and_mask_t dst_port
Definition: flow_types.api:92
vl_api_ip_port_and_mask_t src_port
Definition: flow_types.api:91

Definition at line 82 of file flow.h.

◆ foreach_flow_entry_ip4_vxlan

#define foreach_flow_entry_ip4_vxlan
Value:
foreach_flow_entry_ip4_n_tuple \
_fe(u16, vni)
u16 vni
Definition: flow_types.api:160
unsigned short u16
Definition: types.h:57

Definition at line 92 of file flow.h.

◆ foreach_flow_entry_ip6

#define foreach_flow_entry_ip6
Value:
vl_api_ip_proto_t protocol
Definition: lb_types.api:72
vl_api_mac_address_t src_addr
Definition: flow_types.api:64
vl_api_mac_address_t dst_addr
Definition: flow_types.api:65

Definition at line 55 of file flow.h.

◆ foreach_flow_entry_ip6_n_tuple

#define foreach_flow_entry_ip6_n_tuple
Value:
foreach_flow_entry_ip6 \
vl_api_ip_port_and_mask_t dst_port
Definition: flow_types.api:92
vl_api_ip_port_and_mask_t src_port
Definition: flow_types.api:91

Definition at line 77 of file flow.h.

◆ foreach_flow_entry_ip6_n_tuple_tagged

#define foreach_flow_entry_ip6_n_tuple_tagged
Value:
foreach_flow_entry_ip6 \
vl_api_ip_port_and_mask_t dst_port
Definition: flow_types.api:92
vl_api_ip_port_and_mask_t src_port
Definition: flow_types.api:91

Definition at line 87 of file flow.h.

◆ foreach_flow_entry_ip6_vxlan

#define foreach_flow_entry_ip6_vxlan
Value:
foreach_flow_entry_ip6_n_tuple \
_fe(u16, vni)
u16 vni
Definition: flow_types.api:160
unsigned short u16
Definition: types.h:57

Definition at line 96 of file flow.h.

◆ foreach_flow_error

#define foreach_flow_error
Value:
_( -1, NOT_SUPPORTED, "not supported") \
_( -2, ALREADY_DONE, "already done") \
_( -3, ALREADY_EXISTS, "already exists") \
_( -4, NO_SUCH_ENTRY, "no such entry") \
_( -5, NO_SUCH_INTERFACE, "no such interface") \
_( -6, INTERNAL, "internal error")

Definition at line 124 of file flow.h.

◆ foreach_flow_rss_types

#define foreach_flow_rss_types
Value:
_(0, FRAG_IPV4, "ipv4-frag") \
_(1, IPV4_TCP, "ipv4-tcp") \
_(2, IPV4_UDP, "ipv4-udp") \
_(3, IPV4_SCTP, "ipv4-sctp") \
_(4, IPV4_OTHER, "ipv4-other") \
_(5, IPV4, "ipv4") \
_(6, IPV6_TCP_EX, "ipv6-tcp-ex") \
_(7, IPV6_UDP_EX, "ipv6-udp-ex") \
_(8, FRAG_IPV6, "ipv6-frag") \
_(9, IPV6_TCP, "ipv6-tcp") \
_(10, IPV6_UDP, "ipv6-udp") \
_(11, IPV6_SCTP, "ipv6-sctp") \
_(12, IPV6_OTHER, "ipv6-other") \
_(13, IPV6_EX, "ipv6-ex") \
_(14, IPV6, "ipv6") \
_(15, L2_PAYLOAD, "l2-payload") \
_(16, PORT, "port") \
_(17, VXLAN, "vxlan") \
_(18, GENEVE, "geneve") \
_(19, NVGRE, "nvgre") \
_(20, GTPU, "gtpu") \
_(60, L4_DST_ONLY, "l4-dst-only") \
_(61, L4_SRC_ONLY, "l4-src-only") \
_(62, L3_DST_ONLY, "l3-dst-only") \
_(63, L3_SRC_ONLY, "l3-src-only")

Definition at line 132 of file flow.h.

◆ foreach_flow_type

#define foreach_flow_type
Value:
/* l2 flow*/ \
_(ETHERNET, ethernet, "ethernet") \
/* l3 IP flow */ \
_(IP4, ip4, "ipv4") \
_(IP6, ip6, "ipv6") \
/* IP tunnel flow */ \
_(IP4_L2TPV3OIP, ip4_l2tpv3oip, "ipv4-l2tpv3oip") \
_(IP4_IPSEC_ESP, ip4_ipsec_esp, "ipv4-ipsec-esp") \
_(IP4_IPSEC_AH, ip4_ipsec_ah, "ipv4-ipsec-ah") \
/* l4 flow*/ \
_(IP4_N_TUPLE, ip4_n_tuple, "ipv4-n-tuple") \
_(IP6_N_TUPLE, ip6_n_tuple, "ipv6-n-tuple") \
_(IP4_N_TUPLE_TAGGED, ip4_n_tuple_tagged, "ipv4-n-tuple-tagged") \
_(IP6_N_TUPLE_TAGGED, ip6_n_tuple_tagged, "ipv6-n-tuple-tagged") \
/* L4 tunnel flow*/ \
_(IP4_VXLAN, ip4_vxlan, "ipv4-vxlan") \
_(IP6_VXLAN, ip6_vxlan, "ipv6-vxlan") \
_(IP4_GTPC, ip4_gtpc, "ipv4-gtpc") \
_(IP4_GTPU, ip4_gtpu, "ipv4-gtpu")
vl_api_ip6_address_t ip6
Definition: one.api:424
vl_api_ip4_address_t ip4
Definition: one.api:376

Definition at line 26 of file flow.h.

◆ foreach_rss_function

#define foreach_rss_function
Value:
_(DEFAULT, "default") \
_(TOEPLITZ, "toeplitz") \
_(SIMPLE_XOR, "simple_xor") \
_(SYMMETRIC_TOEPLITZ, "symmetric_toeplitz")

Definition at line 159 of file flow.h.

Enumeration Type Documentation

◆ vnet_flow_action_t

Enumerator
foreach_flow_action 

Definition at line 117 of file flow.h.

◆ vnet_flow_error_t

Enumerator
VNET_FLOW_NO_ERROR 
foreach_flow_error 

Definition at line 165 of file flow.h.

◆ vnet_flow_type_t

Enumerator
VNET_FLOW_TYPE_UNKNOWN 
VNET_FLOW_N_TYPES 

Definition at line 186 of file flow.h.

◆ vnet_rss_function_t

Enumerator
VNET_RSS_N_TYPES 

Definition at line 195 of file flow.h.

Function Documentation

◆ vnet_flow_add()

int vnet_flow_add ( vnet_main_t vnm,
vnet_flow_t flow,
u32 flow_index 
)

Definition at line 43 of file flow.c.

+ Here is the caller graph for this function:

◆ vnet_flow_del()

int vnet_flow_del ( vnet_main_t vnm,
u32  flow_index 
)

Definition at line 67 of file flow.c.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ vnet_flow_disable()

int vnet_flow_disable ( vnet_main_t vnm,
u32  flow_index,
u32  hw_if_index 
)

Definition at line 135 of file flow.c.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ vnet_flow_enable()

int vnet_flow_enable ( vnet_main_t vnm,
u32  flow_index,
u32  hw_if_index 
)

Definition at line 91 of file flow.c.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ vnet_flow_get_range()

int vnet_flow_get_range ( vnet_main_t vnm,
char *  owner,
u32  count,
u32 start 
)

Definition at line 24 of file flow.c.

+ Here is the caller graph for this function:

◆ vnet_get_flow()

vnet_flow_t* vnet_get_flow ( u32  flow_index)

Definition at line 57 of file flow.c.

+ Here is the caller graph for this function:

Variable Documentation

◆ flow_main

vnet_flow_main_t flow_main

Definition at line 21 of file flow.c.

◆ foreach_flow_type

foreach_flow_type

Definition at line 212 of file flow.h.

◆ format_flow_actions

format_function_t format_flow_actions

Definition at line 288 of file flow.h.

◆ format_flow_enabled_hw

format_function_t format_flow_enabled_hw

Definition at line 289 of file flow.h.