diff --git a/orchagent/vxlanorch.cpp b/orchagent/vxlanorch.cpp index fc6a505a1f18..8fce069631ce 100644 --- a/orchagent/vxlanorch.cpp +++ b/orchagent/vxlanorch.cpp @@ -1542,28 +1542,12 @@ bool VxlanTunnelOrch::removeVxlanTunnelMap(string tunnelName, uint32_t vni) tunnel_obj->vlan_vrf_vni_count--; if (tunnel_obj->vlan_vrf_vni_count == 0) { - auto tunnel_term_id = vxlan_tunnel_table_[tunnelName].get()->getTunnelTermId(); - try - { - remove_tunnel_termination(tunnel_term_id); - } - catch(const std::runtime_error& error) - { - SWSS_LOG_ERROR("Error removing tunnel term entry. Tunnel: %s. Error: %s", tunnelName.c_str(), error.what()); - return false; - } - - auto tunnel_id = vxlan_tunnel_table_[tunnelName].get()->getTunnelId(); - try - { - removeTunnelFromFlexCounter(tunnel_id, tunnelName); - remove_tunnel(tunnel_id); - } - catch(const std::runtime_error& error) - { - SWSS_LOG_ERROR("Error removing tunnel entry. Tunnel: %s. Error: %s", tunnelName.c_str(), error.what()); - return false; - } + uint8_t mapper_list = 0; + + TUNNELMAP_SET_VLAN(mapper_list); + TUNNELMAP_SET_VRF(mapper_list); + + tunnel_obj->deleteTunnelHw(mapper_list, TUNNEL_MAP_USE_DEDICATED_ENCAP_DECAP); } SWSS_LOG_NOTICE("Vxlan map entry deleted for tunnel '%s' with vni '%d'", tunnelName.c_str(), vni); diff --git a/tests/test_vnet.py b/tests/test_vnet.py index 41217de92e32..0f0e5540920f 100644 --- a/tests/test_vnet.py +++ b/tests/test_vnet.py @@ -362,6 +362,9 @@ def create_vxlan_tunnel(dvs, name, src_ip): attrs, ) +def delete_vxlan_tunnel(dvs, name): + conf_db = swsscommon.DBConnector(swsscommon.CONFIG_DB, dvs.redis_sock, 0) + delete_entry_tbl(conf_db, "VXLAN_TUNNEL", name) def create_vxlan_tunnel_map(dvs, tunnel_name, tunnel_map_entry_name, vlan, vni_id): conf_db = swsscommon.DBConnector(swsscommon.CONFIG_DB, dvs.redis_sock, 0) @@ -621,6 +624,18 @@ def check_vxlan_tunnel(self, dvs, tunnel_name, src_ip): self.tunnel_map_map[tunnel_name] = tunnel_map_id self.tunnel[tunnel_name] = tunnel_id + def check_del_vxlan_tunnel(self, dvs): + asic_db = swsscommon.DBConnector(swsscommon.ASIC_DB, dvs.redis_sock, 0) + + old_tunnel = get_deleted_entries(asic_db, self.ASIC_TUNNEL_TABLE, self.tunnel_ids, 1) + check_deleted_object(asic_db, self.ASIC_TUNNEL_TABLE, old_tunnel[0]) + self.tunnel_ids.remove(old_tunnel[0]) + + old_tunnel_maps = get_deleted_entries(asic_db, self.ASIC_TUNNEL_MAP, self.tunnel_map_ids, 4) + for old_tunnel_map in old_tunnel_maps: + check_deleted_object(asic_db, self.ASIC_TUNNEL_MAP, old_tunnel_map) + self.tunnel_map_ids.remove(old_tunnel_map) + def check_vxlan_tunnel_entry(self, dvs, tunnel_name, vnet_name, vni_id): asic_db = swsscommon.DBConnector(swsscommon.ASIC_DB, dvs.redis_sock, 0) app_db = swsscommon.DBConnector(swsscommon.APPL_DB, dvs.redis_sock, 0) @@ -1049,6 +1064,9 @@ def test_vnet_orch_1(self, dvs, testlog): delete_vnet_entry(dvs, 'Vnet_2000') vnet_obj.check_del_vnet_entry(dvs, 'Vnet_2000') + delete_vxlan_tunnel(dvs, tunnel_name) + vnet_obj.check_del_vxlan_tunnel(dvs) + ''' Test 2 - Two VNets, One HSMs per VNet ''' @@ -1175,6 +1193,9 @@ def test_vnet_orch_2(self, dvs, testlog): delete_vnet_entry(dvs, 'Vnet_2') vnet_obj.check_del_vnet_entry(dvs, 'Vnet_2') + delete_vxlan_tunnel(dvs, tunnel_name) + vnet_obj.check_del_vxlan_tunnel(dvs) + ''' Test 3 - Two VNets, One HSMs per VNet, Peering ''' @@ -1255,6 +1276,9 @@ def test_vnet_orch_3(self, dvs, testlog): delete_vnet_entry(dvs, 'Vnet_20') vnet_obj.check_del_vnet_entry(dvs, 'Vnet_20') + delete_vxlan_tunnel(dvs, tunnel_name) + vnet_obj.check_del_vxlan_tunnel(dvs) + ''' Test 4 - IPv6 Vxlan tunnel test ''' @@ -1396,6 +1420,9 @@ def test_vnet_orch_4(self, dvs, testlog): delete_vnet_entry(dvs, 'Vnet3001') vnet_obj.check_del_vnet_entry(dvs, 'Vnet3001') + delete_vxlan_tunnel(dvs, tunnel_name) + vnet_obj.check_del_vxlan_tunnel(dvs) + ''' Test 5 - Default VNet test '''