16 #ifndef included_ip_vtep_h 17 #define included_ip_vtep_h 82 k4->as_u64 = ~((
u64) 0);
89 k6->fib_index = (
u32) ~ 0;
101 vtep4_key_t * last_k4)
110 last_k4->as_u64 = k4.as_u64;
116 vtep4_key_t vtep4_cache[8];
131 #ifdef CLIB_HAVE_VEC512 132 u64x8 k4_u64x8 = u64x8_splat (k4.as_u64);
133 u64x8 cache = u64x8_load_unaligned (vtep4_u512->
vtep4_cache);
146 last_k4->as_u64 = k4.as_u64;
148 #ifdef CLIB_HAVE_VEC512 150 vtep4_u512->
idx = (vtep4_u512->
idx + 1) & 0x7;
158 vtep6_key_t * last_k6)
163 && ip60->
dst_address.as_u64[0] == last_k6->addr.as_u64[0]
165 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)