diff --git a/src/sonic-bgpcfgd/bgpcfgd/managers_bgp.py b/src/sonic-bgpcfgd/bgpcfgd/managers_bgp.py index b15f841f6166..bb2b5be63e76 100644 --- a/src/sonic-bgpcfgd/bgpcfgd/managers_bgp.py +++ b/src/sonic-bgpcfgd/bgpcfgd/managers_bgp.py @@ -336,6 +336,15 @@ def get_local_interface(self, local_addr): If the interface has not been set, return None """ local_addresses = self.directory.get_slot("LOCAL", "local_addresses") + + # Handle local_addr string that is not represented in canonical text format, especially for IPv6 addresses + try: + ip = netaddr.IPAddress(str(local_addr)) + except (netaddr.NotRegisteredError, netaddr.AddrFormatError, netaddr.AddrConversionError): + log_warn("IP Address '%s' format is wrong" % (local_addr)) + return None + local_addr = str(ip) + # Check if the local address of this bgp session has been set if local_addr not in local_addresses: return None