#include <vppinfra/clib.h>
#include <vnet/adj/adj_types.h>
#include <vnet/ip/ip6_packet.h>
-
-#define BFD_UDP_KEY_BODY
+#include <vnet/bfd/bfd_api.h>
/* *INDENT-OFF* */
typedef CLIB_PACKED (struct {
adj_index_t adj_index;
} bfd_udp_session_t;
-void bfd_add_udp_transport (vlib_main_t * vm, vlib_buffer_t * b,
- bfd_udp_session_t * bs);
+/* bfd udp echo packet trace capture */
+typedef struct
+{
+ u32 len;
+ u8 data[400];
+} bfd_udp_echo_input_trace_t;
+
+struct bfd_session_s;
+
+int bfd_add_udp4_transport (vlib_main_t * vm, vlib_buffer_t * b,
+ const struct bfd_session_s *bs, int is_echo);
+int bfd_add_udp6_transport (vlib_main_t * vm, vlib_buffer_t * b,
+ const struct bfd_session_s *bs, int is_echo);
+
+/**
+ * @brief check if the bfd udp layer is echo-capable at this time
+ *
+ * @return 1 if available, 0 otherwise
+ */
+int bfd_udp_is_echo_available (bfd_transport_e transport);
#endif /* __included_bfd_udp_h__ */