* This makes it possible for servers to be co-located in the same data
* center or be separated geographically as long as they are reachable
* through the underlay L3 network.
- *
- * You can refer to this kind of L2 overlay bridge domain as a GENEVE
- * (Virtual eXtensible VLAN) segment.
*/
static geneve_tunnel_t *
geneve_tunnel_from_fib_node (fib_node_t * node)
{
-#if (CLIB_DEBUG > 0)
ASSERT (FIB_NODE_TYPE_GENEVE_TUNNEL == node->fn_type);
-#endif
return ((geneve_tunnel_t *) (((char *) node) -
STRUCT_OFFSET_OF (geneve_tunnel_t, node)));
}
vnet_set_geneve_oamframe_bit (geneve, 0);
vnet_set_geneve_critical_bit (geneve, 0);
vnet_set_geneve_protocol (geneve, GENEVE_ETH_PROTOCOL);
+
+ vnet_geneve_hdr_1word_hton (geneve);
+
vnet_set_geneve_vni (geneve, t->vni);
t->rewrite = r.rw;
if (!is_ip6)
{
key4.remote = a->remote.ip4.as_u32;
- key4.vni = clib_host_to_net_u32 (a->vni << 8);
+ key4.vni =
+ clib_host_to_net_u32 ((a->vni << GENEVE_VNI_SHIFT) & GENEVE_VNI_MASK);
p = hash_get (vxm->geneve4_tunnel_by_key, key4.as_u64);
}
else
{
key6.remote = a->remote.ip6;
- key6.vni = clib_host_to_net_u32 (a->vni << 8);
+ key6.vni =
+ clib_host_to_net_u32 ((a->vni << GENEVE_VNI_SHIFT) & GENEVE_VNI_MASK);
p = hash_get_mem (vxm->geneve6_tunnel_by_key, &key6);
}