--- quagga/bgpd/bgp_nht.c | 3 ++- quagga/bgpd/bgp_zebra.c | 11 +++++++++++ quagga/bgpd/bgp_zebra.h | 2 ++ 3 files changed, 15 insertions(+), 1 deletion(-)
diff --git a/quagga/bgpd/bgp_nht.c b/quagga/bgpd/bgp_nht.c index 591fbf9..c4acb66 100644 --- a/quagga/bgpd/bgp_nht.c +++ b/quagga/bgpd/bgp_nht.c @@ -192,7 +192,8 @@ bgp_find_or_add_nexthop (afi_t afi, struct bgp_info *ri, struct peer *peer, else if (peer) bnc->nht_info = (void *)peer; /* NHT peer reference */ - return (CHECK_FLAG(bnc->flags, BGP_NEXTHOP_VALID)); + return (bgp_zebra_num_connects() == 0 || + CHECK_FLAG(bnc->flags, BGP_NEXTHOP_VALID)); } void diff --git a/quagga/bgpd/bgp_zebra.c b/quagga/bgpd/bgp_zebra.c index 854d93d..974baed 100644 --- a/quagga/bgpd/bgp_zebra.c +++ b/quagga/bgpd/bgp_zebra.c @@ -54,6 +54,8 @@ struct in_addr router_id_zebra; struct stream *bgp_nexthop_buf = NULL; struct stream *bgp_ifindices_buf = NULL; +int zclient_num_connects; + /* Router-id update message from zebra. */ static int bgp_router_id_update (int command, struct zclient *zclient, zebra_size_t length, @@ -1187,12 +1189,15 @@ bgp_zclient_reset (void) static void bgp_zebra_connected (struct zclient *zclient) { + zclient_num_connects++; zclient_send_requests (zclient, VRF_DEFAULT); } void bgp_zebra_init (struct thread_master *master) { + zclient_num_connects = 0; + /* Set default values. */ zclient = zclient_new (master); zclient_init (zclient, ZEBRA_ROUTE_BGP); @@ -1223,3 +1228,9 @@ bgp_zebra_destroy(void) zclient_free(zclient); zclient = NULL; } + +int +bgp_zebra_num_connects(void) +{ + return zclient_num_connects; +} diff --git a/quagga/bgpd/bgp_zebra.h b/quagga/bgpd/bgp_zebra.h index 9a592c3..5d4ed62 100644 --- a/quagga/bgpd/bgp_zebra.h +++ b/quagga/bgpd/bgp_zebra.h @@ -48,4 +48,6 @@ extern struct interface *if_lookup_by_ipv4_exact (struct in_addr *); extern struct interface *if_lookup_by_ipv6 (struct in6_addr *); extern struct interface *if_lookup_by_ipv6_exact (struct in6_addr *); +extern int bgp_zebra_num_connects(void); + #endif /* _QUAGGA_BGP_ZEBRA_H */ -- 2.1.3 _______________________________________________ Quagga-dev mailing list Quagga-dev@lists.quagga.net https://lists.quagga.net/mailman/listinfo/quagga-dev