Skip to content

Commit a923a54

Browse files
[routesync] Fix for stale dynamic neighbor
Signed-off-by: vedganes <veda.ganesan@nokia.com> The changes are for fixing stale neighbor in the ASIC_DB and data path when eBGP neighbors are shutdown and neighbors are flushed. The problem is described in issue: sonic-net/sonic-buildimage#12442 The root cause of this issue is due to not deleing the route from the ASIC_DB when the route's next hop is on eth0 or docker0 interface. The solution is to delete the route entry from ASIC_DB instead of just returning when the route's next hop is on the interface eth0 or docker0
1 parent 4ac9ad9 commit a923a54

1 file changed

Lines changed: 11 additions & 0 deletions

File tree

fpmsyncd/routesync.cpp

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -733,6 +733,17 @@ void RouteSync::onRouteMsg(int nlmsg_type, struct nl_object *obj, char *vrf)
733733
{
734734
SWSS_LOG_DEBUG("Skip routes to eth0 or docker0: %s %s %s",
735735
destipprefix, gw_list.c_str(), intf_list.c_str());
736+
// If intf_list has only this interface, that means all of the next hops of this route
737+
// have been removed and the next hop on the eth0/docker0 has become the only next hop.
738+
// In this case since we do not want the route with next hop on eth0/docker0, we return.
739+
// But still we need to clear the route from the APPL_DB. Otherwise the APPL_DB and data
740+
// path will be left with stale route entry
741+
if(alsv.size() == 1)
742+
{
743+
SWSS_LOG_NOTICE("RouteTable del msg for route with only one nh on eth0/docker0: %s %s %s %s",
744+
destipprefix, gw_list.c_str(), intf_list.c_str(), mpls_list.c_str());
745+
m_routeTable.del(destipprefix);
746+
}
736747
return;
737748
}
738749
}

0 commit comments

Comments
 (0)