mirror of
https://git.proxmox.com/git/mirror_frr
synced 2025-08-05 13:21:22 +00:00
zebra: use NHRP routes as valid in nexthop check
Treat NHRP-installed routes as valid, as if they were CONNECTED routes, when checking candidate routes' nexthops for validity. This allows use of NHRP by an IGP, for example, that doesn't normally want recursive nexthop resolution. Signed-off-by: Mark Stapp <mjs@labn.net>
This commit is contained in:
parent
281e7685c1
commit
bb58cad150
@ -167,6 +167,10 @@ struct route_entry {
|
||||
|
||||
#define RIB_KERNEL_ROUTE(R) RKERNEL_ROUTE((R)->type)
|
||||
|
||||
/* Define route types that are equivalent to "connected". */
|
||||
#define RIB_CONNECTED_ROUTE(R) \
|
||||
((R)->type == ZEBRA_ROUTE_CONNECT || (R)->type == ZEBRA_ROUTE_NHRP)
|
||||
|
||||
/* meta-queue structure:
|
||||
* sub-queue 0: nexthop group objects
|
||||
* sub-queue 1: EVPN/VxLAN objects
|
||||
|
@ -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",
|
||||
|
Loading…
Reference in New Issue
Block a user