diff options
Diffstat (limited to 'src/plugins/lb/lb.c')
-rw-r--r-- | src/plugins/lb/lb.c | 23 |
1 files changed, 14 insertions, 9 deletions
diff --git a/src/plugins/lb/lb.c b/src/plugins/lb/lb.c index 6fc7f0f92b2..7ae1884ff31 100644 --- a/src/plugins/lb/lb.c +++ b/src/plugins/lb/lb.c @@ -198,15 +198,18 @@ u8 *format_lb_vip_detailed (u8 * s, va_list * args) lb_vip_t *vip = va_arg (*args, lb_vip_t *); u32 indent = format_get_indent (s); - s = format(s, "%U %U [%lu] %U%s\n" + /* clang-format off */ + s = format(s, "%U %U [%lu] %U%s%s\n" "%U new_size:%u\n", format_white_space, indent, format_lb_vip_type, vip->type, vip - lbm->vips, format_ip46_prefix, &vip->prefix, (u32) vip->plen, IP46_TYPE_ANY, + lb_vip_is_src_ip_sticky (vip) ? " src_ip_sticky" : "", (vip->flags & LB_VIP_FLAGS_USED)?"":" removed", format_white_space, indent, vip->new_flow_table_mask + 1); + /* clang-format on */ if (vip->port != 0) { @@ -370,9 +373,9 @@ void lb_garbage_collection() } vec_foreach(i, to_be_removed_vips) { - vip = &lbm->vips[*i]; - pool_put(lbm->vips, vip); - pool_free(vip->as_indexes); + vip = &lbm->vips[*i]; + pool_free (vip->as_indexes); + pool_put (lbm->vips, vip); } vec_free(to_be_removed_vips); @@ -411,7 +414,7 @@ out: } //First, let's sort the ASs - vec_alloc(sort_arr, pool_elts(vip->as_indexes)); + vec_validate (sort_arr, pool_elts (vip->as_indexes) - 1); i = 0; pool_foreach (as_index, vip->as_indexes) { @@ -422,7 +425,7 @@ out: sort_arr[i].as_index = as - lbm->ass; i++; } - _vec_len(sort_arr) = i; + vec_set_len (sort_arr, i); vec_sort_with_function(sort_arr, lb_pseudorand_compare); @@ -1147,6 +1150,10 @@ int lb_vip_add(lb_vip_add_args_t args, u32 *vip_index) } vip->flags = LB_VIP_FLAGS_USED; + if (args.src_ip_sticky) + { + vip->flags |= LB_VIP_FLAGS_SRC_IP_STICKY; + } vip->as_indexes = 0; //Validate counters @@ -1249,12 +1256,10 @@ int lb_vip_del(u32 vip_index) return rv; } -/* *INDENT-OFF* */ VLIB_PLUGIN_REGISTER () = { .version = VPP_BUILD_VER, .description = "Load Balancer (LB)", }; -/* *INDENT-ON* */ u8 *format_lb_dpo (u8 * s, va_list * va) { @@ -1412,7 +1417,7 @@ lb_init (vlib_main_t * vm) lb_dpo_nat4_port_nodes); lbm->dpo_nat6_port_type = dpo_register_new_type(&lb_vft, lb_dpo_nat6_port_nodes); - lbm->fib_node_type = fib_node_register_new_type(&lb_fib_node_vft); + lbm->fib_node_type = fib_node_register_new_type ("lb", &lb_fib_node_vft); //Init AS reference counters vlib_refcount_init(&lbm->as_refcount); |