diff --git a/teamsyncd/teamsync.cpp b/teamsyncd/teamsync.cpp index 39a9337c725..d3fb222d5c0 100644 --- a/teamsyncd/teamsync.cpp +++ b/teamsyncd/teamsync.cpp @@ -16,10 +16,11 @@ using namespace swss; /* Taken from drivers/net/team/team.c */ #define TEAM_DRV_NAME "team" -TeamSync::TeamSync(DBConnector *db, Select *select) : +TeamSync::TeamSync(DBConnector *db, DBConnector *stateDb, Select *select) : m_select(select), m_lagTable(db, APP_LAG_TABLE_NAME), - m_lagMemberTable(db, APP_LAG_MEMBER_TABLE_NAME) + m_lagMemberTable(db, APP_LAG_MEMBER_TABLE_NAME), + m_stateLagTable(stateDb, STATE_LAG_TABLE_NAME, CONFIGDB_TABLE_NAME_SEPARATOR) { } @@ -72,6 +73,11 @@ void TeamSync::addLag(const string &lagName, int ifindex, bool admin_state, auto sync = make_shared(lagName, ifindex, &m_lagMemberTable); m_select->addSelectable(sync.get()); m_teamPorts[lagName] = sync; + + fvVector.clear(); + FieldValueTuple s("state", "ok"); + fvVector.push_back(s); + m_stateLagTable.set(lagName, fvVector); } void TeamSync::removeLag(const string &lagName) @@ -88,6 +94,7 @@ void TeamSync::removeLag(const string &lagName) /* No longer track the current team instance */ m_select->removeSelectable(m_teamPorts[lagName].get()); m_teamPorts.erase(lagName); + m_stateLagTable.del(lagName); } const struct team_change_handler TeamSync::TeamPortSync::gPortChangeHandler = { diff --git a/teamsyncd/teamsync.h b/teamsyncd/teamsync.h index 3574ede4d64..8f8114a5b20 100644 --- a/teamsyncd/teamsync.h +++ b/teamsyncd/teamsync.h @@ -16,7 +16,7 @@ namespace swss { class TeamSync : public NetMsg { public: - TeamSync(DBConnector *db, Select *select); + TeamSync(DBConnector *db, DBConnector *stateDb, Select *select); /* * Listens to RTM_NEWLINK and RTM_DELLINK to undestand if there is a new @@ -59,6 +59,7 @@ class TeamSync : public NetMsg Select *m_select; ProducerStateTable m_lagTable; ProducerStateTable m_lagMemberTable; + Table m_stateLagTable; std::map > m_teamPorts; }; diff --git a/teamsyncd/teamsyncd.cpp b/teamsyncd/teamsyncd.cpp index edb069e2c4f..3ed2fb4dced 100644 --- a/teamsyncd/teamsyncd.cpp +++ b/teamsyncd/teamsyncd.cpp @@ -13,8 +13,9 @@ int main(int argc, char **argv) { swss::Logger::linkToDbNative("teamsyncd"); DBConnector db(APPL_DB, DBConnector::DEFAULT_UNIXSOCKET, 0); + DBConnector stateDb(STATE_DB, DBConnector::DEFAULT_UNIXSOCKET, 0); Select s; - TeamSync sync(&db, &s); + TeamSync sync(&db, &stateDb, &s); NetDispatcher::getInstance().registerMessageHandler(RTM_NEWLINK, &sync); NetDispatcher::getInstance().registerMessageHandler(RTM_DELLINK, &sync);