FD.io VPP  v20.01-48-g3e0dafb74
Vector Packet Processing
control.c File Reference
+ Include dependency graph for control.c:

Go to the source code of this file.

Data Structures

struct  map_request_args_t
 
struct  fwd_entry_mt_arg_t
 
struct  lisp_add_l2_arp_ndp_args_t
 
struct  remove_mapping_args_t
 
struct  lisp_cp_lookup_trace_t
 
struct  lisp_cp_input_trace_t
 

Macros

#define MAX_VALUE_U24   0xffffff
 
#define TIME_UNTIL_REFETCH_OR_DELETE   20
 
#define MAPPING_TIMEOUT   (((m->ttl) * 60) - TIME_UNTIL_REFETCH_OR_DELETE)
 
#define foreach_lisp_cp_lookup_error
 
#define foreach_msmr
 
#define foreach_lisp_cp_output_error
 
#define send_encapsulated_map_request(lcm, seid, deid, smr)   _send_encapsulated_map_request(lcm, seid, deid, smr, 0)
 
#define resend_encapsulated_map_request(lcm, seid, deid, smr)   _send_encapsulated_map_request(lcm, seid, deid, smr, 1)
 
#define foreach_lisp_cp_input_error
 

Enumerations

enum  lisp_cp_input_next_t { LISP_CP_INPUT_NEXT_DROP, LISP_CP_INPUT_N_NEXT }
 
enum  lisp_cp_lookup_error_t { LISP_CP_LOOKUP_N_ERROR }
 
enum  lisp_cp_lookup_next_t { LISP_CP_LOOKUP_NEXT_DROP, LISP_CP_LOOKUP_NEXT_ARP_NDP_REPLY_TX, LISP_CP_LOOKUP_N_NEXT }
 
enum  lisp_cp_output_error_t { LISP_CP_OUTPUT_N_ERROR }
 
enum  lisp_cp_input_error_t { LISP_CP_INPUT_N_ERROR }
 

Functions

u8format_lisp_cp_input_trace (u8 *s, va_list *args)
 
static void * send_map_request_thread_fn (void *arg)
 
u8 vnet_lisp_get_map_request_mode (void)
 
static u16 auth_data_len_by_key_id (lisp_key_type_t key_id)
 
static int queue_map_request (gid_address_t *seid, gid_address_t *deid, u8 smr_invoked, u8 is_resend)
 
ip_interface_address_tip_interface_get_first_interface_address (ip_lookup_main_t *lm, u32 sw_if_index, u8 loop)
 
void * ip_interface_get_first_address (ip_lookup_main_t *lm, u32 sw_if_index, u8 version)
 
int ip_interface_get_first_ip_address (lisp_cp_main_t *lcm, u32 sw_if_index, u8 version, ip_address_t *result)
 
void ip_address_to_fib_prefix (const ip_address_t *addr, fib_prefix_t *prefix)
 convert from a LISP address to a FIB prefix More...
 
void ip_prefix_to_fib_prefix (const ip_prefix_t *ip_prefix, fib_prefix_t *fib_prefix)
 convert from a LISP to a FIB prefix More...
 
u32 ip_fib_get_egress_iface_for_dst (lisp_cp_main_t *lcm, ip_address_t *dst)
 Find the sw_if_index of the interface that would be used to egress towards dst. More...
 
int ip_fib_get_first_egress_ip_for_dst (lisp_cp_main_t *lcm, ip_address_t *dst, ip_address_t *result)
 Find first IP of the interface that would be used to egress towards dst. More...
 
static int dp_add_del_iface (lisp_cp_main_t *lcm, u32 vni, u8 is_l2, u8 is_add, u8 with_default_route)
 
static void dp_del_fwd_entry (lisp_cp_main_t *lcm, u32 dst_map_index)
 
static u32 get_locator_pairs (lisp_cp_main_t *lcm, mapping_t *lcl_map, mapping_t *rmt_map, locator_pair_t **locator_pairs)
 Finds first remote locator with best (lowest) priority that has a local peer locator with an underlying route to it. More...
 
static void gid_address_sd_to_flat (gid_address_t *dst, gid_address_t *src, fid_address_t *fid)
 
u8 vnet_lisp_map_register_state_get (void)
 
u8 vnet_lisp_rloc_probe_state_get (void)
 
static void dp_add_fwd_entry (lisp_cp_main_t *lcm, u32 src_map_index, u32 dst_map_index)
 
static void * dp_add_fwd_entry_thread_fn (void *arg)
 
static int dp_add_fwd_entry_from_mt (u32 si, u32 di)
 
lisp_adjacency_tvnet_lisp_adjacencies_get_by_vni (u32 vni)
 Returns vector of adjacencies. More...
 
static lisp_msmr_tget_map_server (ip_address_t *a)
 
static lisp_msmr_tget_map_resolver (ip_address_t *a)
 
int vnet_lisp_add_del_map_server (ip_address_t *addr, u8 is_add)
 
int vnet_lisp_map_cache_add_del (vnet_lisp_add_del_mapping_args_t *a, u32 *map_index_result)
 Add/remove mapping to/from map-cache. More...
 
int vnet_lisp_add_del_local_mapping (vnet_lisp_add_del_mapping_args_t *a, u32 *map_index_result)
 Add/update/delete mapping to/in/from map-cache. More...
 
static int add_l2_arp_bd (BVT(clib_bihash_kv) *kvp, void *arg)
 
u32vnet_lisp_l2_arp_bds_get (void)
 
static int add_ndp_bd (BVT(clib_bihash_kv) *kvp, void *arg)
 
u32vnet_lisp_ndp_bds_get (void)
 
static int add_l2_arp_entry (BVT(clib_bihash_kv) *kvp, void *arg)
 
lisp_api_l2_arp_entry_tvnet_lisp_l2_arp_entries_get_by_bd (u32 bd)
 
static int add_ndp_entry (BVT(clib_bihash_kv) *kvp, void *arg)
 
lisp_api_ndp_entry_tvnet_lisp_ndp_entries_get_by_bd (u32 bd)
 
int vnet_lisp_add_del_l2_arp_ndp_entry (gid_address_t *key, u8 *mac, u8 is_add)
 
int vnet_lisp_eid_table_map (u32 vni, u32 dp_id, u8 is_l2, u8 is_add)
 
static u8 compare_locators (lisp_cp_main_t *lcm, u32 *old_ls_indexes, locator_t *new_locators)
 
static void remove_mapping_if_needed (u32 mi, void *arg)
 Callback invoked when a sub-prefix is found. More...
 
static void remove_overlapping_sub_prefixes (lisp_cp_main_t *lcm, gid_address_t *eid, u8 is_negative)
 This function searches map cache and looks for IP prefixes that are subset of the provided one. More...
 
static void mapping_delete_timer (lisp_cp_main_t *lcm, u32 mi)
 
static int is_local_ip (lisp_cp_main_t *lcm, ip_address_t *addr)
 
int vnet_lisp_add_mapping (vnet_lisp_add_del_mapping_args_t *a, locator_t *rlocs, u32 *res_map_index, u8 *is_updated)
 Adds/updates mapping. More...
 
int vnet_lisp_del_mapping (gid_address_t *eid, u32 *res_map_index)
 Removes a mapping. More...
 
int vnet_lisp_clear_all_remote_adjacencies (void)
 
int vnet_lisp_add_del_adjacency (vnet_lisp_add_del_adjacency_args_t *a)
 Adds adjacency or removes forwarding entry associated to remote mapping. More...
 
int vnet_lisp_set_map_request_mode (u8 mode)
 
int vnet_lisp_nsh_set_locator_set (u8 *locator_set_name, u8 is_add)
 
int vnet_lisp_pitr_set_locator_set (u8 *locator_set_name, u8 is_add)
 
int vnet_lisp_map_register_fallback_threshold_set (u32 value)
 
u32 vnet_lisp_map_register_fallback_threshold_get (void)
 
int vnet_lisp_use_petr (ip_address_t *ip, u8 is_add)
 Configure Proxy-ETR. More...
 
static void clean_locator_to_locator_set (lisp_cp_main_t *lcm, u32 lsi)
 
static uwordget_locator_set_index (vnet_lisp_add_del_locator_set_args_t *a, uword *p)
 
static int is_locator_in_locator_set (lisp_cp_main_t *lcm, locator_set_t *ls, locator_t *loc)
 
static void update_adjacencies_by_map_index (lisp_cp_main_t *lcm, u32 mapping_index, u8 remove_only)
 
static void update_fwd_entries_by_locator_set (lisp_cp_main_t *lcm, u32 ls_index, u8 remove_only)
 
static void remove_locator_from_locator_set (locator_set_t *ls, u32 *locit, u32 ls_index, u32 loc_id)
 
int vnet_lisp_add_del_locator (vnet_lisp_add_del_locator_set_args_t *a, locator_set_t *ls, u32 *ls_result)
 
int vnet_lisp_add_del_locator_set (vnet_lisp_add_del_locator_set_args_t *a, u32 *ls_result)
 
int vnet_lisp_rloc_probe_enable_disable (u8 is_enable)
 
int vnet_lisp_map_register_enable_disable (u8 is_enable)
 
static void lisp_cp_register_dst_port (vlib_main_t *vm)
 
static void lisp_cp_unregister_dst_port (vlib_main_t *vm)
 
static void lisp_cp_enable_l2_l3_ifaces (lisp_cp_main_t *lcm, u8 with_default_route)
 lisp_cp_enable_l2_l3_ifaces More...
 
static void lisp_cp_disable_l2_l3_ifaces (lisp_cp_main_t *lcm)
 
clib_error_tvnet_lisp_enable_disable (u8 is_enable)
 
u8 vnet_lisp_enable_disable_status (void)
 
int vnet_lisp_add_del_map_resolver (vnet_lisp_add_del_map_resolver_args_t *a)
 
int vnet_lisp_map_register_set_ttl (u32 ttl)
 
u32 vnet_lisp_map_register_get_ttl (void)
 
int vnet_lisp_add_del_mreq_itr_rlocs (vnet_lisp_add_del_mreq_itr_rloc_args_t *a)
 
u8format_lisp_cp_lookup_trace (u8 *s, va_list *args)
 
int get_mr_and_local_iface_ip (lisp_cp_main_t *lcm, ip_address_t *mr_ip, ip_address_t *sloc)
 
static gid_address_tbuild_itr_rloc_list (lisp_cp_main_t *lcm, locator_set_t *loc_set)
 
static vlib_buffer_tbuild_map_request (lisp_cp_main_t *lcm, gid_address_t *deid, ip_address_t *sloc, ip_address_t *rloc, gid_address_t *itr_rlocs, u64 *nonce_res, u32 *bi_res)
 
static vlib_buffer_tbuild_encapsulated_map_request (lisp_cp_main_t *lcm, gid_address_t *seid, gid_address_t *deid, locator_set_t *loc_set, ip_address_t *mr_ip, ip_address_t *sloc, u8 is_smr_invoked, u64 *nonce_res, u32 *bi_res)
 
static void reset_pending_mr_counters (pending_map_request_t *r)
 
static foreach_msmr void free_map_register_records (mapping_t *maps)
 
static void add_locators (lisp_cp_main_t *lcm, mapping_t *m, u32 locator_set_index, ip_address_t *probed_loc)
 
static mapping_tbuild_map_register_record_list (lisp_cp_main_t *lcm)
 
static vnet_crypto_alg_t lisp_key_type_to_crypto_alg (lisp_key_type_t key_id)
 
static vnet_crypto_op_id_t lisp_key_type_to_crypto_op (lisp_key_type_t key_id)
 
static int update_map_register_auth_data (map_register_hdr_t *map_reg_hdr, lisp_key_type_t key_id, u8 *key, u16 auth_data_len, u32 msg_len)
 
static vlib_buffer_tbuild_map_register (lisp_cp_main_t *lcm, ip_address_t *sloc, ip_address_t *ms_ip, u64 *nonce_res, u8 want_map_notif, mapping_t *records, lisp_key_type_t key_id, u8 *key, u32 *bi_res)
 
static uword lisp_cp_output (vlib_main_t *vm, vlib_node_runtime_t *node, vlib_frame_t *from_frame)
 
static int send_rloc_probe (lisp_cp_main_t *lcm, gid_address_t *deid, u32 local_locator_set_index, ip_address_t *sloc, ip_address_t *rloc)
 
static int send_rloc_probes (lisp_cp_main_t *lcm)
 
static int send_map_register (lisp_cp_main_t *lcm, u8 want_map_notif)
 
static void get_src_and_dst_ip (void *hdr, ip_address_t *src, ip_address_t *dst)
 
static u32 lisp_get_vni_from_buffer_ip (lisp_cp_main_t *lcm, vlib_buffer_t *b, u8 version)
 
static u32 lisp_get_bd_from_buffer_eth (vlib_buffer_t *b)
 
static u32 lisp_get_vni_from_buffer_eth (lisp_cp_main_t *lcm, vlib_buffer_t *b)
 
void get_src_and_dst_eids_from_buffer (lisp_cp_main_t *lcm, vlib_buffer_t *b, gid_address_t *src, gid_address_t *dst, u16 type)
 
static uword lisp_cp_lookup_inline (vlib_main_t *vm, vlib_node_runtime_t *node, vlib_frame_t *from_frame, int overlay)
 
static uword lisp_cp_lookup_ip4 (vlib_main_t *vm, vlib_node_runtime_t *node, vlib_frame_t *from_frame)
 
static uword lisp_cp_lookup_ip6 (vlib_main_t *vm, vlib_node_runtime_t *node, vlib_frame_t *from_frame)
 
static uword lisp_cp_lookup_l2 (vlib_main_t *vm, vlib_node_runtime_t *node, vlib_frame_t *from_frame)
 
static uword lisp_cp_lookup_nsh (vlib_main_t *vm, vlib_node_runtime_t *node, vlib_frame_t *from_frame)
 
static void remove_expired_mapping (lisp_cp_main_t *lcm, u32 mi)
 
static void mapping_start_expiration_timer (lisp_cp_main_t *lcm, u32 mi, f64 expiration_time)
 
static void process_expired_mapping (lisp_cp_main_t *lcm, u32 mi)
 
static void map_records_arg_free (map_records_arg_t *a)
 
void * process_map_reply (map_records_arg_t *a)
 
static int is_auth_data_valid (map_notify_hdr_t *h, u32 msg_len, lisp_key_type_t key_id, u8 *key)
 
static void process_map_notify (map_records_arg_t *a)
 
static mapping_tget_mapping (lisp_cp_main_t *lcm, gid_address_t *e)
 
static int map_record_integrity_check (lisp_cp_main_t *lcm, mapping_t *maps, u32 key_id, u8 **key_out)
 When map-notify is received it is necessary that all EIDs in the record list share common key. More...
 
static int parse_map_records (vlib_buffer_t *b, map_records_arg_t *a, u8 count)
 
static map_records_arg_tmap_record_args_get ()
 
static map_records_arg_tparse_map_notify (vlib_buffer_t *b)
 
static vlib_buffer_tbuild_map_reply (lisp_cp_main_t *lcm, ip_address_t *sloc, ip_address_t *dst, u64 nonce, u8 probe_bit, mapping_t *records, u16 dst_port, u32 *bi_res)
 
static int send_map_reply (lisp_cp_main_t *lcm, u32 mi, ip_address_t *dst, u8 probe_bit, u64 nonce, u16 dst_port, ip_address_t *probed_loc)
 
static void find_ip_header (vlib_buffer_t *b, u8 **ip_hdr)
 
void process_map_request (vlib_main_t *vm, vlib_node_runtime_t *node, lisp_cp_main_t *lcm, vlib_buffer_t *b)
 
map_records_arg_tparse_map_reply (vlib_buffer_t *b)
 
static void queue_map_reply_for_processing (map_records_arg_t *a)
 
static void queue_map_notify_for_processing (map_records_arg_t *a)
 
static uword lisp_cp_input (vlib_main_t *vm, vlib_node_runtime_t *node, vlib_frame_t *from_frame)
 
clib_error_tlisp_cp_init (vlib_main_t *vm)
 
static int lisp_stats_api_fill (lisp_cp_main_t *lcm, lisp_gpe_main_t *lgm, lisp_api_stats_t *stat, lisp_stats_key_t *key, u32 stats_index)
 
lisp_api_stats_tvnet_lisp_get_stats (void)
 
static void update_pending_request (pending_map_request_t *r, f64 dt)
 Take an action with a pending map request depending on expiration time and re-try counters. More...
 
static void remove_dead_pending_map_requests (lisp_cp_main_t *lcm)
 
static void update_rloc_probing (lisp_cp_main_t *lcm, f64 dt)
 
static int update_pending_map_register (pending_map_register_t *r, f64 dt, u8 *del_all)
 
static void update_map_register (lisp_cp_main_t *lcm, f64 dt)
 
static uword send_map_resolver_service (vlib_main_t *vm, vlib_node_runtime_t *rt, vlib_frame_t *f)
 
vnet_api_error_t vnet_lisp_stats_enable_disable (u8 enable)
 
u8 vnet_lisp_stats_enable_disable_state (void)
 
void vnet_lisp_create_retry_process (lisp_cp_main_t *lcm)
 
u32 vnet_lisp_set_transport_protocol (u8 protocol)
 
lisp_transport_protocol_t vnet_lisp_get_transport_protocol (void)
 
int vnet_lisp_enable_disable_xtr_mode (u8 is_enabled)
 
int vnet_lisp_enable_disable_pitr_mode (u8 is_enabled)
 
int vnet_lisp_enable_disable_petr_mode (u8 is_enabled)
 
u8 vnet_lisp_get_xtr_mode (void)
 
u8 vnet_lisp_get_pitr_mode (void)
 
u8 vnet_lisp_get_petr_mode (void)
 

Variables

lisp_cp_main_t lisp_control_main
 
static char * lisp_cp_lookup_error_strings []
 
static char * lisp_cp_output_error_strings []
 
vlib_node_registration_t lisp_cp_output_node
 (constructor) VLIB_REGISTER_NODE (lisp_cp_output_node) More...
 
vlib_node_registration_t lisp_cp_lookup_ip4_node
 (constructor) VLIB_REGISTER_NODE (lisp_cp_lookup_ip4_node) More...
 
vlib_node_registration_t lisp_cp_lookup_ip6_node
 (constructor) VLIB_REGISTER_NODE (lisp_cp_lookup_ip6_node) More...
 
vlib_node_registration_t lisp_cp_lookup_l2_node
 (constructor) VLIB_REGISTER_NODE (lisp_cp_lookup_l2_node) More...
 
vlib_node_registration_t lisp_cp_lookup_nsh_node
 (constructor) VLIB_REGISTER_NODE (lisp_cp_lookup_nsh_node) More...
 
static char * lisp_cp_input_error_strings []
 
vlib_node_registration_t lisp_cp_input_node
 (constructor) VLIB_REGISTER_NODE (lisp_cp_input_node) More...
 

Macro Definition Documentation

◆ foreach_lisp_cp_input_error

#define foreach_lisp_cp_input_error
Value:
_(DROP, "drop") \
_(RLOC_PROBE_REQ_RECEIVED, "rloc-probe requests received") \
_(RLOC_PROBE_REP_RECEIVED, "rloc-probe replies received") \
_(MAP_NOTIFIES_RECEIVED, "map-notifies received") \
_(MAP_REPLIES_RECEIVED, "map-replies received")
DROP
Definition: error.def:41

Definition at line 3724 of file control.c.

◆ foreach_lisp_cp_lookup_error

#define foreach_lisp_cp_lookup_error
Value:
_(DROP, "drop") \
_(MAP_REQUESTS_SENT, "map-request sent") \
_(ARP_REPLY_TX, "ARP replies sent") \
_(NDP_NEIGHBOR_ADVERTISEMENT_TX, \
"neighbor advertisement sent")
DROP
Definition: error.def:41

Definition at line 2415 of file control.c.

◆ foreach_lisp_cp_output_error

#define foreach_lisp_cp_output_error
Value:
_(MAP_REGISTERS_SENT, "map-registers sent") \
_(MAP_REQUESTS_SENT, "map-requests sent") \
_(RLOC_PROBES_SENT, "rloc-probes sent")

Definition at line 2858 of file control.c.

◆ foreach_msmr

#define foreach_msmr
Value:
_(server) \
_(resolver)

Definition at line 2638 of file control.c.

◆ MAPPING_TIMEOUT

#define MAPPING_TIMEOUT   (((m->ttl) * 60) - TIME_UNTIL_REFETCH_OR_DELETE)

Definition at line 35 of file control.c.

◆ MAX_VALUE_U24

#define MAX_VALUE_U24   0xffffff

Definition at line 31 of file control.c.

◆ resend_encapsulated_map_request

#define resend_encapsulated_map_request (   lcm,
  seid,
  deid,
  smr 
)    _send_encapsulated_map_request(lcm, seid, deid, smr, 1)

Definition at line 3068 of file control.c.

◆ send_encapsulated_map_request

#define send_encapsulated_map_request (   lcm,
  seid,
  deid,
  smr 
)    _send_encapsulated_map_request(lcm, seid, deid, smr, 0)

Definition at line 3065 of file control.c.

◆ TIME_UNTIL_REFETCH_OR_DELETE

#define TIME_UNTIL_REFETCH_OR_DELETE   20

Definition at line 34 of file control.c.

Enumeration Type Documentation

◆ lisp_cp_input_error_t

Enumerator
LISP_CP_INPUT_N_ERROR 

Definition at line 3737 of file control.c.

◆ lisp_cp_input_next_t

Enumerator
LISP_CP_INPUT_NEXT_DROP 
LISP_CP_INPUT_N_NEXT 

Definition at line 42 of file control.c.

◆ lisp_cp_lookup_error_t

Enumerator
LISP_CP_LOOKUP_N_ERROR 

Definition at line 2428 of file control.c.

◆ lisp_cp_lookup_next_t

Enumerator
LISP_CP_LOOKUP_NEXT_DROP 
LISP_CP_LOOKUP_NEXT_ARP_NDP_REPLY_TX 
LISP_CP_LOOKUP_N_NEXT 

Definition at line 2436 of file control.c.

◆ lisp_cp_output_error_t

Enumerator
LISP_CP_OUTPUT_N_ERROR 

Definition at line 2868 of file control.c.

Function Documentation

◆ add_l2_arp_bd()

static int add_l2_arp_bd ( BVT(clib_bihash_kv) *  kvp,
void *  arg 
)
static

Definition at line 903 of file control.c.

+ Here is the caller graph for this function:

◆ add_l2_arp_entry()

static int add_l2_arp_entry ( BVT(clib_bihash_kv) *  kvp,
void *  arg 
)
static

Definition at line 957 of file control.c.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ add_locators()

static void add_locators ( lisp_cp_main_t lcm,
mapping_t m,
u32  locator_set_index,
ip_address_t probed_loc 
)
static

Definition at line 2670 of file control.c.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ add_ndp_bd()

static int add_ndp_bd ( BVT(clib_bihash_kv) *  kvp,
void *  arg 
)
static

Definition at line 927 of file control.c.

+ Here is the caller graph for this function:

◆ add_ndp_entry()

static int add_ndp_entry ( BVT(clib_bihash_kv) *  kvp,
void *  arg 
)
static

Definition at line 993 of file control.c.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ auth_data_len_by_key_id()

static u16 auth_data_len_by_key_id ( lisp_key_type_t  key_id)
static

Definition at line 64 of file control.c.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ build_encapsulated_map_request()

static vlib_buffer_t* build_encapsulated_map_request ( lisp_cp_main_t lcm,
gid_address_t seid,
gid_address_t deid,
locator_set_t loc_set,
ip_address_t mr_ip,
ip_address_t sloc,
u8  is_smr_invoked,
u64 nonce_res,
u32 bi_res 
)
static

Definition at line 2576 of file control.c.

+ Here is the call graph for this function:

◆ build_itr_rloc_list()

static gid_address_t* build_itr_rloc_list ( lisp_cp_main_t lcm,
locator_set_t loc_set 
)
static

Definition at line 2494 of file control.c.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ build_map_register()

static vlib_buffer_t* build_map_register ( lisp_cp_main_t lcm,
ip_address_t sloc,
ip_address_t ms_ip,
u64 nonce_res,
u8  want_map_notif,
mapping_t records,
lisp_key_type_t  key_id,
u8 key,
u32 bi_res 
)
static

Definition at line 2798 of file control.c.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ build_map_register_record_list()

static mapping_t* build_map_register_record_list ( lisp_cp_main_t lcm)
static

Definition at line 2715 of file control.c.

+ Here is the caller graph for this function:

◆ build_map_reply()

static vlib_buffer_t* build_map_reply ( lisp_cp_main_t lcm,
ip_address_t sloc,
ip_address_t dst,
u64  nonce,
u8  probe_bit,
mapping_t records,
u16  dst_port,
u32 bi_res 
)
static

Definition at line 4174 of file control.c.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ build_map_request()

static vlib_buffer_t* build_map_request ( lisp_cp_main_t lcm,
gid_address_t deid,
ip_address_t sloc,
ip_address_t rloc,
gid_address_t itr_rlocs,
u64 nonce_res,
u32 bi_res 
)
static

Definition at line 2543 of file control.c.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ clean_locator_to_locator_set()

static void clean_locator_to_locator_set ( lisp_cp_main_t lcm,
u32  lsi 
)
static

Definition at line 1747 of file control.c.

+ Here is the caller graph for this function:

◆ compare_locators()

static u8 compare_locators ( lisp_cp_main_t lcm,
u32 old_ls_indexes,
locator_t new_locators 
)
static

Definition at line 1126 of file control.c.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ dp_add_del_iface()

static int dp_add_del_iface ( lisp_cp_main_t lcm,
u32  vni,
u8  is_l2,
u8  is_add,
u8  with_default_route 
)
static

Definition at line 208 of file control.c.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ dp_add_fwd_entry()

static void dp_add_fwd_entry ( lisp_cp_main_t lcm,
u32  src_map_index,
u32  dst_map_index 
)
static

Definition at line 422 of file control.c.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ dp_add_fwd_entry_from_mt()

static int dp_add_fwd_entry_from_mt ( u32  si,
u32  di 
)
static

Definition at line 589 of file control.c.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ dp_add_fwd_entry_thread_fn()

static void* dp_add_fwd_entry_thread_fn ( void *  arg)
static

Definition at line 580 of file control.c.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ dp_del_fwd_entry()

static void dp_del_fwd_entry ( lisp_cp_main_t lcm,
u32  dst_map_index 
)
static

Definition at line 254 of file control.c.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ find_ip_header()

static void find_ip_header ( vlib_buffer_t b,
u8 **  ip_hdr 
)
static

Definition at line 4250 of file control.c.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ format_lisp_cp_input_trace()

u8 * format_lisp_cp_input_trace ( u8 s,
va_list *  args 
)

Definition at line 3752 of file control.c.

+ Here is the call graph for this function:

◆ format_lisp_cp_lookup_trace()

u8* format_lisp_cp_lookup_trace ( u8 s,
va_list *  args 
)

Definition at line 2450 of file control.c.

+ Here is the call graph for this function:

◆ free_map_register_records()

static foreach_msmr void free_map_register_records ( mapping_t maps)
static

Definition at line 2661 of file control.c.

+ Here is the caller graph for this function:

◆ get_locator_pairs()

static u32 get_locator_pairs ( lisp_cp_main_t lcm,
mapping_t lcl_map,
mapping_t rmt_map,
locator_pair_t **  locator_pairs 
)
static

Finds first remote locator with best (lowest) priority that has a local peer locator with an underlying route to it.

Definition at line 291 of file control.c.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ get_locator_set_index()

static uword* get_locator_set_index ( vnet_lisp_add_del_locator_set_args_t a,
uword p 
)
inlinestatic

Definition at line 1786 of file control.c.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ get_map_resolver()

static lisp_msmr_t* get_map_resolver ( ip_address_t a)
static

Definition at line 649 of file control.c.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ get_map_server()

static lisp_msmr_t* get_map_server ( ip_address_t a)
static

Definition at line 633 of file control.c.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ get_mapping()

static mapping_t* get_mapping ( lisp_cp_main_t lcm,
gid_address_t e 
)
static

Definition at line 4022 of file control.c.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ get_mr_and_local_iface_ip()

int get_mr_and_local_iface_ip ( lisp_cp_main_t lcm,
ip_address_t mr_ip,
ip_address_t sloc 
)

Definition at line 2463 of file control.c.

+ Here is the call graph for this function:

◆ get_src_and_dst_eids_from_buffer()

void get_src_and_dst_eids_from_buffer ( lisp_cp_main_t lcm,
vlib_buffer_t b,
gid_address_t src,
gid_address_t dst,
u16  type 
)

Definition at line 3308 of file control.c.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ get_src_and_dst_ip()

static void get_src_and_dst_ip ( void *  hdr,
ip_address_t src,
ip_address_t dst 
)
static

Definition at line 3233 of file control.c.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ gid_address_sd_to_flat()

static void gid_address_sd_to_flat ( gid_address_t dst,
gid_address_t src,
fid_address_t fid 
)
static

Definition at line 384 of file control.c.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ ip_address_to_fib_prefix()

void ip_address_to_fib_prefix ( const ip_address_t addr,
fib_prefix_t prefix 
)

convert from a LISP address to a FIB prefix

Definition at line 130 of file control.c.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ ip_fib_get_egress_iface_for_dst()

u32 ip_fib_get_egress_iface_for_dst ( lisp_cp_main_t lcm,
ip_address_t dst 
)

Find the sw_if_index of the interface that would be used to egress towards dst.

Definition at line 163 of file control.c.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ ip_fib_get_first_egress_ip_for_dst()

int ip_fib_get_first_egress_ip_for_dst ( lisp_cp_main_t lcm,
ip_address_t dst,
ip_address_t result 
)

Find first IP of the interface that would be used to egress towards dst.

Returns 1 if the address is found 0 otherwise.

Definition at line 180 of file control.c.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ ip_interface_get_first_address()

void* ip_interface_get_first_address ( ip_lookup_main_t lm,
u32  sw_if_index,
u8  version 
)

Definition at line 99 of file control.c.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ ip_interface_get_first_interface_address()

ip_interface_address_t* ip_interface_get_first_interface_address ( ip_lookup_main_t lm,
u32  sw_if_index,
u8  loop 
)

Definition at line 84 of file control.c.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ ip_interface_get_first_ip_address()

int ip_interface_get_first_ip_address ( lisp_cp_main_t lcm,
u32  sw_if_index,
u8  version,
ip_address_t result 
)

Definition at line 111 of file control.c.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ ip_prefix_to_fib_prefix()

void ip_prefix_to_fib_prefix ( const ip_prefix_t ip_prefix,
fib_prefix_t fib_prefix 
)

convert from a LISP to a FIB prefix

Definition at line 151 of file control.c.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ is_auth_data_valid()

static int is_auth_data_valid ( map_notify_hdr_t h,
u32  msg_len,
lisp_key_type_t  key_id,
u8 key 
)
static

Definition at line 3951 of file control.c.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ is_local_ip()

static int is_local_ip ( lisp_cp_main_t lcm,
ip_address_t addr 
)
static

Definition at line 1245 of file control.c.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ is_locator_in_locator_set()

static int is_locator_in_locator_set ( lisp_cp_main_t lcm,
locator_set_t ls,
locator_t loc 
)
inlinestatic

Definition at line 1808 of file control.c.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ lisp_cp_disable_l2_l3_ifaces()

static void lisp_cp_disable_l2_l3_ifaces ( lisp_cp_main_t lcm)
static

Definition at line 2230 of file control.c.

+ Here is the caller graph for this function:

◆ lisp_cp_enable_l2_l3_ifaces()

static void lisp_cp_enable_l2_l3_ifaces ( lisp_cp_main_t lcm,
u8  with_default_route 
)
static

lisp_cp_enable_l2_l3_ifaces

Enable all l2 and l3 ifaces

Definition at line 2213 of file control.c.

+ Here is the caller graph for this function:

◆ lisp_cp_init()

clib_error_t* lisp_cp_init ( vlib_main_t vm)

Definition at line 4512 of file control.c.

+ Here is the call graph for this function:

◆ lisp_cp_input()

static uword lisp_cp_input ( vlib_main_t vm,
vlib_node_runtime_t node,
vlib_frame_t from_frame 
)
static

Definition at line 4411 of file control.c.

+ Here is the call graph for this function:

◆ lisp_cp_lookup_inline()

static uword lisp_cp_lookup_inline ( vlib_main_t vm,
vlib_node_runtime_t node,
vlib_frame_t from_frame,
int  overlay 
)
static

Definition at line 3438 of file control.c.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ lisp_cp_lookup_ip4()

static uword lisp_cp_lookup_ip4 ( vlib_main_t vm,
vlib_node_runtime_t node,
vlib_frame_t from_frame 
)
static

Definition at line 3615 of file control.c.

+ Here is the call graph for this function:

◆ lisp_cp_lookup_ip6()

static uword lisp_cp_lookup_ip6 ( vlib_main_t vm,
vlib_node_runtime_t node,
vlib_frame_t from_frame 
)
static

Definition at line 3622 of file control.c.

+ Here is the call graph for this function:

◆ lisp_cp_lookup_l2()

static uword lisp_cp_lookup_l2 ( vlib_main_t vm,
vlib_node_runtime_t node,
vlib_frame_t from_frame 
)
static

Definition at line 3629 of file control.c.

+ Here is the call graph for this function:

◆ lisp_cp_lookup_nsh()

static uword lisp_cp_lookup_nsh ( vlib_main_t vm,
vlib_node_runtime_t node,
vlib_frame_t from_frame 
)
static

Definition at line 3636 of file control.c.

+ Here is the call graph for this function:

◆ lisp_cp_output()

static uword lisp_cp_output ( vlib_main_t vm,
vlib_node_runtime_t node,
vlib_frame_t from_frame 
)
static

Definition at line 2877 of file control.c.

◆ lisp_cp_register_dst_port()

static void lisp_cp_register_dst_port ( vlib_main_t vm)
static

Definition at line 2192 of file control.c.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ lisp_cp_unregister_dst_port()

static void lisp_cp_unregister_dst_port ( vlib_main_t vm)
static

Definition at line 2201 of file control.c.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ lisp_get_bd_from_buffer_eth()

static u32 lisp_get_bd_from_buffer_eth ( vlib_buffer_t b)
inlinestatic

Definition at line 3276 of file control.c.

+ Here is the caller graph for this function:

◆ lisp_get_vni_from_buffer_eth()

static u32 lisp_get_vni_from_buffer_eth ( lisp_cp_main_t lcm,
vlib_buffer_t b 
)
inlinestatic

Definition at line 3292 of file control.c.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ lisp_get_vni_from_buffer_ip()

static u32 lisp_get_vni_from_buffer_ip ( lisp_cp_main_t lcm,
vlib_buffer_t b,
u8  version 
)
static

Definition at line 3252 of file control.c.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ lisp_key_type_to_crypto_alg()

static vnet_crypto_alg_t lisp_key_type_to_crypto_alg ( lisp_key_type_t  key_id)
static

Definition at line 2736 of file control.c.

+ Here is the caller graph for this function:

◆ lisp_key_type_to_crypto_op()

static vnet_crypto_op_id_t lisp_key_type_to_crypto_op ( lisp_key_type_t  key_id)
static

Definition at line 2752 of file control.c.

+ Here is the caller graph for this function:

◆ lisp_stats_api_fill()

static int lisp_stats_api_fill ( lisp_cp_main_t lcm,
lisp_gpe_main_t lgm,
lisp_api_stats_t stat,
lisp_stats_key_t key,
u32  stats_index 
)
static

Definition at line 4558 of file control.c.

+ Here is the call graph for this function:

◆ map_record_args_get()

static map_records_arg_t* map_record_args_get ( )
static

Definition at line 4103 of file control.c.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ map_record_integrity_check()

static int map_record_integrity_check ( lisp_cp_main_t lcm,
mapping_t maps,
u32  key_id,
u8 **  key_out 
)
static

When map-notify is received it is necessary that all EIDs in the record list share common key.

The key is then used to verify authentication data in map-notify message.

Definition at line 4042 of file control.c.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ map_records_arg_free()

static void map_records_arg_free ( map_records_arg_t a)
static

Definition at line 3864 of file control.c.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ mapping_delete_timer()

static void mapping_delete_timer ( lisp_cp_main_t lcm,
u32  mi 
)
static

Definition at line 1239 of file control.c.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ mapping_start_expiration_timer()

static void mapping_start_expiration_timer ( lisp_cp_main_t lcm,
u32  mi,
f64  expiration_time 
)
static

Definition at line 3782 of file control.c.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ parse_map_notify()

static map_records_arg_t* parse_map_notify ( vlib_buffer_t b)
static

Definition at line 4121 of file control.c.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ parse_map_records()

static int parse_map_records ( vlib_buffer_t b,
map_records_arg_t a,
u8  count 
)
static

Definition at line 4071 of file control.c.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ parse_map_reply()

map_records_arg_t* parse_map_reply ( vlib_buffer_t b)

Definition at line 4348 of file control.c.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ process_expired_mapping()

static void process_expired_mapping ( lisp_cp_main_t lcm,
u32  mi 
)
static

Definition at line 3797 of file control.c.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ process_map_notify()

static void process_map_notify ( map_records_arg_t a)
static

Definition at line 4000 of file control.c.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ process_map_reply()

void* process_map_reply ( map_records_arg_t a)

Definition at line 3877 of file control.c.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ process_map_request()

void process_map_request ( vlib_main_t vm,
vlib_node_runtime_t node,
lisp_cp_main_t lcm,
vlib_buffer_t b 
)

Definition at line 4265 of file control.c.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ queue_map_notify_for_processing()

static void queue_map_notify_for_processing ( map_records_arg_t a)
static

Definition at line 4405 of file control.c.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ queue_map_reply_for_processing()

static void queue_map_reply_for_processing ( map_records_arg_t a)
static

Definition at line 4399 of file control.c.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ queue_map_request()

static int queue_map_request ( gid_address_t seid,
gid_address_t deid,
u8  smr_invoked,
u8  is_resend 
)
static

Definition at line 4622 of file control.c.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ remove_dead_pending_map_requests()

static void remove_dead_pending_map_requests ( lisp_cp_main_t lcm)
static

Definition at line 4692 of file control.c.

+ Here is the caller graph for this function:

◆ remove_expired_mapping()

static void remove_expired_mapping ( lisp_cp_main_t lcm,
u32  mi 
)
static

Definition at line 3764 of file control.c.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ remove_locator_from_locator_set()

static void remove_locator_from_locator_set ( locator_set_t ls,
u32 locit,
u32  ls_index,
u32  loc_id 
)
inlinestatic

Definition at line 1914 of file control.c.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ remove_mapping_if_needed()

static void remove_mapping_if_needed ( u32  mi,
void *  arg 
)
static

Callback invoked when a sub-prefix is found.

Definition at line 1159 of file control.c.

+ Here is the caller graph for this function:

◆ remove_overlapping_sub_prefixes()

static void remove_overlapping_sub_prefixes ( lisp_cp_main_t lcm,
gid_address_t eid,
u8  is_negative 
)
static

This function searches map cache and looks for IP prefixes that are subset of the provided one.

If such prefix is found depending on 'is_negative' it does follows:

1) if is_negative is true and found prefix points to positive mapping, then the mapping is removed 2) if is_negative is false and found prefix points to negative mapping, then the mapping is removed

Definition at line 1199 of file control.c.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ reset_pending_mr_counters()

static void reset_pending_mr_counters ( pending_map_request_t r)
static

Definition at line 2632 of file control.c.

+ Here is the caller graph for this function:

◆ send_map_register()

static int send_map_register ( lisp_cp_main_t lcm,
u8  want_map_notif 
)
static

Definition at line 2988 of file control.c.

+ Here is the call graph for this function:

◆ send_map_reply()

static int send_map_reply ( lisp_cp_main_t lcm,
u32  mi,
ip_address_t dst,
u8  probe_bit,
u64  nonce,
u16  dst_port,
ip_address_t probed_loc 
)
static

Definition at line 4203 of file control.c.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ send_map_request_thread_fn()

static void * send_map_request_thread_fn ( void *  arg)
static

Definition at line 4608 of file control.c.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ send_map_resolver_service()

static uword send_map_resolver_service ( vlib_main_t vm,
vlib_node_runtime_t rt,
vlib_frame_t f 
)
static

Definition at line 4841 of file control.c.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ send_rloc_probe()

static int send_rloc_probe ( lisp_cp_main_t lcm,
gid_address_t deid,
u32  local_locator_set_index,
ip_address_t sloc,
ip_address_t rloc 
)
static

Definition at line 2904 of file control.c.

+ Here is the call graph for this function:

◆ send_rloc_probes()

static int send_rloc_probes ( lisp_cp_main_t lcm)
static

Definition at line 2941 of file control.c.

+ Here is the caller graph for this function:

◆ update_adjacencies_by_map_index()

static void update_adjacencies_by_map_index ( lisp_cp_main_t lcm,
u32  mapping_index,
u8  remove_only 
)
static

Definition at line 1832 of file control.c.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ update_fwd_entries_by_locator_set()

static void update_fwd_entries_by_locator_set ( lisp_cp_main_t lcm,
u32  ls_index,
u8  remove_only 
)
static

Definition at line 1895 of file control.c.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ update_map_register()

static void update_map_register ( lisp_cp_main_t lcm,
f64  dt 
)
static

Definition at line 4784 of file control.c.

+ Here is the caller graph for this function:

◆ update_map_register_auth_data()

static int update_map_register_auth_data ( map_register_hdr_t map_reg_hdr,
lisp_key_type_t  key_id,
u8 key,
u16  auth_data_len,
u32  msg_len 
)
static

Definition at line 2768 of file control.c.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ update_pending_map_register()

static int update_pending_map_register ( pending_map_register_t r,
f64  dt,
u8 del_all 
)
static

Definition at line 4735 of file control.c.

+ Here is the call graph for this function:

◆ update_pending_request()

static void update_pending_request ( pending_map_request_t r,
f64  dt 
)
static

Take an action with a pending map request depending on expiration time and re-try counters.

Definition at line 4642 of file control.c.

+ Here is the call graph for this function:

◆ update_rloc_probing()

static void update_rloc_probing ( lisp_cp_main_t lcm,
f64  dt 
)
static

Definition at line 4719 of file control.c.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ vnet_lisp_add_del_adjacency()

int vnet_lisp_add_del_adjacency ( vnet_lisp_add_del_adjacency_args_t a)

Adds adjacency or removes forwarding entry associated to remote mapping.

Note that adjacencies are not stored, they only result in forwarding entries being created.

Definition at line 1477 of file control.c.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ vnet_lisp_add_del_l2_arp_ndp_entry()

int vnet_lisp_add_del_l2_arp_ndp_entry ( gid_address_t key,
u8 mac,
u8  is_add 
)

Definition at line 1029 of file control.c.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ vnet_lisp_add_del_local_mapping()

int vnet_lisp_add_del_local_mapping ( vnet_lisp_add_del_mapping_args_t a,
u32 map_index_result 
)

Add/update/delete mapping to/in/from map-cache.

Definition at line 869 of file control.c.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ vnet_lisp_add_del_locator()

int vnet_lisp_add_del_locator ( vnet_lisp_add_del_locator_set_args_t a,
locator_set_t ls,
u32 ls_result 
)

Definition at line 1930 of file control.c.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ vnet_lisp_add_del_locator_set()

int vnet_lisp_add_del_locator_set ( vnet_lisp_add_del_locator_set_args_t a,
u32 ls_result 
)

Definition at line 2034 of file control.c.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ vnet_lisp_add_del_map_resolver()

int vnet_lisp_add_del_map_resolver ( vnet_lisp_add_del_map_resolver_args_t a)

Definition at line 2321 of file control.c.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ vnet_lisp_add_del_map_server()

int vnet_lisp_add_del_map_server ( ip_address_t addr,
u8  is_add 
)

Definition at line 665 of file control.c.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ vnet_lisp_add_del_mreq_itr_rlocs()

int vnet_lisp_add_del_mreq_itr_rlocs ( vnet_lisp_add_del_mreq_itr_rloc_args_t a)

Definition at line 2384 of file control.c.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ vnet_lisp_add_mapping()

int vnet_lisp_add_mapping ( vnet_lisp_add_del_mapping_args_t a,
locator_t rlocs,
u32 res_map_index,
u8 is_updated 
)

Adds/updates mapping.

Does not program forwarding.

Parameters
aparameters of the new mapping
rlocsvector of remote locators
res_map_indexindex of the newly created mapping
locators_changedindicator if locators were updated in the mapping
Returns
return code

Definition at line 1268 of file control.c.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ vnet_lisp_adjacencies_get_by_vni()

lisp_adjacency_t* vnet_lisp_adjacencies_get_by_vni ( u32  vni)

Returns vector of adjacencies.

The caller must free the vector returned by this function.

Parameters
vnivirtual network identifier
Returns
vector of adjacencies

Definition at line 611 of file control.c.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ vnet_lisp_clear_all_remote_adjacencies()

int vnet_lisp_clear_all_remote_adjacencies ( void  )

Definition at line 1426 of file control.c.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ vnet_lisp_create_retry_process()

void vnet_lisp_create_retry_process ( lisp_cp_main_t lcm)

Definition at line 4915 of file control.c.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ vnet_lisp_del_mapping()

int vnet_lisp_del_mapping ( gid_address_t eid,
u32 res_map_index 
)

Removes a mapping.

Does not program forwarding.

Parameters
eidend-host identifier
res_map_indexindex of the removed mapping
Returns
return code

Definition at line 1377 of file control.c.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ vnet_lisp_eid_table_map()

int vnet_lisp_eid_table_map ( u32  vni,
u32  dp_id,
u8  is_l2,
u8  is_add 
)

Definition at line 1068 of file control.c.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ vnet_lisp_enable_disable()

clib_error_t* vnet_lisp_enable_disable ( u8  is_enable)

Definition at line 2249 of file control.c.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ vnet_lisp_enable_disable_petr_mode()

int vnet_lisp_enable_disable_petr_mode ( u8  is_enabled)

Definition at line 5013 of file control.c.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ vnet_lisp_enable_disable_pitr_mode()

int vnet_lisp_enable_disable_pitr_mode ( u8  is_enabled)

Definition at line 4984 of file control.c.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ vnet_lisp_enable_disable_status()

u8 vnet_lisp_enable_disable_status ( void  )

Definition at line 2314 of file control.c.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ vnet_lisp_enable_disable_xtr_mode()

int vnet_lisp_enable_disable_xtr_mode ( u8  is_enabled)

Definition at line 4947 of file control.c.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ vnet_lisp_get_map_request_mode()

u8 vnet_lisp_get_map_request_mode ( void  )

Definition at line 57 of file control.c.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ vnet_lisp_get_petr_mode()

u8 vnet_lisp_get_petr_mode ( void  )

Definition at line 5058 of file control.c.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ vnet_lisp_get_pitr_mode()

u8 vnet_lisp_get_pitr_mode ( void  )

Definition at line 5051 of file control.c.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ vnet_lisp_get_stats()

lisp_api_stats_t* vnet_lisp_get_stats ( void  )

Definition at line 4588 of file control.c.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ vnet_lisp_get_transport_protocol()

lisp_transport_protocol_t vnet_lisp_get_transport_protocol ( void  )

Definition at line 4940 of file control.c.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ vnet_lisp_get_xtr_mode()

u8 vnet_lisp_get_xtr_mode ( void  )

Definition at line 5044 of file control.c.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ vnet_lisp_l2_arp_bds_get()

u32* vnet_lisp_l2_arp_bds_get ( void  )

Definition at line 916 of file control.c.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ vnet_lisp_l2_arp_entries_get_by_bd()

lisp_api_l2_arp_entry_t* vnet_lisp_l2_arp_entries_get_by_bd ( u32  bd)

Definition at line 978 of file control.c.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ vnet_lisp_map_cache_add_del()

int vnet_lisp_map_cache_add_del ( vnet_lisp_add_del_mapping_args_t a,
u32 map_index_result 
)

Add/remove mapping to/from map-cache.

Overwriting not allowed.

Definition at line 716 of file control.c.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ vnet_lisp_map_register_enable_disable()

int vnet_lisp_map_register_enable_disable ( u8  is_enable)

Definition at line 2183 of file control.c.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ vnet_lisp_map_register_fallback_threshold_get()

u32 vnet_lisp_map_register_fallback_threshold_get ( void  )

Definition at line 1672 of file control.c.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ vnet_lisp_map_register_fallback_threshold_set()

int vnet_lisp_map_register_fallback_threshold_set ( u32  value)

Definition at line 1659 of file control.c.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ vnet_lisp_map_register_get_ttl()

u32 vnet_lisp_map_register_get_ttl ( void  )

Definition at line 2377 of file control.c.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ vnet_lisp_map_register_set_ttl()

int vnet_lisp_map_register_set_ttl ( u32  ttl)

Definition at line 2369 of file control.c.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ vnet_lisp_map_register_state_get()

u8 vnet_lisp_map_register_state_get ( void  )

Definition at line 408 of file control.c.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ vnet_lisp_ndp_bds_get()

u32* vnet_lisp_ndp_bds_get ( void  )

Definition at line 940 of file control.c.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ vnet_lisp_ndp_entries_get_by_bd()

lisp_api_ndp_entry_t* vnet_lisp_ndp_entries_get_by_bd ( u32  bd)

Definition at line 1014 of file control.c.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ vnet_lisp_nsh_set_locator_set()

int vnet_lisp_nsh_set_locator_set ( u8 locator_set_name,
u8  is_add 
)

Definition at line 1569 of file control.c.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ vnet_lisp_pitr_set_locator_set()

int vnet_lisp_pitr_set_locator_set ( u8 locator_set_name,
u8  is_add 
)

Definition at line 1620 of file control.c.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ vnet_lisp_rloc_probe_enable_disable()

int vnet_lisp_rloc_probe_enable_disable ( u8  is_enable)

Definition at line 2174 of file control.c.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ vnet_lisp_rloc_probe_state_get()

u8 vnet_lisp_rloc_probe_state_get ( void  )

Definition at line 415 of file control.c.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ vnet_lisp_set_map_request_mode()

int vnet_lisp_set_map_request_mode ( u8  mode)

Definition at line 1548 of file control.c.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ vnet_lisp_set_transport_protocol()

u32 vnet_lisp_set_transport_protocol ( u8  protocol)

Definition at line 4927 of file control.c.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ vnet_lisp_stats_enable_disable()

vnet_api_error_t vnet_lisp_stats_enable_disable ( u8  enable)

Definition at line 4888 of file control.c.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ vnet_lisp_stats_enable_disable_state()

u8 vnet_lisp_stats_enable_disable_state ( void  )

Definition at line 4904 of file control.c.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ vnet_lisp_use_petr()

int vnet_lisp_use_petr ( ip_address_t ip,
u8  is_add 
)

Configure Proxy-ETR.

Parameters
ipPETR's IP address
is_addFlag that indicates if this is an addition or removal

return 0 on success

Definition at line 1687 of file control.c.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

Variable Documentation

◆ lisp_control_main

lisp_cp_main_t lisp_control_main

Definition at line 37 of file control.c.

◆ lisp_cp_input_error_strings

char* lisp_cp_input_error_strings[]
static
Initial value:
= {
#define _(sym,string)
}
#define foreach_lisp_cp_input_error
Definition: control.c:3724

Definition at line 3731 of file control.c.

◆ lisp_cp_input_node

vlib_node_registration_t lisp_cp_input_node
Initial value:
= {
.function = lisp_cp_input,
.name = "lisp-cp-input",
.vector_size = sizeof (u32),
.format_trace = format_lisp_cp_input_trace,
.n_errors = LISP_CP_INPUT_N_ERROR,
.error_strings = lisp_cp_input_error_strings,
.n_next_nodes = LISP_CP_INPUT_N_NEXT,
.next_nodes = {
[LISP_CP_INPUT_NEXT_DROP] = "error-drop",
},
}
static uword lisp_cp_input(vlib_main_t *vm, vlib_node_runtime_t *node, vlib_frame_t *from_frame)
Definition: control.c:4411
static char * lisp_cp_input_error_strings[]
Definition: control.c:3731
unsigned int u32
Definition: types.h:88
vl_api_fib_path_type_t type
Definition: fib_types.api:123
u8 * format_lisp_cp_input_trace(u8 *s, va_list *args)
Definition: control.c:3752

(constructor) VLIB_REGISTER_NODE (lisp_cp_input_node)

Definition at line 4493 of file control.c.

◆ lisp_cp_lookup_error_strings

char* lisp_cp_lookup_error_strings[]
static
Initial value:
= {
#define _(sym,string)
}
#define foreach_lisp_cp_lookup_error
Definition: control.c:2415

Definition at line 2422 of file control.c.

◆ lisp_cp_lookup_ip4_node

vlib_node_registration_t lisp_cp_lookup_ip4_node
Initial value:
= {
.function = lisp_cp_lookup_ip4,
.name = "lisp-cp-lookup-ip4",
.vector_size = sizeof (u32),
.format_trace = format_lisp_cp_lookup_trace,
.error_strings = lisp_cp_lookup_error_strings,
.n_next_nodes = LISP_CP_LOOKUP_N_NEXT,
.next_nodes = {
[LISP_CP_LOOKUP_NEXT_DROP] = "error-drop",
[LISP_CP_LOOKUP_NEXT_ARP_NDP_REPLY_TX] = "interface-output",
},
}
unsigned int u32
Definition: types.h:88
vl_api_fib_path_type_t type
Definition: fib_types.api:123
static uword lisp_cp_lookup_ip4(vlib_main_t *vm, vlib_node_runtime_t *node, vlib_frame_t *from_frame)
Definition: control.c:3615
static char * lisp_cp_lookup_error_strings[]
Definition: control.c:2422
u8 * format_lisp_cp_lookup_trace(u8 *s, va_list *args)
Definition: control.c:2450

(constructor) VLIB_REGISTER_NODE (lisp_cp_lookup_ip4_node)

Definition at line 3644 of file control.c.

◆ lisp_cp_lookup_ip6_node

vlib_node_registration_t lisp_cp_lookup_ip6_node
Initial value:
= {
.function = lisp_cp_lookup_ip6,
.name = "lisp-cp-lookup-ip6",
.vector_size = sizeof (u32),
.format_trace = format_lisp_cp_lookup_trace,
.error_strings = lisp_cp_lookup_error_strings,
.n_next_nodes = LISP_CP_LOOKUP_N_NEXT,
.next_nodes = {
[LISP_CP_LOOKUP_NEXT_DROP] = "error-drop",
[LISP_CP_LOOKUP_NEXT_ARP_NDP_REPLY_TX] = "interface-output",
},
}
unsigned int u32
Definition: types.h:88
vl_api_fib_path_type_t type
Definition: fib_types.api:123
static char * lisp_cp_lookup_error_strings[]
Definition: control.c:2422
static uword lisp_cp_lookup_ip6(vlib_main_t *vm, vlib_node_runtime_t *node, vlib_frame_t *from_frame)
Definition: control.c:3622
u8 * format_lisp_cp_lookup_trace(u8 *s, va_list *args)
Definition: control.c:2450

(constructor) VLIB_REGISTER_NODE (lisp_cp_lookup_ip6_node)

Definition at line 3664 of file control.c.

◆ lisp_cp_lookup_l2_node

vlib_node_registration_t lisp_cp_lookup_l2_node
Initial value:
= {
.function = lisp_cp_lookup_l2,
.name = "lisp-cp-lookup-l2",
.vector_size = sizeof (u32),
.format_trace = format_lisp_cp_lookup_trace,
.error_strings = lisp_cp_lookup_error_strings,
.n_next_nodes = LISP_CP_LOOKUP_N_NEXT,
.next_nodes = {
[LISP_CP_LOOKUP_NEXT_DROP] = "error-drop",
[LISP_CP_LOOKUP_NEXT_ARP_NDP_REPLY_TX] = "interface-output",
},
}
unsigned int u32
Definition: types.h:88
vl_api_fib_path_type_t type
Definition: fib_types.api:123
static uword lisp_cp_lookup_l2(vlib_main_t *vm, vlib_node_runtime_t *node, vlib_frame_t *from_frame)
Definition: control.c:3629
static char * lisp_cp_lookup_error_strings[]
Definition: control.c:2422
u8 * format_lisp_cp_lookup_trace(u8 *s, va_list *args)
Definition: control.c:2450

(constructor) VLIB_REGISTER_NODE (lisp_cp_lookup_l2_node)

Definition at line 3684 of file control.c.

◆ lisp_cp_lookup_nsh_node

vlib_node_registration_t lisp_cp_lookup_nsh_node
Initial value:
= {
.function = lisp_cp_lookup_nsh,
.name = "lisp-cp-lookup-nsh",
.vector_size = sizeof (u32),
.format_trace = format_lisp_cp_lookup_trace,
.error_strings = lisp_cp_lookup_error_strings,
.n_next_nodes = LISP_CP_LOOKUP_N_NEXT,
.next_nodes = {
[LISP_CP_LOOKUP_NEXT_DROP] = "error-drop",
[LISP_CP_LOOKUP_NEXT_ARP_NDP_REPLY_TX] = "interface-output",
},
}
static uword lisp_cp_lookup_nsh(vlib_main_t *vm, vlib_node_runtime_t *node, vlib_frame_t *from_frame)
Definition: control.c:3636
unsigned int u32
Definition: types.h:88
vl_api_fib_path_type_t type
Definition: fib_types.api:123
static char * lisp_cp_lookup_error_strings[]
Definition: control.c:2422
u8 * format_lisp_cp_lookup_trace(u8 *s, va_list *args)
Definition: control.c:2450

(constructor) VLIB_REGISTER_NODE (lisp_cp_lookup_nsh_node)

Definition at line 3704 of file control.c.

◆ lisp_cp_output_error_strings

char* lisp_cp_output_error_strings[]
static
Initial value:
= {
#define _(sym,string)
}
#define foreach_lisp_cp_output_error
Definition: control.c:2858

Definition at line 2862 of file control.c.

◆ lisp_cp_output_node

vlib_node_registration_t lisp_cp_output_node
Initial value:
= {
.function = lisp_cp_output,
.name = "lisp-cp-output",
.vector_size = sizeof (u32),
.format_trace = format_lisp_cp_input_trace,
.error_strings = lisp_cp_output_error_strings,
.n_next_nodes = LISP_CP_INPUT_N_NEXT,
.next_nodes = {
[LISP_CP_INPUT_NEXT_DROP] = "error-drop",
},
}
static uword lisp_cp_output(vlib_main_t *vm, vlib_node_runtime_t *node, vlib_frame_t *from_frame)
Definition: control.c:2877
static char * lisp_cp_output_error_strings[]
Definition: control.c:2862
unsigned int u32
Definition: types.h:88
vl_api_fib_path_type_t type
Definition: fib_types.api:123
u8 * format_lisp_cp_input_trace(u8 *s, va_list *args)
Definition: control.c:3752

(constructor) VLIB_REGISTER_NODE (lisp_cp_output_node)

Definition at line 2885 of file control.c.