From 7cd468a3d7dee7d6c92f69a0bb7061ae208ec727 Mon Sep 17 00:00:00 2001 From: Damjan Marion Date: Mon, 19 Dec 2016 23:05:39 +0100 Subject: Reorganize source tree to use single autotools instance Change-Id: I7b51f88292e057c6443b12224486f2d0c9f8ae23 Signed-off-by: Damjan Marion --- src/vnet/vxlan-gpe/vxlan_gpe_packet.h | 110 ++++++++++++++++++++++++++++++++++ 1 file changed, 110 insertions(+) create mode 100644 src/vnet/vxlan-gpe/vxlan_gpe_packet.h (limited to 'src/vnet/vxlan-gpe/vxlan_gpe_packet.h') diff --git a/src/vnet/vxlan-gpe/vxlan_gpe_packet.h b/src/vnet/vxlan-gpe/vxlan_gpe_packet.h new file mode 100644 index 00000000000..ec3c2e586e1 --- /dev/null +++ b/src/vnet/vxlan-gpe/vxlan_gpe_packet.h @@ -0,0 +1,110 @@ +/* + * Copyright (c) 2015 Cisco and/or its affiliates. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at: + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +/** + * @file + * @brief VXLAN GPE packet header structure + * +*/ +#ifndef included_vxlan_gpe_packet_h +#define included_vxlan_gpe_packet_h + +/** + * From draft-quinn-vxlan-gpe-03.txt + * + * 0 1 2 3 + * 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 + * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + * |R|R|R|R|I|P|R|O|Ver| Reserved |Next Protocol | + * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + * | VXLAN Network Identifier (VNI) | Reserved | + * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + * + * I Bit: Flag bit 4 indicates that the VNI is valid. + * + * P Bit: Flag bit 5 is defined as the Next Protocol bit. The P bit + * MUST be set to 1 to indicate the presence of the 8 bit next + * protocol field. + * + * O Bit: Flag bit 7 is defined as the O bit. When the O bit is set to 1, + * + * the packet is an OAM packet and OAM processing MUST occur. The OAM + * protocol details are out of scope for this document. As with the + * P-bit, bit 7 is currently a reserved flag in VXLAN. + * + * VXLAN-gpe bits 8 and 9 are defined as version bits. These bits are + * reserved in VXLAN. The version field is used to ensure backward + * compatibility going forward with future VXLAN-gpe updates. + * + * The initial version for VXLAN-gpe is 0. + * + * This draft defines the following Next Protocol values: + * + * 0x1 : IPv4 + * 0x2 : IPv6 + * 0x3 : Ethernet + * 0x4 : Network Service Header [NSH] + */ + +/** + * @brief VXLAN GPE support inner protocol definition. + * 1 - IP4 + * 2 - IP6 + * 3 - ETHERNET + * 4 - NSH + */ +#define foreach_vxlan_gpe_protocol \ +_ (0x01, IP4) \ +_ (0x02, IP6) \ +_ (0x03, ETHERNET) \ +_ (0x04, NSH) \ +_ (0x05, IOAM) + + +/** + * @brief Struct for VXLAN GPE support inner protocol definition. + * 1 - IP4 + * 2 - IP6 + * 3 - ETHERNET + * 4 - NSH + * 5 - IOAM + */ +typedef enum { +#define _(n,f) VXLAN_GPE_PROTOCOL_##f = n, + foreach_vxlan_gpe_protocol +#undef _ + VXLAN_GPE_PROTOCOL_MAX, +} vxlan_gpe_protocol_t; + +/** + * @brief VXLAN GPE Header definition + */ +typedef struct { + u8 flags; + /** Version and Reserved */ + u8 ver_res; + /** Reserved */ + u8 res; + /** see vxlan_gpe_protocol_t */ + u8 protocol; + /** VNI and Reserved */ + u32 vni_res; +} vxlan_gpe_header_t; + +#define VXLAN_GPE_FLAGS_I 0x08 +#define VXLAN_GPE_FLAGS_P 0x04 +#define VXLAN_GPE_FLAGS_O 0x01 +#define VXLAN_GPE_VERSION 0x0 + +#endif /* included_vxlan_gpe_packet_h */ -- cgit 1.2.3-korg