bgpd: touch nexthop handling code
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()
diff --git a/bgpd/bgp_nexthop.c b/bgpd/bgp_nexthop.c
index 60efa19..d888c8f 100644
--- a/bgpd/bgp_nexthop.c
+++ b/bgpd/bgp_nexthop.c
@@ -146,7 +146,7 @@
}
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 @@
/* 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 @@
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 @@
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 @@
else
{
bnc = bnc_new ();
- bnc->valid = 0;
}
rn->info = bnc;
}
@@ -347,12 +345,11 @@
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 @@
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 @@
else
{
bnc = bnc_new ();
- bnc->valid = 0;
}
rn->info = bnc;
}
@@ -462,7 +458,7 @@
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);
diff --git a/bgpd/bgp_nexthop.h b/bgpd/bgp_nexthop.h
index 2dad742..874f3bb 100644
--- a/bgpd/bgp_nexthop.h
+++ b/bgpd/bgp_nexthop.h
@@ -54,7 +54,7 @@
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 */
diff --git a/bgpd/bgp_route.c b/bgpd/bgp_route.c
index 6477a7c..68d0548 100644
--- a/bgpd/bgp_route.c
+++ b/bgpd/bgp_route.c
@@ -2061,7 +2061,7 @@
/* 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;";