Skip to content

Commit 7f53db7

Browse files
authored
set remote vtep the netdev down before delete (#2075)
*set vtep-xxx the netdev down before delete vtep-xxx .
1 parent 3d3364f commit 7f53db7

File tree

2 files changed

+21
-9
lines changed

2 files changed

+21
-9
lines changed

cfgmgr/vxlanmgr.cpp

+20-9
Original file line numberDiff line numberDiff line change
@@ -643,6 +643,7 @@ bool VxlanMgr::doVxlanTunnelMapDeleteTask(const KeyOpFieldsValuesTuple & t)
643643
vxlan_dev_name = map_entry.vxlan_dev_name;
644644
vlan = map_entry.vlan;
645645
vni_id = map_entry.vni_id;
646+
downVxlanNetdevice(vxlan_dev_name);
646647
deleteVxlanNetdevice(vxlan_dev_name);
647648

648649
m_vxlanTunnelMapCache.erase(vxlanTunnelMapName);
@@ -906,11 +907,11 @@ void VxlanMgr::createAppDBTunnelMapTable(const KeyOpFieldsValuesTuple & t)
906907
std::replace(vxlanTunnelMapName.begin(), vxlanTunnelMapName.end(), config_db_key_delimiter, delimiter);
907908

908909
/* Case 1: Entry exist - Erase from cache & return
909-
* Case 2: Entry does not exist - Write to AppDB
910+
* Case 2: Entry does not exist - Write to AppDB
910911
* Case 3: Entry exist but modified - Not taken care. Will address later
911912
*/
912913
if (m_in_reconcile)
913-
{
914+
{
914915
auto it = find(m_appVxlanTunnelMapKeysRecon.begin(), m_appVxlanTunnelMapKeysRecon.end(), vxlanTunnelMapName);
915916
if (it != m_appVxlanTunnelMapKeysRecon.end())
916917
{
@@ -939,28 +940,28 @@ void VxlanMgr::delAppDBTunnelMapTable(std::string vxlanTunnelMapName)
939940
m_appVxlanTunnelMapTable.del(vxlanTunnelMapName);
940941
}
941942

942-
int VxlanMgr::createVxlanNetdevice(std::string vxlanTunnelName, std::string vni_id,
943-
std::string src_ip, std::string dst_ip,
943+
int VxlanMgr::createVxlanNetdevice(std::string vxlanTunnelName, std::string vni_id,
944+
std::string src_ip, std::string dst_ip,
944945
std::string vlan_id)
945946
{
946947
std::string res, cmds;
947-
std::string link_add_cmd, link_set_master_cmd, link_up_cmd;
948+
std::string link_add_cmd, link_set_master_cmd, link_up_cmd;
948949
std::string bridge_add_cmd, bridge_untagged_add_cmd, bridge_del_vid_cmd;
949950
std::string vxlan_dev_name;
950951

951-
vxlan_dev_name = std::string("") + std::string(vxlanTunnelName) + "-" +
952+
vxlan_dev_name = std::string("") + std::string(vxlanTunnelName) + "-" +
952953
std::string(vlan_id);
953954

954955
SWSS_LOG_INFO("Kernel tnl_name: %s vni_id: %s src_ip: %s dst_ip:%s vlan_id: %s",
955-
vxlanTunnelName.c_str(), vni_id.c_str(), src_ip.c_str(), dst_ip.c_str(),
956+
vxlanTunnelName.c_str(), vni_id.c_str(), src_ip.c_str(), dst_ip.c_str(),
956957
vlan_id.c_str());
957958

958959
// Case 1: Entry exist - Erase from cache & return
959960
// Case 2: Entry does not exist - Create netDevice in Kernel
960961
// Case 3: Entry exist but modified - Not taken care. Will address later
961-
962+
962963
if (m_in_reconcile)
963-
{
964+
{
964965
auto it = m_vxlanNetDevices.find(vxlan_dev_name);
965966
if (it != m_vxlanNetDevices.end())
966967
{
@@ -1024,6 +1025,15 @@ int VxlanMgr::createVxlanNetdevice(std::string vxlanTunnelName, std::string vni_
10241025
return swss::exec(cmds,res);
10251026
}
10261027

1028+
int VxlanMgr::downVxlanNetdevice(std::string vxlan_dev_name)
1029+
{
1030+
int ret = 0;
1031+
std::string res;
1032+
const std::string cmd = std::string("") + IP_CMD + " link set dev " + vxlan_dev_name + " down";
1033+
exec(cmd, res);
1034+
return ret;
1035+
}
1036+
10271037
int VxlanMgr::deleteVxlanNetdevice(std::string vxlan_dev_name)
10281038
{
10291039
std::string res;
@@ -1188,6 +1198,7 @@ void VxlanMgr::clearAllVxlanDevices()
11881198
if (netdev_type.compare(VXLAN))
11891199
{
11901200
info.m_vxlan = netdev_name;
1201+
downVxlanNetdevice(netdev_name);
11911202
cmdDeleteVxlan(info, res);
11921203
}
11931204
else if(netdev_type.compare(VXLAN_IF))

cfgmgr/vxlanmgr.h

+1
Original file line numberDiff line numberDiff line change
@@ -70,6 +70,7 @@ class VxlanMgr : public Orch
7070
void delAppDBTunnelMapTable(std::string vxlanTunnelMapName);
7171
int createVxlanNetdevice(std::string vxlanTunnelName, std::string vni_id,
7272
std::string src_ip, std::string dst_ip, std::string vlan_id);
73+
int downVxlanNetdevice(std::string vxlan_dev_name);
7374
int deleteVxlanNetdevice(std::string vxlan_dev_name);
7475
std::vector<std::string> parseNetDev(const std::string& stdout);
7576
void getAllVxlanNetDevices();

0 commit comments

Comments
 (0)