From 229385955109b866a23c4ac2aa03d4d11044c39d Mon Sep 17 00:00:00 2001 From: "Enrico Loparco (eloparco)" Date: Thu, 24 Jun 2021 09:15:41 +0200 Subject: [HICN-708] Rebase with master Signed-off-by: Enrico Loparco (eloparco) Change-Id: I2122e1d61dd3b2e039972624ffbdbcb3c5610159 --- libtransport/src/core/vpp_forwarder_interface.cc | 23 ++++++++++++++++++----- 1 file changed, 18 insertions(+), 5 deletions(-) (limited to 'libtransport/src/core/vpp_forwarder_interface.cc') diff --git a/libtransport/src/core/vpp_forwarder_interface.cc b/libtransport/src/core/vpp_forwarder_interface.cc index 7b4298592..9f7beeb37 100644 --- a/libtransport/src/core/vpp_forwarder_interface.cc +++ b/libtransport/src/core/vpp_forwarder_interface.cc @@ -36,8 +36,6 @@ namespace transport { namespace core { -std::mutex VPPForwarderInterface::global_lock_; - VPPForwarderInterface::VPPForwarderInterface(MemifConnector &connector) : ForwarderInterface(connector), sw_if_index_(~0), @@ -112,9 +110,24 @@ void VPPForwarderInterface::producerConnection() { } void VPPForwarderInterface::connect(bool is_consumer) { - std::lock_guard connection_lock(global_lock_); + int retry = 20; + + TRANSPORT_LOGI("Connecting to VPP through vapi."); + vapi_error_e ret = vapi_connect_safe(&sock_, 0); + + while (ret != VAPI_OK && retry > 0) { + TRANSPORT_LOGE("Error connecting to VPP through vapi. Retrying.."); + --retry; + ret = vapi_connect_safe(&sock_, 0); + } + + if (ret != VAPI_OK) { + throw std::runtime_error( + "Impossible to connect to forwarder. Is VPP running?"); + } + - vapi_connect_safe(&sock_, 0); + TRANSPORT_LOGI("Connected to VPP through vapi."); sw_if_index_ = getMemifConfiguration(); @@ -167,7 +180,7 @@ void VPPForwarderInterface::registerRoute(Prefix &prefix) { params.prefix->address = addr.address; params.prefix->family = addr.family; params.prefix->len = addr.len; - params.face_id = face_id1_; + params.prod_addr = &producer_locator; int ret = hicn_vapi_register_route(VPPForwarderInterface::sock_, ¶ms); -- cgit 1.2.3-korg