diff --git a/src/sonic_ax_impl/mibs/ietf/rfc4292.py b/src/sonic_ax_impl/mibs/ietf/rfc4292.py index e9d93bb1f8f7..487d14855d91 100644 --- a/src/sonic_ax_impl/mibs/ietf/rfc4292.py +++ b/src/sonic_ax_impl/mibs/ietf/rfc4292.py @@ -29,7 +29,7 @@ def reinit_data(self): if not loopbacks: return - # collect only ipv4 interfaces + ## Collect only ipv4 lo interfaces for loopback in loopbacks: lostr = loopback.decode() loip = lostr[len("INTF_TABLE:lo:"):] @@ -45,6 +45,12 @@ def update_data(self): self.route_dest_map = {} self.route_dest_list = [] + ## The nexthop for loopbacks should be all zero + for loip in self.loips: + sub_id = ip2tuple_v4(loip) + (255, 255, 255, 255) + (self.tos,) + (0, 0, 0, 0) + self.route_dest_list.append(sub_id) + self.route_dest_map[sub_id] = self.loips[loip].packed + self.db_conn.connect(mibs.APPL_DB) route_entries = self.db_conn.keys(mibs.APPL_DB, "ROUTE_TABLE:*") if not route_entries: @@ -66,11 +72,6 @@ def update_data(self): 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 - elif ipnstr in self.loips: - ## Note: ipv4 /32 or ipv6 /128 routes will has no prefix ending - sub_id = ip2tuple_v4(ipnstr) + (255, 255, 255, 255) + (self.tos,) + (0, 0, 0, 0) - self.route_dest_list.append(sub_id) - self.route_dest_map[sub_id] = self.loips[ipnstr].packed self.route_dest_list.sort()