Unlock LISP source FIB if only default left
If when removing a source route the LISP source FIB contains only the default, remove the whole source FIB. Defaults are added when FIBs are created so no forwarding entry depends on them. Change-Id: I0dd5dc31d128d834ac3b92c962c4c68577aa7429 Signed-off-by: Florin Coras <fcoras@cisco.com>
This commit is contained in:
@ -150,12 +150,22 @@ ip_src_dst_fib_del_route (u32 src_fib_index,
|
|||||||
|
|
||||||
fib_table_entry_delete (src_fib_index, &src_fib_prefix, FIB_SOURCE_LISP);
|
fib_table_entry_delete (src_fib_index, &src_fib_prefix, FIB_SOURCE_LISP);
|
||||||
|
|
||||||
if (0 == fib_table_get_num_entries (src_fib_index,
|
/* check if only default left */
|
||||||
|
if (1 == fib_table_get_num_entries (src_fib_index,
|
||||||
src_fib_prefix.fp_proto,
|
src_fib_prefix.fp_proto,
|
||||||
FIB_SOURCE_LISP))
|
FIB_SOURCE_LISP))
|
||||||
{
|
{
|
||||||
/*
|
/*
|
||||||
* there's nothing left, unlock the source FIB and the
|
* remove src FIB default route
|
||||||
|
*/
|
||||||
|
fib_prefix_t prefix = {
|
||||||
|
.fp_proto = dst_fib_prefix.fp_proto,
|
||||||
|
};
|
||||||
|
fib_table_entry_special_remove (src_fib_index, &prefix,
|
||||||
|
FIB_SOURCE_LISP);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* there's nothing left now, unlock the source FIB and the
|
||||||
* destination route
|
* destination route
|
||||||
*/
|
*/
|
||||||
fib_table_entry_special_remove (dst_fib_index,
|
fib_table_entry_special_remove (dst_fib_index,
|
||||||
|
Reference in New Issue
Block a user