diff --git a/cfgmgr/intfmgr.cpp b/cfgmgr/intfmgr.cpp index 055141dab14..498815c6235 100644 --- a/cfgmgr/intfmgr.cpp +++ b/cfgmgr/intfmgr.cpp @@ -495,7 +495,12 @@ bool IntfMgr::doIntfGeneralTask(const vector& keys, if (is_lo) { - addLoopbackIntf(alias); + if (m_loopbackIntfList.find(alias) == m_loopbackIntfList.end()) + { + addLoopbackIntf(alias); + m_loopbackIntfList.insert(alias); + SWSS_LOG_INFO("Added %s loopback interface", alias.c_str()); + } } else { @@ -598,6 +603,7 @@ bool IntfMgr::doIntfGeneralTask(const vector& keys, if (is_lo) { delLoopbackIntf(alias); + m_loopbackIntfList.erase(alias); } if (!subIntfAlias.empty()) diff --git a/cfgmgr/intfmgr.h b/cfgmgr/intfmgr.h index e20ce0d4a4a..4148743c705 100644 --- a/cfgmgr/intfmgr.h +++ b/cfgmgr/intfmgr.h @@ -22,6 +22,7 @@ class IntfMgr : public Orch Table m_statePortTable, m_stateLagTable, m_stateVlanTable, m_stateVrfTable, m_stateIntfTable; std::set m_subIntfList; + std::set m_loopbackIntfList; void setIntfIp(const std::string &alias, const std::string &opCmd, const IpPrefix &ipPrefix); void setIntfVrf(const std::string &alias, const std::string &vrfName);