aboutsummaryrefslogtreecommitdiffstats
path: root/libtransport/src/hicn/transport/core/vpp_forwarder_interface.cc
diff options
context:
space:
mode:
authorAlberto Compagno <acompagn+fdio@cisco.com>2019-02-22 16:54:25 +0000
committerGerrit Code Review <gerrit@fd.io>2019-02-22 16:54:25 +0000
commitfccece7f012c209f04d9f9be4a10073536091914 (patch)
treeacc160a47ae81e04f1b656c3eb4b012a61fe93a2 /libtransport/src/hicn/transport/core/vpp_forwarder_interface.cc
parentf7b5ee120520802c7009f6925b91c9262fde49a1 (diff)
parent5c774765616b219ddb293ebf37ba79a806523f11 (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.cc19
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