FD.io VPP
v21.06-3-gbb25fbf28
Vector Packet Processing
vxlan_gpe_packet.h
Go to the documentation of this file.
1
/*
2
* Copyright (c) 2015 Cisco and/or its affiliates.
3
* Licensed under the Apache License, Version 2.0 (the "License");
4
* you may not use this file except in compliance with the License.
5
* You may obtain a copy of the License at:
6
*
7
* http://www.apache.org/licenses/LICENSE-2.0
8
*
9
* Unless required by applicable law or agreed to in writing, software
10
* distributed under the License is distributed on an "AS IS" BASIS,
11
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
* See the License for the specific language governing permissions and
13
* limitations under the License.
14
*/
15
/**
16
* @file
17
* @brief VXLAN GPE packet header structure
18
*
19
*/
20
#ifndef included_vxlan_gpe_packet_h
21
#define included_vxlan_gpe_packet_h
22
23
/**
24
* From draft-quinn-vxlan-gpe-03.txt
25
*
26
* 0 1 2 3
27
* 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
28
* +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
29
* |R|R|R|R|I|P|R|O|Ver| Reserved |Next Protocol |
30
* +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
31
* | VXLAN Network Identifier (VNI) | Reserved |
32
* +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
33
*
34
* I Bit: Flag bit 4 indicates that the VNI is valid.
35
*
36
* P Bit: Flag bit 5 is defined as the Next Protocol bit. The P bit
37
* MUST be set to 1 to indicate the presence of the 8 bit next
38
* protocol field.
39
*
40
* O Bit: Flag bit 7 is defined as the O bit. When the O bit is set to 1,
41
*
42
* the packet is an OAM packet and OAM processing MUST occur. The OAM
43
* protocol details are out of scope for this document. As with the
44
* P-bit, bit 7 is currently a reserved flag in VXLAN.
45
*
46
* VXLAN-gpe bits 8 and 9 are defined as version bits. These bits are
47
* reserved in VXLAN. The version field is used to ensure backward
48
* compatibility going forward with future VXLAN-gpe updates.
49
*
50
* The initial version for VXLAN-gpe is 0.
51
*
52
* This draft defines the following Next Protocol values:
53
*
54
* 0x1 : IPv4
55
* 0x2 : IPv6
56
* 0x3 : Ethernet
57
* 0x4 : Network Service Header [NSH]
58
*/
59
60
/**
61
* @brief VXLAN GPE support inner protocol definition.
62
* 1 - IP4
63
* 2 - IP6
64
* 3 - ETHERNET
65
* 4 - NSH
66
*/
67
#define foreach_vxlan_gpe_protocol \
68
_ (0x01, IP4) \
69
_ (0x02, IP6) \
70
_ (0x03, ETHERNET) \
71
_ (0x04, NSH) \
72
_ (0x05, IOAM)
73
74
75
/**
76
* @brief Struct for VXLAN GPE support inner protocol definition.
77
* 1 - IP4
78
* 2 - IP6
79
* 3 - ETHERNET
80
* 4 - NSH
81
* 5 - IOAM
82
*/
83
typedef
enum
84
{
85
#define _(n,f) VXLAN_GPE_PROTOCOL_##f = n,
86
foreach_vxlan_gpe_protocol
87
#undef _
88
VXLAN_GPE_PROTOCOL_MAX
,
89
}
vxlan_gpe_protocol_t
;
90
91
/**
92
* @brief VXLAN GPE Header definition
93
*/
94
typedef
struct
95
{
96
u8
flags
;
97
/** Version and Reserved */
98
u8
ver_res
;
99
/** Reserved */
100
u8
res
;
101
/** see vxlan_gpe_protocol_t */
102
u8
protocol
;
103
/** VNI and Reserved */
104
u32
vni_res
;
105
}
vxlan_gpe_header_t
;
106
107
#define VXLAN_GPE_FLAGS_I 0x08
108
#define VXLAN_GPE_FLAGS_P 0x04
109
#define VXLAN_GPE_FLAGS_O 0x01
110
#define VXLAN_GPE_VERSION 0x0
111
112
#endif
/* included_vxlan_gpe_packet_h */
113
114
/*
115
* fd.io coding-style-patch-verification: ON
116
*
117
* Local Variables:
118
* eval: (c-set-style "gnu")
119
* End:
120
*/
VXLAN_GPE_PROTOCOL_MAX
@ VXLAN_GPE_PROTOCOL_MAX
Definition:
vxlan_gpe_packet.h:88
vxlan_gpe_header_t::flags
u8 flags
Definition:
vxlan_gpe_packet.h:96
vxlan_gpe_header_t::protocol
u8 protocol
see vxlan_gpe_protocol_t
Definition:
vxlan_gpe_packet.h:102
vxlan_gpe_header_t::ver_res
u8 ver_res
Version and Reserved.
Definition:
vxlan_gpe_packet.h:98
vxlan_gpe_protocol_t
vxlan_gpe_protocol_t
Struct for VXLAN GPE support inner protocol definition.
Definition:
vxlan_gpe_packet.h:83
vxlan_gpe_header_t::res
u8 res
Reserved.
Definition:
vxlan_gpe_packet.h:100
u32
unsigned int u32
Definition:
types.h:88
u8
unsigned char u8
Definition:
types.h:56
foreach_vxlan_gpe_protocol
#define foreach_vxlan_gpe_protocol
From draft-quinn-vxlan-gpe-03.txt.
Definition:
vxlan_gpe_packet.h:67
vxlan_gpe_header_t
VXLAN GPE Header definition.
Definition:
vxlan_gpe_packet.h:94
vxlan_gpe_header_t::vni_res
u32 vni_res
VNI and Reserved.
Definition:
vxlan_gpe_packet.h:104
src
vnet
vxlan-gpe
vxlan_gpe_packet.h
Generated on Sat Jan 8 2022 10:05:37 for FD.io VPP by
1.8.17