diff options
Diffstat (limited to 'zebra/interface.h')
| -rw-r--r-- | zebra/interface.h | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/zebra/interface.h b/zebra/interface.h index e134b9b423..78ccbae623 100644 --- a/zebra/interface.h +++ b/zebra/interface.h @@ -27,6 +27,7 @@ #include "hook.h" #include "zebra/zebra_l2.h" +#include "zebra/zebra_nhg_private.h" #ifdef __cplusplus extern "C" { @@ -277,6 +278,15 @@ struct zebra_if { /* Installed addresses chains tree. */ struct route_table *ipv4_subnets; + /* Nexthops pointing to this interface */ + /** + * Any nexthop that we get should have an + * interface. When an interface goes down, + * we will use this list to update the nexthops + * pointing to it with that info. + */ + struct nhg_connected_tree_head nhg_dependents; + /* Information about up/down changes */ unsigned int up_count; char up_last[QUAGGA_TIMESTAMP_LEN]; @@ -424,6 +434,14 @@ extern void zebra_if_update_link(struct interface *ifp, ifindex_t link_ifindex, extern void zebra_if_update_all_links(void); extern void zebra_if_set_protodown(struct interface *ifp, bool down); +/* Nexthop group connected functions */ +extern void if_nhg_dependents_add(struct interface *ifp, + struct nhg_hash_entry *nhe); +extern void if_nhg_dependents_del(struct interface *ifp, + struct nhg_hash_entry *nhe); +extern unsigned int if_nhg_dependents_count(const struct interface *ifp); +extern bool if_nhg_dependents_is_empty(const struct interface *ifp); + extern void vrf_add_update(struct vrf *vrfp); #ifdef HAVE_PROC_NET_DEV |
