diff options
author | Alberto Compagno <acompagn+fdio@cisco.com> | 2019-02-22 16:54:25 +0000 |
---|---|---|
committer | Gerrit Code Review <gerrit@fd.io> | 2019-02-22 16:54:25 +0000 |
commit | fccece7f012c209f04d9f9be4a10073536091914 (patch) | |
tree | acc160a47ae81e04f1b656c3eb4b012a61fe93a2 /libtransport/src/hicn/transport/core/vpp_forwarder_interface.cc | |
parent | f7b5ee120520802c7009f6925b91c9262fde49a1 (diff) | |
parent | 5c774765616b219ddb293ebf37ba79a806523f11 (diff) |
Merge "[HICN-80] Avoid segfault when deleting memif interface on VPP."
Diffstat (limited to 'libtransport/src/hicn/transport/core/vpp_forwarder_interface.cc')
-rw-r--r-- | libtransport/src/hicn/transport/core/vpp_forwarder_interface.cc | 19 |
1 files changed, 10 insertions, 9 deletions
diff --git a/libtransport/src/hicn/transport/core/vpp_forwarder_interface.cc b/libtransport/src/hicn/transport/core/vpp_forwarder_interface.cc index 8dc607295..0d622f9a3 100644 --- a/libtransport/src/hicn/transport/core/vpp_forwarder_interface.cc +++ b/libtransport/src/hicn/transport/core/vpp_forwarder_interface.cc @@ -208,20 +208,21 @@ void VPPForwarderInterface::registerRoute(Prefix &prefix) { } void VPPForwarderInterface::closeConnection() { - if (sw_if_index_ != uint32_t(~0) && VPPForwarderInterface::memif_api_) { - int ret = memif_binary_api_delete_memif(VPPForwarderInterface::memif_api_, - sw_if_index_); + if (VPPForwarderInterface::api_) { + if (sw_if_index_ != uint32_t(~0)) { + int ret = memif_binary_api_delete_memif(VPPForwarderInterface::memif_api_, + sw_if_index_); - if (ret < 0) { - TRANSPORT_LOGE("Error deleting memif with sw idx %u.", sw_if_index_); + if (ret < 0) { + TRANSPORT_LOGE("Error deleting memif with sw idx %u.", sw_if_index_); + } } - } - if (VPPForwarderInterface::api_) { vpp_binary_api_destroy(VPPForwarderInterface::api_); - } + connector_.close(); - connector_.close(); + VPPForwarderInterface::api_ = nullptr; + } } } // namespace core |