BFD: fix bfd_udp_add API

Fix reporting of bs_index in the return message. Enhance test suite
to cover this case.

Change-Id: I37d35b850818bc1a05abe67ca919c22aeac978b6
Signed-off-by: Klement Sekera <ksekera@cisco.com>
diff --git a/src/vnet/bfd/bfd_udp.c b/src/vnet/bfd/bfd_udp.c
index 677f1e2..c1596bf 100644
--- a/src/vnet/bfd/bfd_udp.c
+++ b/src/vnet/bfd/bfd_udp.c
@@ -95,7 +95,7 @@
 bfd_udp_add_session_internal (bfd_udp_main_t *bum, u32 sw_if_index,
                               u32 desired_min_tx_us, u32 required_min_rx_us,
                               u8 detect_mult, const ip46_address_t *local_addr,
-                              const ip46_address_t *peer_addr)
+                              const ip46_address_t *peer_addr, u32 *bs_index)
 {
   vnet_sw_interface_t *sw_if =
       vnet_get_sw_interface (vnet_get_main (), sw_if_index);
@@ -149,6 +149,7 @@
   bs->required_min_echo_rx_us = required_min_rx_us; /* FIXME */
   bs->local_detect_mult = detect_mult;
   bfd_session_start (bum->bfd_main, bs);
+  *bs_index = bs->bs_idx;
   return 0;
 }
 
@@ -224,7 +225,8 @@
 vnet_api_error_t bfd_udp_add_session (u32 sw_if_index, u32 desired_min_tx_us,
                                       u32 required_min_rx_us, u8 detect_mult,
                                       const ip46_address_t *local_addr,
-                                      const ip46_address_t *peer_addr)
+                                      const ip46_address_t *peer_addr,
+                                      u32 *bs_index)
 {
   vnet_api_error_t rv =
       bfd_udp_validate_api_input (sw_if_index, local_addr, peer_addr);
@@ -242,9 +244,9 @@
       BFD_ERR ("desired_min_tx_us < 1");
       return VNET_API_ERROR_INVALID_ARGUMENT;
     }
-  return bfd_udp_add_session_internal (&bfd_udp_main, sw_if_index,
-                                       desired_min_tx_us, required_min_rx_us,
-                                       detect_mult, local_addr, peer_addr);
+  return bfd_udp_add_session_internal (
+      &bfd_udp_main, sw_if_index, desired_min_tx_us, required_min_rx_us,
+      detect_mult, local_addr, peer_addr, bs_index);
 }
 
 vnet_api_error_t bfd_udp_del_session (u32 sw_if_index,