FD.io VPP  v20.01-48-g3e0dafb74
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_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
 

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 }
 

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, DROP, "drop")
DROP
Definition: error.def:41

Definition at line 109 of file flow.h.

◆ foreach_flow_entry_ethernet

#define foreach_flow_entry_ethernet   _fe(ethernet_header_t, eth_hdr)

Definition at line 44 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 73 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 77 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 81 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 86 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 47 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:129
u16 dst_port
Definition: udp.api:42

Definition at line 61 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 91 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 95 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 99 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 104 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 54 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:129
u16 dst_port
Definition: udp.api:42

Definition at line 67 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 125 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") \
/* 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.

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

◆ vnet_flow_type_t

Enumerator
VNET_FLOW_TYPE_UNKNOWN 
VNET_FLOW_N_TYPES 

Definition at line 146 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 165 of file flow.h.

◆ format_flow_actions

format_function_t format_flow_actions

Definition at line 235 of file flow.h.

◆ format_flow_enabled_hw

format_function_t format_flow_enabled_hw

Definition at line 236 of file flow.h.