Updated to new neighbor cache.

This commit is contained in:
Martin Mares 2000-06-01 13:00:19 +00:00
parent 491cd43b77
commit bc00185e5a

View file

@ -457,12 +457,17 @@ bgp_get_nexthop(struct bgp_proto *bgp, rta *a)
struct eattr *nh = ea_find(a->eattrs, EA_CODE(EAP_BGP, BA_NEXT_HOP)); struct eattr *nh = ea_find(a->eattrs, EA_CODE(EAP_BGP, BA_NEXT_HOP));
ASSERT(nh); ASSERT(nh);
nexthop = *(ip_addr *) nh->u.ptr->data; nexthop = *(ip_addr *) nh->u.ptr->data;
if (ipa_equal(nexthop, bgp->local_addr)) neigh = neigh_find(&bgp->p, &nexthop, 0);
if (neigh)
{ {
DBG("BGP: Loop!\n"); if (neigh->scope == SCOPE_HOST)
return 0; {
DBG("BGP: Loop!\n");
return 0;
}
} }
neigh = neigh_find(&bgp->p, &nexthop, 0) ? : bgp->neigh; else
neigh = bgp->neigh;
a->gw = neigh->addr; a->gw = neigh->addr;
a->iface = neigh->iface; a->iface = neigh->iface;
return 1; return 1;