diff options
| author | Donald Sharp <donaldsharp72@gmail.com> | 2024-10-03 15:08:36 -0400 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2024-10-03 15:08:36 -0400 |
| commit | 1a923e080a19bffbbd4cda9e37aea33db06a53c9 (patch) | |
| tree | 9c93fe69240c80c00e2d09c1bcbfd2a31c8b2fc1 | |
| parent | 15ecd816a4e90d10cf278a6d6b9e97d6cf9c41ee (diff) | |
| parent | ddf09413d1aecd59981275bae959eabcc0046f52 (diff) | |
Merge pull request #16994 from louis-6wind/bmp-adj-labels
bgpd: export labels to pre-policy bmp
| -rw-r--r-- | bgpd/bgp_bmp.c | 24 |
1 files changed, 13 insertions, 11 deletions
diff --git a/bgpd/bgp_bmp.c b/bgpd/bgp_bmp.c index 556738a606..9d99c2c7fd 100644 --- a/bgpd/bgp_bmp.c +++ b/bgpd/bgp_bmp.c @@ -1047,7 +1047,7 @@ static void bmp_monitor(struct bmp *bmp, struct peer *peer, uint8_t flags, static bool bmp_wrsync(struct bmp *bmp, struct pullwr *pullwr) { - uint8_t bpi_num_labels; + uint8_t bpi_num_labels, adjin_num_labels; afi_t afi; safi_t safi; @@ -1241,11 +1241,12 @@ afibreak: bpi_num_labels ? bpi->extra->labels->label : NULL, bpi_num_labels); - if (adjin) - /* TODO: set label here when adjin supports labels */ - bmp_monitor(bmp, adjin->peer, 0, BMP_PEER_TYPE_GLOBAL_INSTANCE, - bn_p, prd, adjin->attr, afi, safi, adjin->uptime, - NULL, 0); + if (adjin) { + adjin_num_labels = adjin->labels ? adjin->labels->num_labels : 0; + bmp_monitor(bmp, adjin->peer, 0, BMP_PEER_TYPE_GLOBAL_INSTANCE, bn_p, prd, + adjin->attr, afi, safi, adjin->uptime, + adjin_num_labels ? &adjin->labels->label[0] : NULL, adjin_num_labels); + } if (bn) bgp_dest_unlock_node(bn); @@ -1382,7 +1383,7 @@ static bool bmp_wrqueue(struct bmp *bmp, struct pullwr *pullwr) struct peer *peer; struct bgp_dest *bn = NULL; bool written = false; - uint8_t bpi_num_labels; + uint8_t bpi_num_labels, adjin_num_labels; bqe = bmp_pull(bmp); if (!bqe) @@ -1453,10 +1454,11 @@ static bool bmp_wrqueue(struct bmp *bmp, struct pullwr *pullwr) if (adjin->peer == peer) break; } - /* TODO: set label here when adjin supports labels */ - bmp_monitor(bmp, peer, 0, BMP_PEER_TYPE_GLOBAL_INSTANCE, - &bqe->p, prd, adjin ? adjin->attr : NULL, afi, safi, - adjin ? adjin->uptime : monotime(NULL), NULL, 0); + adjin_num_labels = adjin && adjin->labels ? adjin->labels->num_labels : 0; + bmp_monitor(bmp, peer, 0, BMP_PEER_TYPE_GLOBAL_INSTANCE, &bqe->p, prd, + adjin ? adjin->attr : NULL, afi, safi, + adjin ? adjin->uptime : monotime(NULL), + adjin_num_labels ? &adjin->labels->label[0] : NULL, adjin_num_labels); written = true; } |
