63 for (i = 0; i <
vec_len (records); i++)
93 for (i = 0; i <
vec_len (rlocs); i++)
99 *locs_put = count - 1;
125 nonce_lower = ts.tv_nsec;
126 nonce_upper = ts.tv_sec ^ clib_host_to_net_u32 (nonce_lower);
133 nonce = (nonce << 32) | nonce_lower;
155 u8 want_map_notify,
u16 auth_data_len,
u64 * nonce,
184 u8 rloc_probe_set,
u64 * nonce)
296 for (i = 0; i < rloc_count; i++)
327 void *
h = 0, *loc_hdr = 0;
329 int i = 0,
len = 0, llen = 0;
363 (
"Multiple locators probed! Probing only the first!");
369 if (probed_ != 0 && probed)
struct _mapping_record_hdr_t mapping_record_hdr_t
#define MREQ_ITR_RLOC_COUNT(h_)
void * lisp_msg_put_mreq(lisp_cp_main_t *lcm, vlib_buffer_t *b, gid_address_t *seid, gid_address_t *deid, gid_address_t *rlocs, u8 is_smr_invoked, u8 rloc_probe_set, u64 *nonce)
void * lisp_msg_put_map_register(vlib_buffer_t *b, mapping_t *records, u8 want_map_notify, u16 auth_data_len, u64 *nonce, u32 *msg_len)
#define MREP_REC_COUNT(h_)
static u8 * vlib_buffer_get_tail(vlib_buffer_t *b)
Get pointer to the end of buffer's data.
boost::asio::ip::address ip_address_t
#define gid_address_type(_a)
static void increment_record_count(void *b)
clib_memset(h->entries, 0, sizeof(h->entries[0]) *entries)
#define MAP_REC_EID_PLEN(h)
static void lisp_msg_put_mapping_record(vlib_buffer_t *b, mapping_t *record)
struct _eid_prefix_record_hdr eid_record_hdr_t
#define vec_add1(V, E)
Add 1 element to end of vector (unspecified alignment).
void * lisp_msg_put_gid(vlib_buffer_t *b, gid_address_t *gid)
static u32 msg_type_to_hdr_len(lisp_msg_type_e type)
#define LOC_REACHABLE(h_)
u32 locator_parse(void *b, locator_t *loc)
u16 gid_address_put(u8 *b, gid_address_t *gid)
u16 gid_address_size_to_put(gid_address_t *gid)
static void lisp_msg_put_mreg_records(vlib_buffer_t *b, mapping_t *records)
#define MREQ_RLOC_PROBE(h_)
#define MREG_REC_COUNT(h_)
u32 lisp_msg_parse_addr(vlib_buffer_t *b, gid_address_t *eid)
static void * vlib_buffer_get_current(vlib_buffer_t *b)
Get pointer to current data to process.
void * pkt_push_udp_and_ip(vlib_main_t *vm, vlib_buffer_t *b, u16 sp, u16 dp, ip_address_t *sip, ip_address_t *dip, u8 csum_offload)
u32 lisp_msg_parse_itr_rlocs(vlib_buffer_t *b, gid_address_t **rlocs, u8 rloc_count)
u64 nonce_build(u32 seed)
#define gid_address_ippref_len(_a)
u32 lisp_msg_parse_mapping_record(vlib_buffer_t *b, gid_address_t *eid, locator_t **locs, locator_t *probed_)
#define clib_warning(format, args...)
void * lisp_msg_put_eid_rec(vlib_buffer_t *b, gid_address_t *eid)
void * lisp_msg_push_ecm(vlib_main_t *vm, vlib_buffer_t *b, int lp, int rp, gid_address_t *la, gid_address_t *ra)
void * lisp_msg_put_map_reply(vlib_buffer_t *b, mapping_t *records, u64 nonce, u8 probe_bit)
struct _gid_address_t gid_address_t
#define MAP_REC_LOC_COUNT(h)
struct _locator_hdr locator_hdr_t
#define gid_address_ip(_a)
static u8 vlib_buffer_has_space(vlib_buffer_t *b, word l)
Check if there is enough space in buffer to advance.
u32 lisp_msg_parse_loc(vlib_buffer_t *b, locator_t *loc)
#define vec_len(v)
Number of elements in vector (rvalue-only, NULL tolerant)
VLIB buffer representation.
u8 gid_address_len(gid_address_t *a)
void * lisp_msg_pull_hdr(vlib_buffer_t *b, lisp_msg_type_e type)
#define LOC_MPRIORITY(h_)
u32 lisp_msg_parse_eid_rec(vlib_buffer_t *b, gid_address_t *eid)
#define vec_foreach(var, vec)
Vector iterator.
static void * vlib_buffer_pull(vlib_buffer_t *b, u8 size)
Retrieve bytes from buffer head.
#define SYS_clock_gettime
u32 gid_address_parse(u8 *offset, gid_address_t *a)
static void * vlib_buffer_put_uninit(vlib_buffer_t *b, u16 size)
Append uninitialized data to buffer.
static void * lisp_msg_put_itr_rlocs(lisp_cp_main_t *lcm, vlib_buffer_t *b, gid_address_t *rlocs, u8 *locs_put)
void * pkt_push_ecm_hdr(vlib_buffer_t *b)
static void lisp_msg_put_locators(vlib_buffer_t *b, locator_t *locators)
#define MREP_RLOC_PROBE(h_)
#define MAP_REGISTER_DEFAULT_TTL
#define MREQ_SMR_INVOKED(h_)
#define MREG_WANT_MAP_NOTIFY(h_)