mirror of
https://git.proxmox.com/git/mirror_frr
synced 2025-08-11 11:21:07 +00:00
zebra: Add interface down marking to NHE's
Add functionality to allow an interface down event to mark any dependent NHE's as invalid. Signed-off-by: Stephen Worley <sworley@cumulusnetworks.com>
This commit is contained in:
parent
fe593b781d
commit
f862383fc9
@ -983,7 +983,17 @@ bool if_nhg_dependents_is_empty(const struct interface *ifp)
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void if_down_nhg_dependents(const struct interface *ifp)
|
||||||
{
|
{
|
||||||
|
if (!if_nhg_dependents_is_empty(ifp)) {
|
||||||
|
struct nhg_connected *rb_node_dep = NULL;
|
||||||
|
struct zebra_if *zif = (struct zebra_if *)ifp->info;
|
||||||
|
|
||||||
|
RB_FOREACH (rb_node_dep, nhg_connected_head,
|
||||||
|
&zif->nhg_dependents) {
|
||||||
|
zebra_nhg_set_invalid(rb_node_dep->nhe);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Interface is up. */
|
/* Interface is up. */
|
||||||
@ -1049,6 +1059,8 @@ void if_down(struct interface *ifp)
|
|||||||
zif->down_count++;
|
zif->down_count++;
|
||||||
quagga_timestamp(2, zif->down_last, sizeof(zif->down_last));
|
quagga_timestamp(2, zif->down_last, sizeof(zif->down_last));
|
||||||
|
|
||||||
|
if_down_nhg_dependents(ifp);
|
||||||
|
|
||||||
/* Handle interface down for specific types for EVPN. Non-VxLAN
|
/* Handle interface down for specific types for EVPN. Non-VxLAN
|
||||||
* interfaces
|
* interfaces
|
||||||
* are checked to see if (remote) neighbor entries need to be purged
|
* are checked to see if (remote) neighbor entries need to be purged
|
||||||
|
@ -441,6 +441,7 @@ extern void if_nhg_dependents_del(struct interface *ifp,
|
|||||||
struct nhg_hash_entry *nhe);
|
struct nhg_hash_entry *nhe);
|
||||||
extern unsigned int if_nhg_dependents_count(const struct interface *ifp);
|
extern unsigned int if_nhg_dependents_count(const struct interface *ifp);
|
||||||
extern bool if_nhg_dependents_is_empty(const struct interface *ifp);
|
extern bool if_nhg_dependents_is_empty(const struct interface *ifp);
|
||||||
|
extern void if_down_nhg_dependents(const struct interface *ifp);
|
||||||
|
|
||||||
extern void vrf_add_update(struct vrf *vrfp);
|
extern void vrf_add_update(struct vrf *vrfp);
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user