#include <vnet/lisp-cp/gid_dictionary.h>
#include <vnet/lisp-cp/lisp_types.h>
#include <vppinfra/timing_wheel.h>
+#include <vppinfra/tw_timer_1t_3w_1024sl_ov.h>
#define NUMBER_OF_RETRIES 1
#define PENDING_MREQ_EXPIRATION_TIME 3.0 /* seconds */
} map_request_mode_t;
#define foreach_lisp_flag_bit \
- _(USE_PETR, "Use Proxy-ETR") \
+ _(USE_PETR, "Use Proxy-ETR") \
+ _(XTR_MODE, "ITR/ETR mode") \
+ _(PETR_MODE, "Proxy-ETR mode") \
+ _(PITR_MODE, "Proxy-ITR mode") \
_(STATS_ENABLED, "Statistics enabled")
typedef enum lisp_flag_bits
/* Proxy ITR map index */
u32 pitr_map_index;
- /** Proxy ETR map index */
+ /** Proxy ETR map index used for 'use-petr'.
+ * Not related to PETR tunnel mode */
u32 petr_map_index;
- /* LISP PITR mode */
- u8 lisp_pitr;
-
/* mapping index for NSH */
u32 nsh_map_index;
/* enable/disable rloc-probing */
u8 rloc_probing;
- /* timing wheel for mappping timeouts */
- timing_wheel_t wheel;
+ /* timing wheel for mapping timeouts */
+ TWT (tw_timer_wheel) wheel;
/** Per thread pool of records shared with thread0 */
map_records_arg_t **map_records_args_pool;
/** either UDP based or binary API. Default is UDP */
lisp_transport_protocol_t transport_protocol;
+ /** Retry service node index */
+ u32 retry_service_index;
+
/* commodity */
ip4_main_t *im4;
ip6_main_t *im6;
clib_error_t *vnet_lisp_enable_disable (u8 is_enabled);
u8 vnet_lisp_enable_disable_status (void);
+void vnet_lisp_create_retry_process (lisp_cp_main_t * lcm);
int vnet_lisp_pitr_set_locator_set (u8 * locator_set_name, u8 is_add);
int vnet_lisp_use_petr (ip_address_t * ip, u8 is_add);
u32 vnet_lisp_set_transport_protocol (u8 protocol);
lisp_transport_protocol_t vnet_lisp_get_transport_protocol (void);
+extern int vnet_lisp_enable_disable_xtr_mode (u8 is_enabled);
+extern int vnet_lisp_enable_disable_pitr_mode (u8 is_enabled);
+extern int vnet_lisp_enable_disable_petr_mode (u8 is_enabled);
+extern u8 vnet_lisp_get_xtr_mode (void);
+extern u8 vnet_lisp_get_pitr_mode (void);
+extern u8 vnet_lisp_get_petr_mode (void);
+
map_records_arg_t *parse_map_reply (vlib_buffer_t * b);
always_inline mapping_t *