Commit a6548d5b authored by Nasato Goto's avatar Nasato Goto Committed by Ondrej Zajicek (work)
Browse files

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.
parent fd9f0c06
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -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;
}
+1 −0
Original line number Diff line number Diff line
@@ -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);