X-Git-Url: https://gerrit.fd.io/r/gitweb?a=blobdiff_plain;f=src%2Fvnet%2Ffib%2Ffib_table.c;h=ec2acc59c52f6ebd0283b05377f5a747eff763d6;hb=da5dedfe33ca3cafb4cd6d90d34219d31cf69acb;hp=ac0f2da6696c4c52fbc25210772afa4eb8a7b766;hpb=c0c4eec3bc309bcc656eade82f17754875f9ed7c;p=vpp.git diff --git a/src/vnet/fib/fib_table.c b/src/vnet/fib/fib_table.c index ac0f2da6696..ec2acc59c52 100644 --- a/src/vnet/fib/fib_table.c +++ b/src/vnet/fib/fib_table.c @@ -580,6 +580,13 @@ fib_table_entry_path_add (u32 fib_index, return (fib_entry_index); } +static int +fib_route_path_cmp_for_sort (void * v1, + void * v2) +{ + return (fib_route_path_cmp(v1, v2)); +} + fib_node_index_t fib_table_entry_path_add2 (u32 fib_index, const fib_prefix_t *prefix, @@ -598,6 +605,11 @@ fib_table_entry_path_add2 (u32 fib_index, { fib_table_route_path_fixup(prefix, &flags, &rpaths[ii]); } + /* + * sort the paths provided by the control plane. this means + * the paths and the extension on the entry will be sorted. + */ + vec_sort_with_function(rpaths, fib_route_path_cmp_for_sort); if (FIB_NODE_INDEX_INVALID == fib_entry_index) { @@ -740,13 +752,6 @@ fib_table_entry_path_remove (u32 fib_index, vec_free(paths); } -static int -fib_route_path_cmp_for_sort (void * v1, - void * v2) -{ - return (fib_route_path_cmp(v1, v2)); -} - fib_node_index_t fib_table_entry_update (u32 fib_index, const fib_prefix_t *prefix,