@@ -886,52 +886,6 @@ bool SaiSwitch::l2LearningModeChangeProhibited() const {
886886 return getSwitchRunState () >= l2LearningChangeProhibitedAfter;
887887}
888888
889- template <typename LockPolicyT, typename AddrT>
890- void SaiSwitch::processRemovedRoutesDelta (
891- const RouterID& routerID,
892- const auto & routesDelta,
893- const LockPolicyT& lockPolicy) {
894- if (!rollbackInProgress_) {
895- // Normal processing order
896- processRemovedDelta (
897- routesDelta,
898- managerTable_->routeManager (),
899- lockPolicy,
900- &SaiRouteManager::removeRoute<AddrT>,
901- routerID);
902- } else {
903- processRemovedRoutesDeltaInReverse<LockPolicyT, AddrT>(
904- routerID, routesDelta, lockPolicy);
905- }
906- }
907-
908- template <typename LockPolicyT, typename AddrT>
909- void SaiSwitch::processChangedAndAddedRoutesDelta (
910- const RouterID& routerID,
911- const auto & routesDelta,
912- const LockPolicyT& lockPolicy) {
913- if (!rollbackInProgress_) {
914- // Normal processing order: changed first, then added
915- processChangedDelta (
916- routesDelta,
917- managerTable_->routeManager (),
918- lockPolicy,
919- &SaiRouteManager::changeRoute<AddrT>,
920- routerID);
921- processAddedDelta (
922- routesDelta,
923- managerTable_->routeManager (),
924- lockPolicy,
925- &SaiRouteManager::addRoute<AddrT>,
926- routerID);
927- } else {
928- processChangedRoutesDeltaInReverse<LockPolicyT, AddrT>(
929- routerID, routesDelta, lockPolicy);
930- processAddedRoutesDeltaInReverse<LockPolicyT, AddrT>(
931- routerID, routesDelta, lockPolicy);
932- }
933- }
934-
935889std::shared_ptr<SwitchState> SaiSwitch::stateChangedImpl (
936890 const std::vector<StateDelta>& deltas) {
937891 FineGrainedLockPolicy lockPolicy (saiSwitchMutex_);
@@ -994,10 +948,18 @@ std::shared_ptr<SwitchState> SaiSwitch::stateChangedImplLocked(
994948 for (const auto & routeDelta : fibInfoDelta.getFibsMapDelta ()) {
995949 auto routerID = routeDelta.getOld () ? routeDelta.getOld ()->getID ()
996950 : routeDelta.getNew ()->getID ();
997- processRemovedRoutesDelta<LockPolicyT, folly::IPAddressV6>(
998- routerID, routeDelta.getFibDelta <folly::IPAddressV6>(), lockPolicy);
999- processRemovedRoutesDelta<LockPolicyT, folly::IPAddressV4>(
1000- routerID, routeDelta.getFibDelta <folly::IPAddressV4>(), lockPolicy);
951+ processRemovedDelta (
952+ routeDelta.getFibDelta <folly::IPAddressV4>(),
953+ managerTable_->routeManager (),
954+ lockPolicy,
955+ &SaiRouteManager::removeRoute<folly::IPAddressV4>,
956+ routerID);
957+ processRemovedDelta (
958+ routeDelta.getFibDelta <folly::IPAddressV6>(),
959+ managerTable_->routeManager (),
960+ lockPolicy,
961+ &SaiRouteManager::removeRoute<folly::IPAddressV6>,
962+ routerID);
1001963 }
1002964 }
1003965
@@ -1326,14 +1288,46 @@ std::shared_ptr<SwitchState> SaiSwitch::stateChangedImplLocked(
13261288 &SaiFdbManager::addMac);
13271289 }
13281290
1291+ auto processV4RoutesChangedAndAddedDelta =
1292+ [this , &lockPolicy](RouterID rid, const auto & routesDelta) {
1293+ processChangedDelta (
1294+ routesDelta,
1295+ managerTable_->routeManager (),
1296+ lockPolicy,
1297+ &SaiRouteManager::changeRoute<folly::IPAddressV4>,
1298+ rid);
1299+ processAddedDelta (
1300+ routesDelta,
1301+ managerTable_->routeManager (),
1302+ lockPolicy,
1303+ &SaiRouteManager::addRoute<folly::IPAddressV4>,
1304+ rid);
1305+ };
1306+
1307+ auto processV6RoutesChangedAndAddedDelta =
1308+ [this , &lockPolicy](RouterID rid, const auto & routesDelta) {
1309+ processChangedDelta (
1310+ routesDelta,
1311+ managerTable_->routeManager (),
1312+ lockPolicy,
1313+ &SaiRouteManager::changeRoute<folly::IPAddressV6>,
1314+ rid);
1315+ processAddedDelta (
1316+ routesDelta,
1317+ managerTable_->routeManager (),
1318+ lockPolicy,
1319+ &SaiRouteManager::addRoute<folly::IPAddressV6>,
1320+ rid);
1321+ };
1322+
13291323 for (const auto & fibInfoDelta : delta.getFibsInfoDelta ()) {
13301324 for (const auto & routeDelta : fibInfoDelta.getFibsMapDelta ()) {
13311325 auto routerID = routeDelta.getOld () ? routeDelta.getOld ()->getID ()
13321326 : routeDelta.getNew ()->getID ();
1333- processChangedAndAddedRoutesDelta<LockPolicyT, folly::IPAddressV6> (
1334- routerID, routeDelta.getFibDelta <folly::IPAddressV6 >(), lockPolicy );
1335- processChangedAndAddedRoutesDelta<LockPolicyT, folly::IPAddressV4> (
1336- routerID, routeDelta.getFibDelta <folly::IPAddressV4 >(), lockPolicy );
1327+ processV4RoutesChangedAndAddedDelta (
1328+ routerID, routeDelta.getFibDelta <folly::IPAddressV4 >());
1329+ processV6RoutesChangedAndAddedDelta (
1330+ routerID, routeDelta.getFibDelta <folly::IPAddressV6 >());
13371331 }
13381332 }
13391333 {
0 commit comments