BGP: Fix handling of 16bit-only ASN translation
The bug generated invalid AGGREGATOR attribute during translation of 32bit ASN to 16bit-only BGP peer. The patch fixes that.
This commit is contained in:
parent
fd9f0c0640
commit
a6548d5b5b
2 changed files with 2 additions and 1 deletions
|
@ -111,7 +111,7 @@ static inline struct adata *
|
|||
aggregator_to_old(struct linpool *pool, const struct adata *a)
|
||||
{
|
||||
struct adata *d = lp_alloc_adata(pool, 8);
|
||||
put_u32(d->data, 0xFFFF);
|
||||
put_u32(d->data, AS_TRANS);
|
||||
memcpy(d->data + 4, a->data + 4, 4);
|
||||
return d;
|
||||
}
|
||||
|
|
|
@ -577,6 +577,7 @@ bgp_encode_aggregator(struct bgp_write_state *s, eattr *a, byte *buf, uint size)
|
|||
/* Prepare 16-bit AGGREGATOR (from 32-bit one) in a temporary buffer */
|
||||
byte *dst = alloca(6);
|
||||
len = aggregator_32to16(dst, data);
|
||||
data = dst;
|
||||
}
|
||||
|
||||
return bgp_put_attr(buf, size, BA_AGGREGATOR, a->flags, data, len);
|
||||
|
|
Loading…
Reference in a new issue