FD.io VPP  v16.09
Vector Packet Processing
lb.c File Reference
+ Include dependency graph for lb.c:

Go to the source code of this file.

Data Structures

struct  lb_pseudorand_t
 

Macros

#define LB_GARBAGE_RUN   60
 
#define LB_CONCURRENCY_TIMEOUT   10
 
#define lb_get_writer_lock()   do {} while(__sync_lock_test_and_set (lb_main.writer_lock, 1))
 
#define lb_put_writer_lock()   lb_main.writer_lock[0] = 0
 

Functions

u32 lb_hash_time_now (vlib_main_t *vm)
 
u8format_lb_main (u8 *s, va_list *args)
 
u8format_lb_vip_type (u8 *s, va_list *args)
 
uword unformat_lb_vip_type (unformat_input_t *input, va_list *args)
 
u8format_lb_vip (u8 *s, va_list *args)
 
u8format_lb_as (u8 *s, va_list *args)
 
u8format_lb_vip_detailed (u8 *s, va_list *args)
 
static int lb_pseudorand_compare (void *a, void *b)
 
static void lb_vip_garbage_collection (lb_vip_t *vip)
 
void lb_garbage_collection ()
 
static void lb_vip_update_new_flow_table (lb_vip_t *vip)
 
int lb_conf (ip4_address_t *ip4_address, ip6_address_t *ip6_address, u32 per_cpu_sticky_buckets, u32 flow_timeout)
 Fix global load-balancer parameters. More...
 
static int lb_vip_find_index_with_lock (ip46_address_t *prefix, u8 plen, u32 *vip_index)
 
int lb_vip_find_index (ip46_address_t *prefix, u8 plen, u32 *vip_index)
 
static int lb_as_find_index_vip (lb_vip_t *vip, ip46_address_t *address, u32 *as_index)
 
int lb_vip_add_ass (u32 vip_index, ip46_address_t *addresses, u32 n)
 
int lb_vip_del_ass_withlock (u32 vip_index, ip46_address_t *addresses, u32 n)
 
int lb_vip_del_ass (u32 vip_index, ip46_address_t *addresses, u32 n)
 
int lb_as_lookup_bypass (u32 vip_index, ip46_address_t *address, u8 is_disable)
 Updates the adjacency index stored in the AS such that the second IP lookup (after encap) can be bypassed. More...
 
static void lb_vip_add_adjacency (lb_main_t *lbm, lb_vip_t *vip)
 Add the VIP adjacency to the ip4 or ip6 fib. More...
 
static void lb_vip_del_adjacency (lb_main_t *lbm, lb_vip_t *vip)
 Deletes the adjacency associated with the VIP. More...
 
int lb_vip_add (ip46_address_t *prefix, u8 plen, lb_vip_type_t type, u32 new_length, u32 *vip_index)
 
int lb_vip_del (u32 vip_index)
 
clib_error_tvlib_plugin_register (vlib_main_t *vm, vnet_plugin_handoff_t *h, int from_early_init)
 
clib_error_tlb_init (vlib_main_t *vm)
 

Variables

lb_main_t lb_main
 
static char * lb_vip_type_strings []
 

Macro Definition Documentation

#define LB_CONCURRENCY_TIMEOUT   10

Definition at line 24 of file lb.c.

#define LB_GARBAGE_RUN   60

Definition at line 21 of file lb.c.

#define lb_get_writer_lock ( )    do {} while(__sync_lock_test_and_set (lb_main.writer_lock, 1))

Definition at line 28 of file lb.c.

#define lb_put_writer_lock ( )    lb_main.writer_lock[0] = 0

Definition at line 29 of file lb.c.

Function Documentation

u8* format_lb_as ( u8 s,
va_list *  args 
)

Definition at line 99 of file lb.c.

+ Here is the call graph for this function:

u8* format_lb_main ( u8 s,
va_list *  args 
)

Definition at line 36 of file lb.c.

+ Here is the call graph for this function:

u8* format_lb_vip ( u8 s,
va_list *  args 
)

Definition at line 88 of file lb.c.

+ Here is the call graph for this function:

u8* format_lb_vip_detailed ( u8 s,
va_list *  args 
)

Definition at line 105 of file lb.c.

+ Here is the call graph for this function:

u8* format_lb_vip_type ( u8 s,
va_list *  args 
)

Definition at line 66 of file lb.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

static int lb_as_find_index_vip ( lb_vip_t vip,
ip46_address_t *  address,
u32 as_index 
)
static

Definition at line 380 of file lb.c.

+ Here is the caller graph for this function:

int lb_as_lookup_bypass ( u32  vip_index,
ip46_address_t *  address,
u8  is_disable 
)

Updates the adjacency index stored in the AS such that the second IP lookup (after encap) can be bypassed.

Definition at line 538 of file lb.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

int lb_conf ( ip4_address_t ip4_address,
ip6_address_t ip6_address,
u32  sticky_buckets,
u32  flow_timeout 
)

Fix global load-balancer parameters.

Parameters
ip4_addressIPv4 source address used for encapsulated traffic
ip6_addressIPv6 source address used for encapsulated traffic
Returns
0 on success. VNET_LB_ERR_XXX on error

Definition at line 335 of file lb.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

void lb_garbage_collection ( )

Definition at line 206 of file lb.c.

+ Here is the caller graph for this function:

u32 lb_hash_time_now ( vlib_main_t vm)

Definition at line 31 of file lb.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

clib_error_t* lb_init ( vlib_main_t vm)

Definition at line 770 of file lb.c.

+ Here is the call graph for this function:

static int lb_pseudorand_compare ( void *  a,
void *  b 
)
static

Definition at line 174 of file lb.c.

int lb_vip_add ( ip46_address_t *  prefix,
u8  plen,
lb_vip_type_t  type,
u32  new_length,
u32 vip_index 
)

Definition at line 665 of file lb.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

static void lb_vip_add_adjacency ( lb_main_t lbm,
lb_vip_t vip 
)
static

Add the VIP adjacency to the ip4 or ip6 fib.

Definition at line 595 of file lb.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

int lb_vip_add_ass ( u32  vip_index,
ip46_address_t *  addresses,
u32  n 
)

Definition at line 398 of file lb.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

int lb_vip_del ( u32  vip_index)

Definition at line 723 of file lb.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

static void lb_vip_del_adjacency ( lb_main_t lbm,
lb_vip_t vip 
)
static

Deletes the adjacency associated with the VIP.

Definition at line 637 of file lb.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

int lb_vip_del_ass ( u32  vip_index,
ip46_address_t *  addresses,
u32  n 
)

Definition at line 530 of file lb.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

int lb_vip_del_ass_withlock ( u32  vip_index,
ip46_address_t *  addresses,
u32  n 
)

Definition at line 480 of file lb.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

int lb_vip_find_index ( ip46_address_t *  prefix,
u8  plen,
u32 vip_index 
)

Definition at line 371 of file lb.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

static int lb_vip_find_index_with_lock ( ip46_address_t *  prefix,
u8  plen,
u32 vip_index 
)
static

Definition at line 353 of file lb.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

static void lb_vip_garbage_collection ( lb_vip_t vip)
static

Definition at line 183 of file lb.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

static void lb_vip_update_new_flow_table ( lb_vip_t vip)
static

Definition at line 231 of file lb.c.

+ Here is the caller graph for this function:

uword unformat_lb_vip_type ( unformat_input_t input,
va_list *  args 
)

Definition at line 76 of file lb.c.

+ Here is the call graph for this function:

clib_error_t* vlib_plugin_register ( vlib_main_t vm,
vnet_plugin_handoff_t h,
int  from_early_init 
)

Definition at line 761 of file lb.c.

Variable Documentation

lb_main_t lb_main

Definition at line 26 of file lb.c.

char* lb_vip_type_strings[]
static
Initial value:

Definition at line 59 of file lb.c.