]> git.puffer.fish Git - matthieu/frr.git/commitdiff
bgpd: reinstate zlookup checks, required for BGP without zebra
authorPaul Jakma <paul@quagga.net>
Mon, 9 Jan 2012 11:36:23 +0000 (11:36 +0000)
committerPaul Jakma <paul@quagga.net>
Mon, 9 Jan 2012 11:36:23 +0000 (11:36 +0000)
* 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

index e9c78b3f0cb42e58f63323a237cea649e07d0008..fdf251b2a872bcd79feff25c9295f1867a53d8d6 100644 (file)
@@ -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);