mirror of
https://git.proxmox.com/git/mirror_frr
synced 2025-07-31 08:35:45 +00:00
zebra: skip queued entries when resolving nexthop
Problem reported where certain routes were not being passed on to clients if they were operated on while still queued for kernel installation. Changed it to defer working on entries that were queued to dplane so we could operate on them after getting an answer back from kernel installatino. Ticket: CM-25480 Signed-off-by: Don Slice <dslice@cumulusnetworks.com>
This commit is contained in:
parent
51e75ed228
commit
6d0ee6a0d4
@ -1364,6 +1364,7 @@ static void zebra_rib_fixup_system(struct route_node *rn)
|
||||
continue;
|
||||
|
||||
SET_FLAG(re->status, ROUTE_ENTRY_INSTALLED);
|
||||
UNSET_FLAG(re->status, ROUTE_ENTRY_QUEUED);
|
||||
|
||||
for (ALL_NEXTHOPS(re->ng, nhop)) {
|
||||
if (CHECK_FLAG(nhop->flags, NEXTHOP_FLAG_RECURSIVE))
|
||||
|
@ -465,6 +465,7 @@ zebra_rnh_resolve_import_entry(struct zebra_vrf *zvrf, afi_t afi,
|
||||
RNODE_FOREACH_RE (rn, re) {
|
||||
if (!CHECK_FLAG(re->status, ROUTE_ENTRY_REMOVED)
|
||||
&& CHECK_FLAG(re->flags, ZEBRA_FLAG_SELECTED)
|
||||
&& !CHECK_FLAG(re->status, ROUTE_ENTRY_QUEUED)
|
||||
&& (re->type != ZEBRA_ROUTE_BGP))
|
||||
break;
|
||||
}
|
||||
@ -679,6 +680,14 @@ zebra_rnh_resolve_nexthop_entry(struct zebra_vrf *zvrf, afi_t afi,
|
||||
continue;
|
||||
}
|
||||
|
||||
if (CHECK_FLAG(re->status, ROUTE_ENTRY_QUEUED)) {
|
||||
if (IS_ZEBRA_DEBUG_NHT_DETAILED)
|
||||
zlog_debug(
|
||||
"\tRoute Entry %s queued",
|
||||
zebra_route_string(re->type));
|
||||
continue;
|
||||
}
|
||||
|
||||
/* Just being SELECTED isn't quite enough - must
|
||||
* have an installed nexthop to be useful.
|
||||
*/
|
||||
|
Loading…
Reference in New Issue
Block a user