From 9fbcb60bf5c3a3a137b3d7e8ca5853b18b850a13 Mon Sep 17 00:00:00 2001 From: pavel-shirshov Date: Fri, 9 Nov 2018 12:40:08 -0800 Subject: [PATCH] Add warm-reboot mode for teammgrd (#678) * Add Warm-reboot mode for teammgrd --- cfgmgr/teammgr.cpp | 11 ++++++++++- cfgmgr/teammgrd.cpp | 4 ++++ 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/cfgmgr/teammgr.cpp b/cfgmgr/teammgr.cpp index c68e0bcaaca1..5d526e79df13 100644 --- a/cfgmgr/teammgr.cpp +++ b/cfgmgr/teammgr.cpp @@ -5,6 +5,7 @@ #include "logger.h" #include "shellcmd.h" #include "tokenize.h" +#include "warm_restart.h" #include #include @@ -380,7 +381,15 @@ bool TeamMgr::addLag(const string &alias, int min_links, bool fallback) SWSS_LOG_INFO("Port channel %s teamd configuration: %s", alias.c_str(), conf.str().c_str()); - cmd << TEAMD_CMD << " -r -t " << alias << " -c " << conf.str() << " -d"; + string warmstart_flag = WarmStart::isWarmStart() ? " -w " : ""; + const string dump_path = "/var/warmboot/teamd/"; + + cmd << TEAMD_CMD + << warmstart_flag + << " -r -t " << alias + << " -c " << conf.str() + << " -L " << dump_path + << " -d"; EXEC_WITH_ERROR_THROW(cmd.str(), res); SWSS_LOG_NOTICE("Start port channel %s with teamd", alias.c_str()); diff --git a/cfgmgr/teammgrd.cpp b/cfgmgr/teammgrd.cpp index d8aeca455b49..cb9590e92a7c 100644 --- a/cfgmgr/teammgrd.cpp +++ b/cfgmgr/teammgrd.cpp @@ -4,6 +4,7 @@ #include "netdispatcher.h" #include "netlink.h" #include "select.h" +#include "warm_restart.h" using namespace std; using namespace swss; @@ -29,6 +30,9 @@ int main(int argc, char **argv) DBConnector app_db(APPL_DB, DBConnector::DEFAULT_UNIXSOCKET, 0); DBConnector state_db(STATE_DB, DBConnector::DEFAULT_UNIXSOCKET, 0); + WarmStart::initialize("teammgrd"); + WarmStart::checkWarmStart("teammgrd"); + TableConnector conf_lag_table(&conf_db, CFG_LAG_TABLE_NAME); TableConnector conf_lag_member_table(&conf_db, CFG_LAG_MEMBER_TABLE_NAME); TableConnector state_port_table(&state_db, STATE_PORT_TABLE_NAME);