diff options
author | Hongjun Ni <hongjun.ni@intel.com> | 2018-09-18 23:25:02 +0800 |
---|---|---|
committer | Damjan Marion <dmarion@me.com> | 2018-09-24 08:04:37 +0000 |
commit | 6a4375e02d8dd4ebcc2f79ee9f6abbafdd2f674c (patch) | |
tree | f4f2b6958c5797b14b9ebd0ad5d762630189e150 /src/plugins/lb/cli.c | |
parent | 742582f4156b249b5a4f60070ae6491dd9b6e7c0 (diff) |
LB: fix flush flow table issue
Change-Id: Ib0a06ab71aed42eb5bb2ab2edf4844b2167e0610
Signed-off-by: Hongjun Ni <hongjun.ni@intel.com>
Diffstat (limited to 'src/plugins/lb/cli.c')
-rw-r--r-- | src/plugins/lb/cli.c | 60 |
1 files changed, 7 insertions, 53 deletions
diff --git a/src/plugins/lb/cli.c b/src/plugins/lb/cli.c index 6e1b7c1b1ee..a12a63354cc 100644 --- a/src/plugins/lb/cli.c +++ b/src/plugins/lb/cli.c @@ -497,32 +497,13 @@ VLIB_CLI_COMMAND (lb_set_interface_nat6_command, static) = { .short_help = "lb set interface nat6 in <intfc> [del]", }; -int -lb_flush_vip (u32 vip_index) +static clib_error_t * +lb_flowtable_flush_command_fn (vlib_main_t * vm, + unformat_input_t * input, vlib_cli_command_t * cmd) { - u32 thread_index; - vlib_thread_main_t *tm = vlib_get_thread_main(); - lb_main_t *lbm = &lb_main; - - for(thread_index = 0; thread_index < tm->n_vlib_mains; thread_index++ ) { - lb_hash_t *h = lbm->per_cpu[thread_index].sticky_ht; - if (h != NULL) { - u32 i; - lb_hash_bucket_t *b; - - lb_hash_foreach_entry(h, b, i) { - if (b->vip[i] == vip_index) - { - vlib_refcount_add(&lbm->as_refcount, thread_index, b->value[i], -1); - vlib_refcount_add(&lbm->as_refcount, thread_index, 0, 1); - b->vip[i] = ~0; - b->value[i] = ~0; - } - } - } - } + lb_flush_vip_as(~0, 0); - return 0; + return NULL; } static clib_error_t * @@ -574,7 +555,7 @@ lb_flush_vip_command_fn (vlib_main_t * vm, goto done; } - if ((ret = lb_flush_vip(vip_index))) + if ((ret = lb_flush_vip_as(vip_index, ~0))) { error = clib_error_return (0, "lb_flush_vip error %d", ret); } @@ -596,37 +577,10 @@ VLIB_CLI_COMMAND (lb_flush_vip_command, static) = { .path = "lb flush vip", .short_help = "lb flush vip <prefix> " - "[protocol (tcp|udp) port <n>] exec []", + "[protocol (tcp|udp) port <n>]", .function = lb_flush_vip_command_fn, }; -static clib_error_t * -lb_flowtable_flush_command_fn (vlib_main_t * vm, - unformat_input_t * input, vlib_cli_command_t * cmd) -{ - u32 thread_index; - vlib_thread_main_t *tm = vlib_get_thread_main(); - lb_main_t *lbm = &lb_main; - - for(thread_index = 0; thread_index < tm->n_vlib_mains; thread_index++ ) { - lb_hash_t *h = lbm->per_cpu[thread_index].sticky_ht; - if (h != NULL) { - u32 i; - lb_hash_bucket_t *b; - - lb_hash_foreach_entry(h, b, i) { - vlib_refcount_add(&lbm->as_refcount, thread_index, b->value[i], -1); - vlib_refcount_add(&lbm->as_refcount, thread_index, 0, 1); - } - - lb_hash_free(h); - lbm->per_cpu[thread_index].sticky_ht = 0; - } - } - - return NULL; -} - /* * flush all lb flowtables * This is indented for debug and unit-tests purposes only |