From 7da91a8fb9dffc151a514de8c96ff175597f942c Mon Sep 17 00:00:00 2001 From: Philippe Guibert Date: Tue, 3 Dec 2024 08:30:54 +0100 Subject: [PATCH] topotests: bmp_collector, fix display peer distinguisher IP:AS2B The peer distinguisher format was badly displayed when a per peer header is sent with an IP:AS2B format. > {"peer_type": "loc-rib instance", "is_filtered": false, "policy": "loc-rib", > "peer_distinguisher": "None:2", ... The IP header is incorrectly read. Fix it. > {"peer_type": "loc-rib instance", "is_filtered": false, "policy": "loc-rib", > "peer_distinguisher": "3.3.3.5:2", ... Fixes: 875511c46676 ("topotests: add basic bmp collector") Signed-off-by: Philippe Guibert --- tests/topotests/lib/bmp_collector/bgp/update/rd.py | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/tests/topotests/lib/bmp_collector/bgp/update/rd.py b/tests/topotests/lib/bmp_collector/bgp/update/rd.py index 3f08de5ae9..d44060bf2f 100644 --- a/tests/topotests/lib/bmp_collector/bgp/update/rd.py +++ b/tests/topotests/lib/bmp_collector/bgp/update/rd.py @@ -4,6 +4,7 @@ # Authored by Farid Mihoub # import ipaddress +import socket import struct @@ -45,9 +46,11 @@ class RouteDistinguisher: self.repr_str = f"{self.as_number}:{self.assigned_sp}" elif rd_type == 1: - (self.admin_ipv4, self.assigned_sp) = struct.unpack_from("!IH", self.rd[2:]) - ipv4 = str(ipaddress.IPv4Address(self.admin_ipv4)) - self.repr_str = f"{self.as_number}:{self.assigned_sp}" + (self.admin_ipv4, self.assigned_sp) = struct.unpack_from( + "!4sH", self.rd[2:] + ) + ipv4_str = socket.inet_ntoa(self.admin_ipv4) + self.repr_str = f"{ipv4_str}:{self.assigned_sp}" elif rd_type == 2: (self.four_bytes_as, self.assigned_sp) = struct.unpack_from( -- 2.39.5