From fc98d16ea77372f4ab4231e8904f8467e8d1ef71 Mon Sep 17 00:00:00 2001 From: Paul Jakma Date: Mon, 9 Jan 2012 11:36:23 +0000 Subject: bgpd: reinstate zlookup checks, required for BGP without zebra * bgp_nexthop.c: The nexthop lookup cache has to return success for queried nexthops if bgpd isn't connected to zebra, or else BGP without zebra doesn't work. --- bgpd/bgp_nexthop.c | 26 +++++++++++++++++++++++--- 1 file changed, 23 insertions(+), 3 deletions(-) (limited to 'bgpd') diff --git a/bgpd/bgp_nexthop.c b/bgpd/bgp_nexthop.c index e9c78b3f..fdf251b2 100644 --- a/bgpd/bgp_nexthop.c +++ b/bgpd/bgp_nexthop.c @@ -174,7 +174,11 @@ int bgp_nexthop_onlink (afi_t afi, struct attr *attr) { struct bgp_node *rn; - + + /* If zebra is not enabled return */ + if (zlookup->sock < 0) + return 1; + /* Lookup the address is onlink or not. */ if (afi == AFI_IP) { @@ -218,7 +222,15 @@ bgp_nexthop_lookup_ipv6 (struct peer *peer, struct bgp_info *ri, int *changed, struct prefix p; struct bgp_nexthop_cache *bnc; struct attr *attr; - + + /* If lookup is not enabled, return valid. */ + if (zlookup->sock < 0) + { + if (ri->extra) + ri->extra->igpmetric = 0; + return 1; + } + /* Only check IPv6 global address only nexthop. */ attr = ri->attr; @@ -296,7 +308,15 @@ bgp_nexthop_lookup (afi_t afi, struct peer *peer, struct bgp_info *ri, struct prefix p; struct bgp_nexthop_cache *bnc; struct in_addr addr; - + + /* If lookup is not enabled, return valid. */ + if (zlookup->sock < 0) + { + if (ri->extra) + ri->extra->igpmetric = 0; + return 1; + } + #ifdef HAVE_IPV6 if (afi == AFI_IP6) return bgp_nexthop_lookup_ipv6 (peer, ri, changed, metricchanged); -- cgit v1.2.1