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.
diff --git a/bgpd/bgp_nexthop.c b/bgpd/bgp_nexthop.c
index e9c78b3..fdf251b 100644
--- a/bgpd/bgp_nexthop.c
+++ b/bgpd/bgp_nexthop.c
@@ -174,7 +174,11 @@
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 @@
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 @@
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);