diff --git a/src/sonic_ax_impl/mibs/ietf/rfc4292.py b/src/sonic_ax_impl/mibs/ietf/rfc4292.py index 99adffa63..761166ce7 100644 --- a/src/sonic_ax_impl/mibs/ietf/rfc4292.py +++ b/src/sonic_ax_impl/mibs/ietf/rfc4292.py @@ -63,7 +63,7 @@ def update_data(self): # For single-asic platform, front_ns will be empty list. if front_ns and db_conn.namespace not in front_ns: continue - port_table = multi_asic.get_port_table(db_conn.namespace) + port_table = multi_asic.get_port_table_for_asic(db_conn.namespace) ent = db_conn.get_all(mibs.APPL_DB, route_str, blocking=False) if ent is None: continue @@ -76,13 +76,15 @@ def update_data(self): ## This is to workaround the bug in current sonic-swss implementation if ifn == "eth0" or ifn == "lo" or ifn == "docker0": continue + # Ignore internal asic routes if multi_asic.is_port_channel_internal(ifn, db_conn.namespace): continue if (ifn in port_table and - multi_asic.ROLE in port_table[ifn] and - port_table[ifn][multi_asic.ROLE] == multi_asic.INTERNAL_PORT): + multi_asic.PORT_ROLE in port_table[ifn] and + port_table[ifn][multi_asic.PORT_ROLE] == multi_asic.INTERNAL_PORT): continue + sub_id = ip2tuple_v4(ipn.network_address) + ip2tuple_v4(ipn.netmask) + (self.tos,) + ip2tuple_v4(nh) self.route_dest_list.append(sub_id) self.route_dest_map[sub_id] = ipn.network_address.packed diff --git a/tests/mock_tables/multi_asic.py b/tests/mock_tables/multi_asic.py index ba0a2f75b..a2312283a 100644 --- a/tests/mock_tables/multi_asic.py +++ b/tests/mock_tables/multi_asic.py @@ -34,7 +34,7 @@ def mock_is_port_channel_internal(port_channel, namespace=None): else: return True if port_channel in int_port_channel else False -def mock_get_port_table(namespace=None): +def mock_get_port_table_for_asic(namespace=None): if namespace is not None: fname = os.path.join(INPUT_DIR, namespace, 'config_db.json') else: @@ -44,7 +44,7 @@ def mock_get_port_table(namespace=None): with open(fname) as f: db = json.load(f) for k in db: - if 'PORT_TABLE' in db: + if 'PORT_TABLE' in k: new_key = k[len('PORT_TABLE:'):] port_table[new_key] = db[k] return port_table @@ -53,4 +53,4 @@ def mock_get_port_table(namespace=None): multi_asic.is_multi_asic = mock_is_multi_asic multi_asic.get_all_namespaces = mock_get_all_namespaces multi_asic.is_port_channel_internal = mock_is_port_channel_internal -multi_asic.get_port_table = mock_get_port_table +multi_asic.get_port_table_for_asic = mock_get_port_table_for_asic