16 #ifndef included_ip_vtep_h 17 #define included_ip_vtep_h 83 k4->as_u64 = ~((
u64) 0);
90 k6->fib_index = (
u32) ~ 0;
102 vtep4_key_t * last_k4)
111 last_k4->as_u64 = k4.as_u64;
117 vtep4_key_t vtep4_cache[8];
132 #ifdef CLIB_HAVE_VEC512 133 u64x8 k4_u64x8 = u64x8_splat (k4.as_u64);
134 u64x8 cache = u64x8_load_aligned (vtep4_u512->
vtep4_cache);
147 last_k4->as_u64 = k4.as_u64;
149 #ifdef CLIB_HAVE_VEC512 151 vtep4_u512->
idx = (vtep4_u512->
idx + 1) & 0x7;
159 vtep6_key_t * last_k6)
164 && ip60->
dst_address.as_u64[0] == last_k6->addr.as_u64[0]
166 last_k6->addr.as_u64[1]))
typedef CLIB_PACKED(struct { union { struct { ip4_address_t addr;u32 fib_index;};u64 as_u64;};}) vtep4_key_t
Tunnel endpoint key (IPv4)
#define count_trailing_zeros(x)
static void vtep4_key_init(vtep4_key_t *k4)
#define hash_create_mem(elts, key_bytes, value_bytes)
uword vtep_addr_unref(vtep_table_t *t, u32 fib_index, ip46_address_t *ip)
static u8 vtep6_check(vtep_table_t *t, vlib_buffer_t *b0, ip6_header_t *ip60, vtep6_key_t *last_k6)
static u8 vtep4_check(vtep_table_t *t, vlib_buffer_t *b0, ip4_header_t *ip40, vtep4_key_t *last_k4)
static void ip6_address_set_zero(ip6_address_t *a)
static_always_inline u8 u64x8_mask_is_equal(u64x8 a, u64x8 b)
uword vtep_addr_ref(vtep_table_t *t, u32 fib_index, ip46_address_t *ip)
static void vtep6_key_init(vtep6_key_t *k6)
static u32 vlib_buffer_get_ip4_fib_index(vlib_buffer_t *b)
static vtep_table_t vtep_table_create()
VLIB buffer representation.
vtep4_key_t vtep4_cache[8]
#define hash_get_mem(h, key)
static u32 vlib_buffer_get_ip6_fib_index(vlib_buffer_t *b)
static u8 vtep4_check_vector(vtep_table_t *t, vlib_buffer_t *b0, ip4_header_t *ip40, vtep4_key_t *last_k4, vtep4_cache_t *vtep4_u512)