X-Git-Url: https://gerrit.fd.io/r/gitweb?a=blobdiff_plain;f=src%2Fvnet%2Fip%2Fip_api.c;h=31b7e40a880dd1e78d1a6d64504660c4c5b35dd7;hb=3b93be5d76cbcb5dc3d3aee5c72a797014a346f9;hp=7217f9d101a7f990f4b6e346b0afb31febbd97d9;hpb=c84cbad785fa11c1dba92b8e87ad234d779d1cbd;p=vpp.git diff --git a/src/vnet/ip/ip_api.c b/src/vnet/ip/ip_api.c index 7217f9d101a..31b7e40a880 100644 --- a/src/vnet/ip/ip_api.c +++ b/src/vnet/ip/ip_api.c @@ -839,26 +839,6 @@ add_del_route_t_handler (u8 is_multipath, path.frp_flags = path_flags; - if (is_multipath) - { - stats_dslock_with_hint (1 /* release hint */ , 10 /* tag */ ); - - - vec_add1 (paths, path); - - if (is_add) - fib_table_entry_path_add2 (fib_index, - prefix, - FIB_SOURCE_API, entry_flags, paths); - else - fib_table_entry_path_remove2 (fib_index, - prefix, FIB_SOURCE_API, paths); - - vec_free (paths); - stats_dsunlock (); - return 0; - } - stats_dslock_with_hint (1 /* release hint */ , 2 /* tag */ ); if (is_drop || is_local || is_classify || is_unreach || is_prohibit) @@ -914,6 +894,20 @@ add_del_route_t_handler (u8 is_multipath, fib_table_entry_special_remove (fib_index, prefix, FIB_SOURCE_API); } } + else if (is_multipath) + { + vec_add1 (paths, path); + + if (is_add) + fib_table_entry_path_add2 (fib_index, + prefix, + FIB_SOURCE_API, entry_flags, paths); + else + fib_table_entry_path_remove2 (fib_index, + prefix, FIB_SOURCE_API, paths); + + vec_free (paths); + } else { if (is_add)