diff --git a/src/sonic_ax_impl/mibs/ietf/rfc1213.py b/src/sonic_ax_impl/mibs/ietf/rfc1213.py index 1b09b0757..0150cdf0f 100644 --- a/src/sonic_ax_impl/mibs/ietf/rfc1213.py +++ b/src/sonic_ax_impl/mibs/ietf/rfc1213.py @@ -530,7 +530,12 @@ def get_oper_status(self, sub_id): :param sub_id: The 1-based sub-identifier query. :return: oper state value for the respective sub_id. """ - return self._get_status(sub_id, "oper_status") + if self.get_oid(sub_id) in self.vlan_oid_name_map: + # VLAN interfaces don't have an operational status, so return admin status for them + key = "admin_status" + else: + key = "oper_status" + return self._get_status(sub_id, key) def get_mtu(self, sub_id): """ diff --git a/src/sonic_ax_impl/mibs/vendor/cisco/bgp4.py b/src/sonic_ax_impl/mibs/vendor/cisco/bgp4.py index 87214707b..46dd68bf3 100644 --- a/src/sonic_ax_impl/mibs/vendor/cisco/bgp4.py +++ b/src/sonic_ax_impl/mibs/vendor/cisco/bgp4.py @@ -39,7 +39,13 @@ def update_data(self): neigh_info = self.db_conn[db_index].get_all(mibs.STATE_DB, neigh_key, blocking=False) if neigh_info: state = neigh_info['state'] - ip = ipaddress.ip_address(neigh_str) + try: + ip = ipaddress.ip_address(neigh_str) + except ValueError: + # In case of unnumbered BGP, the neighbor is an interface. + # That can't be represented here, so just skip the neighbor. + continue + if type(ip) is ipaddress.IPv4Address: oid_head = (1, 4) else: