]> git.puffer.fish Git - matthieu/frr.git/commitdiff
topotests: bmp_collector, fix display peer distinguisher IP:AS2B
authorPhilippe Guibert <philippe.guibert@6wind.com>
Tue, 3 Dec 2024 07:30:54 +0000 (08:30 +0100)
committerPhilippe Guibert <philippe.guibert@6wind.com>
Mon, 30 Dec 2024 14:13:38 +0000 (15:13 +0100)
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 <philippe.guibert@6wind.com>
tests/topotests/lib/bmp_collector/bgp/update/rd.py

index 3f08de5ae9f021af47f081d0c3d5ea8f6da5d896..d44060bf2f326040320bed71aeb01be50e5d64fa 100644 (file)
@@ -4,6 +4,7 @@
 # Authored by Farid Mihoub <farid.mihoub@6wind.com>
 #
 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(