summaryrefslogtreecommitdiffstats
path: root/zebra/zebra_nhg.c
diff options
context:
space:
mode:
Diffstat (limited to 'zebra/zebra_nhg.c')
-rw-r--r--zebra/zebra_nhg.c9
1 files changed, 8 insertions, 1 deletions
diff --git a/zebra/zebra_nhg.c b/zebra/zebra_nhg.c
index e44f6ee4e..bb507893b 100644
--- a/zebra/zebra_nhg.c
+++ b/zebra/zebra_nhg.c
@@ -2392,7 +2392,10 @@ static int nexthop_active(struct nexthop *nexthop, struct nhg_hash_entry *nhe,
continue;
}
- if ((match->type == ZEBRA_ROUTE_CONNECT) ||
+ /* If the candidate match's type is considered "connected",
+ * we consider it first.
+ */
+ if (RIB_CONNECTED_ROUTE(match) ||
(RIB_SYSTEM_ROUTE(match) && RSYSTEM_ROUTE(type))) {
match = zebra_nhg_connected_ifindex(rn, match,
nexthop->ifindex);
@@ -2413,6 +2416,10 @@ static int nexthop_active(struct nexthop *nexthop, struct nhg_hash_entry *nhe,
return 0;
}
+ /* NHRP special case: need to indicate onlink */
+ if (match->type == ZEBRA_ROUTE_NHRP)
+ SET_FLAG(nexthop->flags, NEXTHOP_FLAG_ONLINK);
+
if (IS_ZEBRA_DEBUG_NHG_DETAIL)
zlog_debug(
"%s: CONNECT match %p (%pNG), newhop %pNHv",