summaryrefslogtreecommitdiffstats
path: root/src/vnet/fib/fib_entry_src_adj.c
diff options
context:
space:
mode:
authorNeale Ranns <nranns@cisco.com>2019-06-25 11:38:37 +0000
committerNeale Ranns <nranns@cisco.com>2019-06-26 07:29:04 +0000
commitf6a9ec5cfccb26553e8fefddd355fe2e400ad396 (patch)
tree758f6e4415b7fe042d6122f11ff098f6b08f9d5d /src/vnet/fib/fib_entry_src_adj.c
parent00dd74cee7ef8c1c5265daf01db13891ed68507f (diff)
fib: adj cover refinement check change
Usually the adj cover refinement check which ensures that for any adj sourced prefix its cover is connected, is satified by the presence of the interface source. The interface source has a high priority hence during the adj refinement check get_flags() which uses the best source, usually returns the flags for the interface source. However, in the presence of higher priority sources that interpose get_flags does not return connected and the check fails. With this change add a specific check for the interface source if the best is not connected. Type: feature Change-Id: Iabc3e29fe7c447fc3ef313e40b00d48fab09fba4 Signed-off-by: Neale Ranns <nranns@cisco.com>
Diffstat (limited to 'src/vnet/fib/fib_entry_src_adj.c')
-rw-r--r--src/vnet/fib/fib_entry_src_adj.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/src/vnet/fib/fib_entry_src_adj.c b/src/vnet/fib/fib_entry_src_adj.c
index 816a1f46b48..b7f594656aa 100644
--- a/src/vnet/fib/fib_entry_src_adj.c
+++ b/src/vnet/fib/fib_entry_src_adj.c
@@ -237,7 +237,9 @@ fib_entry_src_adj_activate (fib_entry_src_t *src,
* ip route add 10.0.0.0/24 Eth0
* is attached. and we want adj-fibs to install on Eth0.
*/
- if (FIB_ENTRY_FLAG_ATTACHED & fib_entry_get_flags_i(cover))
+ if (FIB_ENTRY_FLAG_ATTACHED & fib_entry_get_flags_i(cover) ||
+ (FIB_ENTRY_FLAG_ATTACHED & fib_entry_get_flags_for_source(src->u.adj.fesa_cover,
+ FIB_SOURCE_INTERFACE)))
{
fib_entry_src_path_list_walk_cxt_t ctx = {
.cover_itf = fib_entry_get_resolving_interface(src->u.adj.fesa_cover),