36 for (i = 0; i <
vec_len (rlocs); i++)
51 memset(h, 0,
sizeof (*h));
67 syscall (SYS_clock_gettime, CLOCK_REALTIME, &ts);
68 nonce_lower = ts.tv_nsec;
69 nonce_upper = ts.tv_sec ^ clib_host_to_net_u32(nonce_lower);
76 nonce = (nonce << 32) | nonce_lower;
90 memset(h, 0,
sizeof(h[0]));
177 u32 i, len = 0, tlen = 0;
180 for (i = 0; i < rloc_count; i++)
209 void * h = 0, * loc_hdr = 0;
211 int i = 0, len = 0, llen = 0;
236 clib_warning(
"Multiple locators probed! Probing only the first!");
242 if (probed_ != 0 && probed)
#define MREQ_ITR_RLOC_COUNT(h_)
sll srl srl sll sra u16x4 i
#define gid_address_type(_a)
bad routing header type(not 4)") sr_error (NO_MORE_SEGMENTS
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)
#define MAP_REC_EID_PLEN(h)
struct _eid_prefix_record_hdr eid_record_hdr_t
#define vec_add1(V, E)
Add 1 element to end of vector (unspecified alignment).
static u32 msg_type_to_hdr_len(lisp_msg_type_e type)
always_inline void * vlib_buffer_get_current(vlib_buffer_t *b)
Get pointer to current data to process.
always_inline void increment_record_count(void *b)
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)
#define clib_warning(format, args...)
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, u64 *nonce)
u32 lisp_msg_parse_addr(vlib_buffer_t *b, gid_address_t *eid)
always_inline void * vlib_buffer_put_uninit(vlib_buffer_t *b, u8 size)
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_)
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)
struct _mapping_record_hdr_t mapping_record_hdr_t
struct _gid_address_t gid_address_t
always_inline void * vlib_buffer_pull(vlib_buffer_t *b, u8 size)
#define MAP_REC_LOC_COUNT(h)
#define gid_address_ip(_a)
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)
u8 gid_address_len(gid_address_t *a)
void * lisp_msg_pull_hdr(vlib_buffer_t *b, lisp_msg_type_e type)
u32 lisp_msg_parse_eid_rec(vlib_buffer_t *b, gid_address_t *eid)
u32 gid_address_parse(u8 *offset, gid_address_t *a)
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)
void * lisp_msg_put_gid(vlib_buffer_t *b, gid_address_t *gid)
#define MREQ_SMR_INVOKED(h_)