FD.io VPP  v20.05.1-6-gf53edbc3b
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  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_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_l2tpv3oip
 
#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_entry_ip4_gtpu_ip4
 
#define foreach_flow_entry_ip4_gtpu_ip6
 
#define foreach_flow_entry_ip6_gtpc
 
#define foreach_flow_entry_ip6_gtpu
 
#define foreach_flow_entry_ip6_gtpu_ip4
 
#define foreach_flow_entry_ip6_gtpu_ip6
 
#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 133 of file flow.h.

◆ foreach_flow_entry_ethernet

#define foreach_flow_entry_ethernet   _fe(ethernet_header_t, eth_hdr)

Definition at line 48 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

Definition at line 97 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

Definition at line 101 of file flow.h.

◆ foreach_flow_entry_ip4_gtpu_ip4

#define foreach_flow_entry_ip4_gtpu_ip4
Value:
foreach_flow_entry_ip4_gtpu \
_fe(ip4_address_and_mask_t, inner_src_addr) \
_fe(ip4_address_and_mask_t, inner_dst_addr)

Definition at line 105 of file flow.h.

◆ foreach_flow_entry_ip4_gtpu_ip6

#define foreach_flow_entry_ip4_gtpu_ip6
Value:
foreach_flow_entry_ip4_gtpu \
_fe(ip6_address_and_mask_t, inner_src_addr) \
_fe(ip6_address_and_mask_t, inner_dst_addr)

Definition at line 110 of file flow.h.

◆ foreach_flow_entry_ip4_l2tpv3oip

#define foreach_flow_entry_ip4_l2tpv3oip
Value:
_fe(ip4_address_and_mask_t, src_addr) \
_fe(ip4_address_and_mask_t, dst_addr) \
vl_api_ip_proto_t protocol
Definition: lb_types.api:71
unsigned int u32
Definition: types.h:88
enum ip_protocol ip_protocol_t
u16 session_id
Definition: gre.api:50

Definition at line 79 of file flow.h.

◆ foreach_flow_entry_ip4_n_tuple

#define foreach_flow_entry_ip4_n_tuple
Value:
_fe(ip4_address_and_mask_t, src_addr) \
_fe(ip4_address_and_mask_t, dst_addr) \
u16 src_port
Definition: udp.api:41
vl_api_ip_proto_t protocol
Definition: lb_types.api:71
enum ip_protocol ip_protocol_t
u16 dst_port
Definition: udp.api:42

Definition at line 51 of file flow.h.

◆ foreach_flow_entry_ip4_n_tuple_tagged

#define foreach_flow_entry_ip4_n_tuple_tagged
Value:
_fe(ip4_address_and_mask_t, src_addr) \
_fe(ip4_address_and_mask_t, dst_addr) \
u16 src_port
Definition: udp.api:41
vl_api_ip_proto_t protocol
Definition: lb_types.api:71
enum ip_protocol ip_protocol_t
u16 dst_port
Definition: udp.api:42

Definition at line 65 of file flow.h.

◆ foreach_flow_entry_ip4_vxlan

#define foreach_flow_entry_ip4_vxlan
Value:
_fe(ip4_address_t, src_addr) \
_fe(ip4_address_t, dst_addr) \
_fe(u16, dst_port) \
_fe(u16, vni)
unsigned short u16
Definition: types.h:57
u32 vni
Definition: lisp_gpe.api:119
u16 dst_port
Definition: udp.api:42

Definition at line 85 of file flow.h.

◆ foreach_flow_entry_ip6_gtpc

#define foreach_flow_entry_ip6_gtpc
Value:
foreach_flow_entry_ip6_n_tuple \
_fe(u32, teid)
unsigned int u32
Definition: types.h:88

Definition at line 115 of file flow.h.

◆ foreach_flow_entry_ip6_gtpu

#define foreach_flow_entry_ip6_gtpu
Value:
foreach_flow_entry_ip6_n_tuple \
_fe(u32, teid)
unsigned int u32
Definition: types.h:88

Definition at line 119 of file flow.h.

◆ foreach_flow_entry_ip6_gtpu_ip4

#define foreach_flow_entry_ip6_gtpu_ip4
Value:
foreach_flow_entry_ip6_gtpu \
_fe(ip4_address_and_mask_t, inner_src_addr) \
_fe(ip4_address_and_mask_t, inner_dst_addr)

Definition at line 123 of file flow.h.

◆ foreach_flow_entry_ip6_gtpu_ip6

#define foreach_flow_entry_ip6_gtpu_ip6
Value:
foreach_flow_entry_ip6_gtpu \
_fe(ip6_address_and_mask_t, inner_src_addr) \
_fe(ip6_address_and_mask_t, inner_dst_addr)

Definition at line 128 of file flow.h.

◆ foreach_flow_entry_ip6_n_tuple

#define foreach_flow_entry_ip6_n_tuple
Value:
_fe(ip6_address_and_mask_t, src_addr) \
_fe(ip6_address_and_mask_t, dst_addr) \
u16 src_port
Definition: udp.api:41
vl_api_ip_proto_t protocol
Definition: lb_types.api:71
enum ip_protocol ip_protocol_t
u16 dst_port
Definition: udp.api:42

Definition at line 58 of file flow.h.

◆ foreach_flow_entry_ip6_n_tuple_tagged

#define foreach_flow_entry_ip6_n_tuple_tagged
Value:
_fe(ip6_address_and_mask_t, src_addr) \
_fe(ip6_address_and_mask_t, dst_addr) \
u16 src_port
Definition: udp.api:41
vl_api_ip_proto_t protocol
Definition: lb_types.api:71
enum ip_protocol ip_protocol_t
u16 dst_port
Definition: udp.api:42

Definition at line 72 of file flow.h.

◆ foreach_flow_entry_ip6_vxlan

#define foreach_flow_entry_ip6_vxlan
Value:
_fe(ip6_address_t, src_addr) \
_fe(ip6_address_t, dst_addr) \
_fe(u16, dst_port) \
_fe(u16, vni)
unsigned short u16
Definition: types.h:57
u32 vni
Definition: lisp_gpe.api:119
u16 dst_port
Definition: udp.api:42

Definition at line 91 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 150 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 158 of file flow.h.

◆ foreach_flow_type

#define foreach_flow_type
Value:
/* l2 flow*/ \
_(ETHERNET, ethernet, "ethernet") \
/* 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") \
/* IP tunnel flow */ \
_(IP4_L2TPV3OIP, ip4_l2tpv3oip, "ipv4-l2tpv3oip") \
/* 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") \
_(IP4_GTPU_IP4, ip4_gtpu_ip4, "ipv4-gtpu-ipv4") \
_(IP4_GTPU_IP6, ip4_gtpu_ip6, "ipv4-gtpu-ipv6") \
_(IP6_GTPC, ip6_gtpc, "ipv6-gtpc") \
_(IP6_GTPU, ip6_gtpu, "ipv6-gtpu") \
_(IP6_GTPU_IP4, ip6_gtpu_ip4, "ipv6-gtpu-ipv4") \
_(IP6_GTPU_IP6, ip6_gtpu_ip6, "ipv6-gtpu-ipv6")

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 185 of file flow.h.

Enumeration Type Documentation

◆ vnet_flow_action_t

Enumerator
foreach_flow_action 

Definition at line 142 of file flow.h.

◆ vnet_flow_error_t

Enumerator
VNET_FLOW_NO_ERROR 
foreach_flow_error 

Definition at line 191 of file flow.h.

◆ vnet_flow_type_t

Enumerator
VNET_FLOW_TYPE_UNKNOWN 
VNET_FLOW_N_TYPES 

Definition at line 204 of file flow.h.

◆ vnet_rss_function_t

Enumerator
VNET_RSS_N_TYPES 

Definition at line 213 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 call graph for this function:
+ 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 230 of file flow.h.

◆ format_flow_actions

format_function_t format_flow_actions

Definition at line 306 of file flow.h.

◆ format_flow_enabled_hw

format_function_t format_flow_enabled_hw

Definition at line 307 of file flow.h.