Code Review
/
vpp.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
review
|
tree
raw
|
inline
| side by side
fib: FIB crash removing labelled route (VPP-1818)
[vpp.git]
/
src
/
vnet
/
fib
/
fib_table.c
diff --git
a/src/vnet/fib/fib_table.c
b/src/vnet/fib/fib_table.c
index
ac0f2da
..
ec2acc5
100644
(file)
--- 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);
}
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,
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]);
}
{
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)
{
if (FIB_NODE_INDEX_INVALID == fib_entry_index)
{
@@
-740,13
+752,6
@@
fib_table_entry_path_remove (u32 fib_index,
vec_free(paths);
}
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,
fib_node_index_t
fib_table_entry_update (u32 fib_index,
const fib_prefix_t *prefix,