mirror of
https://git.proxmox.com/git/mirror_frr
synced 2025-08-07 19:10:35 +00:00
Merge pull request #14033 from donaldsharp/zebra_same_route
Zebra same route
This commit is contained in:
commit
ef87237121
@ -68,6 +68,8 @@ show ip nht vrf all
|
|||||||
show ipv6 nht vrf all
|
show ipv6 nht vrf all
|
||||||
show ip route vrf all
|
show ip route vrf all
|
||||||
show ipv6 route vrf all
|
show ipv6 route vrf all
|
||||||
|
show ip fib
|
||||||
|
show ipv6 fib
|
||||||
show nexthop-group rib
|
show nexthop-group rib
|
||||||
show route-map
|
show route-map
|
||||||
show memory
|
show memory
|
||||||
|
@ -2366,17 +2366,18 @@ static int nexthop_active(struct nexthop *nexthop, struct nhg_hash_entry *nhe,
|
|||||||
if (is_default_prefix(&rn->p)
|
if (is_default_prefix(&rn->p)
|
||||||
&& !rnh_resolve_via_default(zvrf, p.family)) {
|
&& !rnh_resolve_via_default(zvrf, p.family)) {
|
||||||
if (IS_ZEBRA_DEBUG_RIB_DETAILED)
|
if (IS_ZEBRA_DEBUG_RIB_DETAILED)
|
||||||
zlog_debug(
|
zlog_debug(" :%s: %pFX Resolved against default route",
|
||||||
" :%s: Resolved against default route",
|
__func__, &p);
|
||||||
__func__);
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
dest = rib_dest_from_rnode(rn);
|
dest = rib_dest_from_rnode(rn);
|
||||||
if (dest && dest->selected_fib
|
if (dest && dest->selected_fib &&
|
||||||
&& !CHECK_FLAG(dest->selected_fib->status,
|
(!CHECK_FLAG(dest->selected_fib->status,
|
||||||
ROUTE_ENTRY_REMOVED)
|
ROUTE_ENTRY_REMOVED) ||
|
||||||
&& dest->selected_fib->type != ZEBRA_ROUTE_TABLE)
|
CHECK_FLAG(dest->selected_fib->status,
|
||||||
|
ROUTE_ENTRY_ROUTE_REPLACING)) &&
|
||||||
|
dest->selected_fib->type != ZEBRA_ROUTE_TABLE)
|
||||||
match = dest->selected_fib;
|
match = dest->selected_fib;
|
||||||
|
|
||||||
/* If there is no selected route or matched route is EGP, go up
|
/* If there is no selected route or matched route is EGP, go up
|
||||||
@ -2388,7 +2389,6 @@ static int nexthop_active(struct nexthop *nexthop, struct nhg_hash_entry *nhe,
|
|||||||
} while (rn && rn->info == NULL);
|
} while (rn && rn->info == NULL);
|
||||||
if (rn)
|
if (rn)
|
||||||
route_lock_node(rn);
|
route_lock_node(rn);
|
||||||
|
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2824,8 +2824,13 @@ static void process_subq_early_route_add(struct zebra_early_route *ere)
|
|||||||
rib_addnode(rn, re, 1);
|
rib_addnode(rn, re, 1);
|
||||||
|
|
||||||
/* Free implicit route.*/
|
/* Free implicit route.*/
|
||||||
if (same)
|
if (same) {
|
||||||
|
rib_dest_t *dest = rn->info;
|
||||||
|
|
||||||
|
if (same == dest->selected_fib)
|
||||||
|
SET_FLAG(same->status, ROUTE_ENTRY_ROUTE_REPLACING);
|
||||||
rib_delnode(rn, same);
|
rib_delnode(rn, same);
|
||||||
|
}
|
||||||
|
|
||||||
/* See if we can remove some RE entries that are queued for
|
/* See if we can remove some RE entries that are queued for
|
||||||
* removal, but won't be considered in rib processing.
|
* removal, but won't be considered in rib processing.
|
||||||
|
Loading…
Reference in New Issue
Block a user