]> git.puffer.fish Git - matthieu/frr.git/commitdiff
bgpd: touch nexthop handling code
authorDenis Ovsienko <infrastation@yandex.ru>
Fri, 5 Aug 2011 14:52:52 +0000 (18:52 +0400)
committerPaul Jakma <paul@quagga.net>
Sun, 8 Jan 2012 11:30:55 +0000 (11:30 +0000)
bgp_nexthop_lookup_ipv6(): declare variables where they are actually
used, drop no-op initialization (the field is already 0)
bgp_nexthop_lookup(): ditto
bgp_nexthop_check_ebgp(): rename to bgp_nexthop_onlink()
bgp_nexthop_cache_changed(): rename to bgp_nexthop_cache_different()

bgpd/bgp_nexthop.c
bgpd/bgp_nexthop.h
bgpd/bgp_route.c

index 60efa1953afc724cc0e5363fef521118bd98b556..d888c8f2638754448f7b736b9951df8b8c4b1072 100644 (file)
@@ -146,7 +146,7 @@ bgp_nexthop_same (struct nexthop *next1, struct nexthop *next2)
 }
 
 static int
-bgp_nexthop_cache_changed (struct bgp_nexthop_cache *bnc1,
+bgp_nexthop_cache_different (struct bgp_nexthop_cache *bnc1,
                           struct bgp_nexthop_cache *bnc2)
 {
   int i;
@@ -171,7 +171,7 @@ bgp_nexthop_cache_changed (struct bgp_nexthop_cache *bnc1,
 
 /* If nexthop exists on connected network return 1. */
 int
-bgp_nexthop_check_ebgp (afi_t afi, struct attr *attr)
+bgp_nexthop_onlink (afi_t afi, struct attr *attr)
 {
   struct bgp_node *rn;
 
@@ -256,12 +256,11 @@ bgp_nexthop_lookup_ipv6 (struct peer *peer, struct bgp_info *ri, int *changed,
       bnc = zlookup_query_ipv6 (&attr->extra->mp_nexthop_global);
       if (bnc)
        {
-         struct bgp_table *old;
-         struct bgp_node *oldrn;
-         struct bgp_nexthop_cache *oldbnc;
-
          if (changed)
            {
+             struct bgp_table *old;
+             struct bgp_node *oldrn;
+
              if (bgp_nexthop_cache_table[AFI_IP6] == cache1_table[AFI_IP6])
                old = cache2_table[AFI_IP6];
              else
@@ -270,9 +269,9 @@ bgp_nexthop_lookup_ipv6 (struct peer *peer, struct bgp_info *ri, int *changed,
              oldrn = bgp_node_lookup (old, &p);
              if (oldrn)
                {
-                 oldbnc = oldrn->info;
+                 struct bgp_nexthop_cache *oldbnc = oldrn->info;
 
-                 bnc->changed = bgp_nexthop_cache_changed (bnc, oldbnc);
+                 bnc->changed = bgp_nexthop_cache_different (bnc, oldbnc);
 
                  if (bnc->metric != oldbnc->metric)
                    bnc->metricchanged = 1;
@@ -284,7 +283,6 @@ bgp_nexthop_lookup_ipv6 (struct peer *peer, struct bgp_info *ri, int *changed,
       else
        {
          bnc = bnc_new ();
-         bnc->valid = 0;
        }
       rn->info = bnc;
     }
@@ -347,12 +345,11 @@ bgp_nexthop_lookup (afi_t afi, struct peer *peer, struct bgp_info *ri,
       bnc = zlookup_query (addr);
       if (bnc)
        {
-         struct bgp_table *old;
-         struct bgp_node *oldrn;
-         struct bgp_nexthop_cache *oldbnc;
-
          if (changed)
            {
+             struct bgp_table *old;
+             struct bgp_node *oldrn;
+
              if (bgp_nexthop_cache_table[AFI_IP] == cache1_table[AFI_IP])
                old = cache2_table[AFI_IP];
              else
@@ -361,9 +358,9 @@ bgp_nexthop_lookup (afi_t afi, struct peer *peer, struct bgp_info *ri,
              oldrn = bgp_node_lookup (old, &p);
              if (oldrn)
                {
-                 oldbnc = oldrn->info;
+                 struct bgp_nexthop_cache *oldbnc = oldrn->info;
 
-                 bnc->changed = bgp_nexthop_cache_changed (bnc, oldbnc);
+                 bnc->changed = bgp_nexthop_cache_different (bnc, oldbnc);
 
                  if (bnc->metric != oldbnc->metric)
                    bnc->metricchanged = 1;
@@ -375,7 +372,6 @@ bgp_nexthop_lookup (afi_t afi, struct peer *peer, struct bgp_info *ri,
       else
        {
          bnc = bnc_new ();
-         bnc->valid = 0;
        }
       rn->info = bnc;
     }
@@ -462,7 +458,7 @@ bgp_scan (afi_t afi, safi_t safi)
              metricchanged = 0;
 
              if (peer_sort (bi->peer) == BGP_PEER_EBGP && bi->peer->ttl == 1)
-               valid = bgp_nexthop_check_ebgp (afi, bi->attr);
+               valid = bgp_nexthop_onlink (afi, bi->attr);
              else
                valid = bgp_nexthop_lookup (afi, bi->peer, bi,
                                            &changed, &metricchanged);
index 2dad742ff424b473d15aed706d6200847a92a5a0..874f3bba0d96166ad097aaefca2a1588f1f0e52f 100644 (file)
@@ -54,7 +54,7 @@ extern void bgp_connected_add (struct connected *c);
 extern void bgp_connected_delete (struct connected *c);
 extern int bgp_multiaccess_check_v4 (struct in_addr, char *);
 extern int bgp_config_write_scan_time (struct vty *);
-extern int bgp_nexthop_check_ebgp (afi_t, struct attr *);
+extern int bgp_nexthop_onlink (afi_t, struct attr *);
 extern int bgp_nexthop_self (afi_t, struct attr *);
 
 #endif /* _QUAGGA_BGP_NEXTHOP_H */
index 6477a7cccea5c67714977130c8a306f6da4af525..68d05484798221cd6c37283175439fc03f1d1681 100644 (file)
@@ -2061,7 +2061,7 @@ bgp_update_main (struct peer *peer, struct prefix *p, struct attr *attr,
       /* If the peer is EBGP and nexthop is not on connected route,
         discard it.  */
       if (peer_sort (peer) == BGP_PEER_EBGP && peer->ttl == 1
-         && ! bgp_nexthop_check_ebgp (afi, &new_attr)
+         && ! bgp_nexthop_onlink (afi, &new_attr)
          && ! CHECK_FLAG (peer->flags, PEER_FLAG_DISABLE_CONNECTED_CHECK))
        {
          reason = "non-connected next-hop;";