vpp-swan: change flow in function for add route
This patch addresses the issue when the list of available interfaces
is not up to date. Due to this issue adding a new route fails
and finally the connection is not established.
Type: fix
Signed-off-by: Gabriel Oginski <gabrielx.oginski@intel.com>
Change-Id: I3a63c0dd99ebc28ea149b4b23867440937682761
diff --git a/extras/strongswan/vpp_sswan/kernel_vpp_net.c b/extras/strongswan/vpp_sswan/kernel_vpp_net.c
index 85e2768..82eea17 100644
--- a/extras/strongswan/vpp_sswan/kernel_vpp_net.c
+++ b/extras/strongswan/vpp_sswan/kernel_vpp_net.c
@@ -159,18 +159,29 @@
vl_api_fib_path_t *apath;
bool exists = FALSE;
- this->mutex->lock (this->mutex);
- enumerator = this->ifaces->create_enumerator (this->ifaces);
- while (enumerator->enumerate (enumerator, &entry))
+ for (int i = 0; i < N_RETRY_GET_IF; i++)
{
- if (streq (name, entry->if_name))
+ this->mutex->lock (this->mutex);
+ enumerator = this->ifaces->create_enumerator (this->ifaces);
+ while (enumerator->enumerate (enumerator, &entry))
{
- exists = TRUE;
- break;
+ if (streq (name, entry->if_name))
+ {
+ exists = TRUE;
+ break;
+ }
}
+ enumerator->destroy (enumerator);
+ this->mutex->unlock (this->mutex);
+
+ if (!exists)
+ {
+ DBG1 (DBG_NET, "if_name %s not found", name);
+ sleep (1);
+ }
+ else
+ break;
}
- enumerator->destroy (enumerator);
- this->mutex->unlock (this->mutex);
if (!exists)
{