1
0
mirror of https://gitlab.labs.nic.cz/labs/bird.git synced 2024-05-11 16:54:54 +00:00

Fixes setting of IP addresses to route attributes (NEXT_HOP).

This commit is contained in:
Ondrej Zajicek
2009-09-18 13:59:04 +02:00
parent db96fccb31
commit 54fe0d9230
2 changed files with 6 additions and 3 deletions

View File

@@ -234,7 +234,7 @@ bgp_create_update(struct bgp_conn *conn, byte *buf)
{
struct bgp_proto *p = conn->bgp;
struct bgp_bucket *buck;
int size;
int size, second;
int remains = BGP_MAX_PACKET_LENGTH - BGP_HEADER_LENGTH - 4;
byte *w, *tmp, *tstart;
ip_addr *ipp, ip, ip_ll;
@@ -292,7 +292,9 @@ bgp_create_update(struct bgp_conn *conn, byte *buf)
nh = ea_find(buck->eattrs, EA_CODE(EAP_BGP, BA_NEXT_HOP));
ASSERT(nh);
/* We have two addresses here in 'nh'. Really. */
/* We have two addresses here in 'nh'. Really.
Unless NEXT_HOP was modified by filter */
second = (nh->u.ptr->length == NEXT_HOP_LENGTH);
ipp = (ip_addr *) nh->u.ptr->data;
ip = ipp[0];
ip_ll = IPA_NONE;
@@ -316,7 +318,7 @@ bgp_create_update(struct bgp_conn *conn, byte *buf)
n = neigh_find(&p->p, &ip, 0);
if (n && n->iface == p->neigh->iface)
{
if (ipa_nonzero(ipp[1]))
if (second && ipa_nonzero(ipp[1]))
ip_ll = ipp[1];
else
{