Skip to content

Commit 5de5054

Browse files
marian-pritsaklguohan
authored andcommitted
[vrfmgrd]: Support VNET setting (sonic-net#657)
* [vrfmgrd]: Support VNET setting Signed-off-by: Marian Pritsak <[email protected]> * Use VRF/VNET as a tunnel map name Signed-off-by: Marian Pritsak <[email protected]> * Handle VNET and VRF the same way Signed-off-by: Marian Pritsak <[email protected]>
1 parent f666011 commit 5de5054

File tree

3 files changed

+22
-0
lines changed

3 files changed

+22
-0
lines changed

cfgmgr/vrfmgr.cpp

+19
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,8 @@ using namespace swss;
1515

1616
VrfMgr::VrfMgr(DBConnector *cfgDb, DBConnector *appDb, DBConnector *stateDb, const vector<string> &tableNames) :
1717
Orch(cfgDb, tableNames),
18+
m_appVrfTableProducer(appDb, APP_VRF_TABLE_NAME),
19+
m_appVnetTableProducer(appDb, APP_VNET_TABLE_NAME),
1820
m_stateVrfTable(stateDb, STATE_VRF_TABLE_NAME)
1921
{
2022
for (uint32_t i = VRF_TABLE_START; i < VRF_TABLE_END; i++)
@@ -160,6 +162,14 @@ void VrfMgr::doTask(Consumer &consumer)
160162
m_stateVrfTable.set(vrfName, fvVector);
161163

162164
SWSS_LOG_NOTICE("Created vrf netdev %s", vrfName.c_str());
165+
if (consumer.getTableName() == APP_VRF_TABLE_NAME)
166+
{
167+
m_appVrfTableProducer.set(vrfName, kfvFieldsValues(t));
168+
}
169+
else
170+
{
171+
m_appVnetTableProducer.set(vrfName, kfvFieldsValues(t));
172+
}
163173
}
164174
else if (op == DEL_COMMAND)
165175
{
@@ -170,6 +180,15 @@ void VrfMgr::doTask(Consumer &consumer)
170180

171181
m_stateVrfTable.del(vrfName);
172182

183+
if (consumer.getTableName() == APP_VRF_TABLE_NAME)
184+
{
185+
m_appVrfTableProducer.del(vrfName);
186+
}
187+
else
188+
{
189+
m_appVnetTableProducer.del(vrfName);
190+
}
191+
173192
SWSS_LOG_NOTICE("Removed vrf netdev %s", vrfName.c_str());
174193
}
175194
else

cfgmgr/vrfmgr.h

+2
Original file line numberDiff line numberDiff line change
@@ -23,12 +23,14 @@ class VrfMgr : public Orch
2323
bool setLink(const string& vrfName);
2424
void recycleTable(uint32_t table);
2525
uint32_t getFreeTable(void);
26+
void handleVnetConfigSet(KeyOpFieldsValuesTuple &t);
2627
void doTask(Consumer &consumer);
2728

2829
map<string, uint32_t> m_vrfTableMap;
2930
set<uint32_t> m_freeTables;
3031

3132
Table m_stateVrfTable;
33+
ProducerStateTable m_appVrfTableProducer, m_appVnetTableProducer;
3234
};
3335

3436
}

cfgmgr/vrfmgrd.cpp

+1
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,7 @@ int main(int argc, char **argv)
4242
{
4343
vector<string> cfg_vrf_tables = {
4444
CFG_VRF_TABLE_NAME,
45+
CFG_VNET_TABLE_NAME,
4546
};
4647

4748
DBConnector cfgDb(CONFIG_DB, DBConnector::DEFAULT_UNIXSOCKET, 0);

0 commit comments

Comments
 (0)