mirror of
https://git.proxmox.com/git/mirror_frr
synced 2025-08-05 22:50:14 +00:00
bgpd: add bmp adj-rib-in 64 bit gauge value
There is no support for option 7, as per RFC7854. Add the 64 bit counter in the peer structure. Add the 64 bit bmp value write api. Add the missing per peer statistic. Signed-off-by: Philippe Guibert <philippe.guibert@6wind.com>
This commit is contained in:
parent
a6040ba1f5
commit
e6374a20f3
@ -182,12 +182,15 @@ void bgp_adj_in_set(struct bgp_dest *dest, struct peer *peer, struct attr *attr,
|
||||
adj->uptime = monotime(NULL);
|
||||
adj->addpath_rx_id = addpath_id;
|
||||
BGP_ADJ_IN_ADD(dest, adj);
|
||||
peer->stat_pfx_adj_rib_in++;
|
||||
bgp_dest_lock_node(dest);
|
||||
}
|
||||
|
||||
void bgp_adj_in_remove(struct bgp_dest **dest, struct bgp_adj_in *bai)
|
||||
{
|
||||
bgp_attr_unintern(&bai->attr);
|
||||
if (bai->peer)
|
||||
bai->peer->stat_pfx_adj_rib_in--;
|
||||
BGP_ADJ_IN_DEL(*dest, bai);
|
||||
*dest = bgp_dest_unlock_node(*dest);
|
||||
peer_unlock(bai->peer); /* adj_in peer reference */
|
||||
|
@ -1592,6 +1592,15 @@ static void bmp_stat_put_u32(struct stream *s, size_t *cnt, uint16_t type,
|
||||
(*cnt)++;
|
||||
}
|
||||
|
||||
static void bmp_stat_put_u64(struct stream *s, size_t *cnt, uint16_t type,
|
||||
uint64_t value)
|
||||
{
|
||||
stream_putw(s, type);
|
||||
stream_putw(s, 8);
|
||||
stream_putq(s, value);
|
||||
(*cnt)++;
|
||||
}
|
||||
|
||||
static void bmp_stats(struct event *thread)
|
||||
{
|
||||
struct bmp_targets *bt = EVENT_ARG(thread);
|
||||
@ -1635,6 +1644,8 @@ static void bmp_stats(struct event *thread)
|
||||
peer->stat_upd_7606);
|
||||
bmp_stat_put_u32(s, &count, BMP_STATS_FRR_NH_INVALID,
|
||||
peer->stat_pfx_nh_invalid);
|
||||
bmp_stat_put_u64(s, &count, BMP_STATS_SIZE_ADJ_RIB_IN,
|
||||
peer->stat_pfx_adj_rib_in);
|
||||
|
||||
stream_putl_at(s, count_pos, count);
|
||||
|
||||
|
@ -1667,6 +1667,7 @@ struct peer {
|
||||
uint32_t stat_pfx_nh_invalid;
|
||||
uint32_t stat_pfx_dup_withdraw;
|
||||
uint32_t stat_upd_7606; /* RFC7606: treat-as-withdraw */
|
||||
uint64_t stat_pfx_adj_rib_in; /* RFC7854 : Number of routes in Adj-RIBs-In */
|
||||
|
||||
/* BGP state count */
|
||||
uint32_t established; /* Established */
|
||||
|
@ -23,6 +23,7 @@ The `BMP` implementation in FRR has the following properties:
|
||||
- 3: count of **prefixes** with loop in cluster id
|
||||
- 4: count of **prefixes** with loop in AS-path
|
||||
- 5: count of **prefixes** with loop in originator
|
||||
- 7: count of **routes** in adj-rib-in
|
||||
- 11: count of updates subjected to :rfc:`7607` "treat as withdrawal"
|
||||
handling due to errors
|
||||
- 65531: *experimental* count of prefixes rejected due to invalid next-hop
|
||||
|
Loading…
Reference in New Issue
Block a user