mirror of
https://git.proxmox.com/git/mirror_frr
synced 2025-08-14 10:37:29 +00:00
bgpd, topotests: bmp, fix wrong peer distinguisher value for peer vrf up/down
When running the bgp_bmp_2 vrf test, peer vrf up/down events from the pre and post policy are received with a wrong peer distinguisher value. > {"peer_type": "route distinguisher instance", "policy": "pre-policy", > "ipv6": true, "peer_ip": "192:168::2", "peer_distinguisher": "0:0", > "peer_asn": 65502, "peer_bgp_id": "192.168.0.2", "timestamp": > "2024-10-16 21:59:53.111962", "bmp_log_type": "peer up", "local_ip": > "192:168::1", "local_port": 179, "remote_port": 50836, "seq": 5} RFC7854 mentions in 4.2 that if the peer is a "RD Instance Peer", it is set to the route distinguisher of the particular instance the peer belongs to. Fix this by modifying the BMP client, update the peer distinguisher value by filling the peer distinguisher in the bmp_peerstate function. > {"peer_type": "route distinguisher instance", "policy": "pre-policy", > "ipv6": true, "peer_ip": "192:168::2", "peer_distinguisher": "444:1", > "peer_asn": 65502, "peer_bgp_id": "192.168.0.2", "timestamp": > "2024-10-16 21:59:53.111962", "bmp_log_type": "peer up", "local_ip": > "192:168::1", "local_port": 179, "remote_port": 50836, "seq": 5} Add a test to check that peer_distinguisher value is not 0:0 when an RD instance is set. Signed-off-by: Philippe Guibert <philippe.guibert@6wind.com>
This commit is contained in:
parent
188ba91082
commit
95ccb5d01d
@ -490,7 +490,7 @@ static struct stream *bmp_peerstate(struct peer *peer, bool down)
|
||||
|
||||
bmp_common_hdr(s, BMP_VERSION_3,
|
||||
BMP_TYPE_PEER_UP_NOTIFICATION);
|
||||
bmp_per_peer_hdr(s, peer->bgp, peer, 0, peer_type, 0, &uptime_real);
|
||||
bmp_per_peer_hdr(s, peer->bgp, peer, 0, peer_type, peer_distinguisher, &uptime_real);
|
||||
|
||||
/* Local Address (16 bytes) */
|
||||
if (is_locrib)
|
||||
@ -552,7 +552,7 @@ static struct stream *bmp_peerstate(struct peer *peer, bool down)
|
||||
|
||||
bmp_common_hdr(s, BMP_VERSION_3,
|
||||
BMP_TYPE_PEER_DOWN_NOTIFICATION);
|
||||
bmp_per_peer_hdr(s, peer->bgp, peer, 0, peer_type, 0, &uptime_real);
|
||||
bmp_per_peer_hdr(s, peer->bgp, peer, 0, peer_type, peer_distinguisher, &uptime_real);
|
||||
|
||||
type_pos = stream_get_endp(s);
|
||||
stream_putc(s, 0); /* placeholder for down reason */
|
||||
|
@ -206,6 +206,8 @@ def bmp_check_for_peer_message(
|
||||
# get the list of pairs (prefix, policy, seq) for the given message type
|
||||
peers = []
|
||||
for m in messages:
|
||||
if is_rd_instance and m["peer_distinguisher"] == "0:0":
|
||||
continue
|
||||
if (
|
||||
"peer_ip" in m.keys()
|
||||
and m["peer_ip"] != "0.0.0.0"
|
||||
|
Loading…
Reference in New Issue
Block a user