Code Review
/
vpp.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
review
|
tree
raw
|
inline
| side by side
ARP/ND use path_remove to complement path_add
[vpp.git]
/
src
/
vnet
/
fib
/
fib_path_ext.c
diff --git
a/src/vnet/fib/fib_path_ext.c
b/src/vnet/fib/fib_path_ext.c
index
45ab1f1
..
26f2b9b
100644
(file)
--- a/
src/vnet/fib/fib_path_ext.c
+++ b/
src/vnet/fib/fib_path_ext.c
@@
-105,7
+105,7
@@
fib_path_ext_resolve (fib_path_ext_t *path_ext,
path_ext);
}
path_ext);
}
-void
+
static
void
fib_path_ext_init (fib_path_ext_t *path_ext,
fib_node_index_t path_list_index,
fib_path_ext_type_t ext_type,
fib_path_ext_init (fib_path_ext_t *path_ext,
fib_node_index_t path_list_index,
fib_path_ext_type_t ext_type,
@@
-338,7
+338,18
@@
fib_path_ext_list_insert (fib_path_ext_list_t *list,
vec_foreach(path_ext, list->fpel_exts)
{
vec_foreach(path_ext, list->fpel_exts)
{
- if (fib_path_ext_cmp(path_ext, rpath) < 0)
+ int res = fib_path_ext_cmp(path_ext, rpath);
+
+ if (0 == res)
+ {
+ /*
+ * don't add duplicate extensions. modify instead
+ */
+ vec_free(path_ext->fpe_label_stack);
+ *path_ext = new_path_ext;
+ goto done;
+ }
+ else if (res < 0)
{
i++;
}
{
i++;
}
@@
-348,7
+359,7
@@
fib_path_ext_list_insert (fib_path_ext_list_t *list,
}
}
vec_insert_elts(list->fpel_exts, &new_path_ext, 1, i);
}
}
vec_insert_elts(list->fpel_exts, &new_path_ext, 1, i);
-
+done:
return (&(list->fpel_exts[i]));
}
return (&(list->fpel_exts[i]));
}