]> git.puffer.fish Git - matthieu/frr.git/commitdiff
bgpd: bmp, add peer type and distinguisher support for stat messages
authorPhilippe Guibert <philippe.guibert@6wind.com>
Mon, 23 Sep 2024 14:03:13 +0000 (16:03 +0200)
committerPhilippe Guibert <philippe.guibert@6wind.com>
Wed, 11 Dec 2024 10:49:08 +0000 (11:49 +0100)
Signed-off-by: Philippe Guibert <philippe.guibert@6wind.com>
bgpd/bgp_bmp.c

index 677ad935582ea52dd4e6d6370cf14de4cf1ba69c..3a4364c5f997eb15c825342a9a7e9b135f797c13 100644 (file)
@@ -1733,6 +1733,8 @@ static void bmp_stats(struct event *thread)
        struct peer *peer;
        struct listnode *node;
        struct timeval tv;
+       uint8_t peer_type_flag;
+       uint64_t peer_distinguisher = 0;
 
        if (bt->stat_msec)
                event_add_timer_msec(bm->master, bmp_stats, bt, bt->stat_msec,
@@ -1749,8 +1751,14 @@ static void bmp_stats(struct event *thread)
 
                s = stream_new(BGP_MAX_PACKET_SIZE);
                bmp_common_hdr(s, BMP_VERSION_3, BMP_TYPE_STATISTICS_REPORT);
-               bmp_per_peer_hdr(s, bt->bgp, peer, 0,
-                                BMP_PEER_TYPE_GLOBAL_INSTANCE, 0, &tv);
+               peer_type_flag = bmp_get_peer_type(peer);
+               if (bmp_get_peer_distinguisher(peer->bgp, AFI_UNSPEC, peer_type_flag,
+                                              &peer_distinguisher)) {
+                       zlog_warn("skipping bmp message for peer %s: can't get peer distinguisher",
+                                 peer->host);
+                       continue;
+               }
+               bmp_per_peer_hdr(s, bt->bgp, peer, 0, peer_type_flag, peer_distinguisher, &tv);
 
                count_pos = stream_get_endp(s);
                stream_putl(s, 0);