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

Go to the source code of this file.

Data Structures

struct  l3xc_t_
 

Macros

#define L3XC_PLUGIN_VERSION_MAJOR   1
 A L3 cross connect will send all traffic that is received on the input interface to the [set of] paths requested. More...
 
#define L3XC_PLUGIN_VERSION_MINOR   0
 

Typedefs

typedef struct l3xc_t_ l3xc_t
 
typedef int(* l3xc_walk_cb_t) (index_t l3xci, void *ctx)
 Callback function invoked during a walk of all policies. More...
 

Functions

int l3xc_update (u32 sw_if_index, u8 is_ip6, const fib_route_path_t *rpaths)
 Create or update an L3XC Policy. More...
 
int l3xc_delete (u32 sw_if_index, u8 is_ip6)
 Delete an L3XC. More...
 
void l3xc_walk (l3xc_walk_cb_t cb, void *ctx)
 Walk/visit each of the L3XC policies. More...
 
index_t l3xc_find (u32 sw_if_index, fib_protocol_t fproto)
 Find a L3 XC object from an interface and FIB protocol. More...
 
static_always_inline l3xc_tl3xc_get (u32 index)
 

Variables

l3xc_tl3xc_pool
 Data-plane functions. More...
 
vlib_node_registration_t l3xc_ip4_node
 (constructor) VLIB_REGISTER_NODE (l3xc_ip4_node) More...
 
vlib_node_registration_t l3xc_ip6_node
 (constructor) VLIB_REGISTER_NODE (l3xc_ip6_node) More...
 

Macro Definition Documentation

◆ L3XC_PLUGIN_VERSION_MAJOR

#define L3XC_PLUGIN_VERSION_MAJOR   1

A L3 cross connect will send all traffic that is received on the input interface to the [set of] paths requested.

It is a much more memory efficient solution than using a separate IP table for each input interface and much faster than an ABF match all rule.

Definition at line 28 of file l3xc.h.

◆ L3XC_PLUGIN_VERSION_MINOR

#define L3XC_PLUGIN_VERSION_MINOR   0

Definition at line 29 of file l3xc.h.

Typedef Documentation

◆ l3xc_t

typedef struct l3xc_t_ l3xc_t

◆ l3xc_walk_cb_t

typedef int(* l3xc_walk_cb_t) (index_t l3xci, void *ctx)

Callback function invoked during a walk of all policies.

Definition at line 86 of file l3xc.h.

Function Documentation

◆ l3xc_delete()

int l3xc_delete ( u32  sw_if_index,
u8  is_ip6 
)

Delete an L3XC.

Parameters
sw_if_indexthe input interface
is_ipv6- 0 if ip4, 1 if ip6

Definition at line 156 of file l3xc.c.

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

◆ l3xc_find()

index_t l3xc_find ( u32  sw_if_index,
fib_protocol_t  fproto 
)

Find a L3 XC object from an interface and FIB protocol.

Definition at line 38 of file l3xc.c.

+ Here is the caller graph for this function:

◆ l3xc_get()

static_always_inline l3xc_t* l3xc_get ( u32  index)

Definition at line 104 of file l3xc.h.

+ Here is the caller graph for this function:

◆ l3xc_update()

int l3xc_update ( u32  sw_if_index,
u8  is_ip6,
const fib_route_path_t rpaths 
)

Create or update an L3XC Policy.

Parameters
sw_if_indexthe input interface
is_ipv6- 0 if ip4, 1 if ip6
rpathsThe set of paths to add to the forwarding set
Returns
error code

Definition at line 83 of file l3xc.c.

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

◆ l3xc_walk()

void l3xc_walk ( l3xc_walk_cb_t  cb,
void *  ctx 
)

Walk/visit each of the L3XC policies.

Definition at line 303 of file l3xc.c.

+ Here is the caller graph for this function:

Variable Documentation

◆ l3xc_ip4_node

vlib_node_registration_t l3xc_ip4_node

(constructor) VLIB_REGISTER_NODE (l3xc_ip4_node)

Definition at line 203 of file l3xc_node.c.

◆ l3xc_ip6_node

vlib_node_registration_t l3xc_ip6_node

(constructor) VLIB_REGISTER_NODE (l3xc_ip6_node)

Definition at line 219 of file l3xc_node.c.

◆ l3xc_pool

l3xc_t* l3xc_pool

Data-plane functions.

Data-plane functions.

Definition at line 30 of file l3xc.c.