DPDK
23.11.2
Loading...
Searching...
No Matches
lib
net
rte_l2tpv2.h
Go to the documentation of this file.
1
/* SPDX-License-Identifier: BSD-3-Clause
2
* Copyright(c) 2021 Intel Corporation.
3
*/
4
5
#ifndef _RTE_L2TPV2_H_
6
#define _RTE_L2TPV2_H_
7
74
#include <stdint.h>
75
#include <
rte_byteorder.h
>
76
77
#ifdef __cplusplus
78
extern
"C"
{
79
#endif
80
81
/*
82
* L2TPv2 Message Type
83
*/
84
#define RTE_L2TPV2_MSG_TYPE_CONTROL 0xC802
85
#define RTE_L2TPV2_MSG_TYPE_DATA 0x0002
86
#define RTE_L2TPV2_MSG_TYPE_DATA_L 0x4002
87
#define RTE_L2TPV2_MSG_TYPE_DATA_S 0x0802
88
#define RTE_L2TPV2_MSG_TYPE_DATA_O 0x0202
89
#define RTE_L2TPV2_MSG_TYPE_DATA_L_S 0x4802
90
#define RTE_L2TPV2_MSG_TYPE_DATA_L_O 0x4202
91
#define RTE_L2TPV2_MSG_TYPE_DATA_S_O 0x0A02
92
#define RTE_L2TPV2_MSG_TYPE_DATA_L_S_O 0x4A02
93
97
struct
rte_l2tpv2_common_hdr
{
98
union
{
100
rte_be16_t
flags_version
;
101
__extension__
102
struct
{
103
#if RTE_BYTE_ORDER == RTE_LITTLE_ENDIAN
104
uint16_t
ver
:4;
105
uint16_t
res3
:4;
106
uint16_t
p
:1;
107
uint16_t
o
:1;
108
uint16_t
res2
:1;
109
uint16_t
s
:1;
110
uint16_t
res1
:2;
111
uint16_t
l
:1;
112
uint16_t
t
:1;
113
#elif RTE_BYTE_ORDER == RTE_BIG_ENDIAN
114
uint16_t
t
:1;
115
uint16_t
l
:1;
116
uint16_t
res1
:2;
117
uint16_t
s
:1;
118
uint16_t
res2
:1;
119
uint16_t
o
:1;
120
uint16_t
p
:1;
121
uint16_t
res3
:4;
122
uint16_t
ver
:4;
123
#endif
124
};
125
};
126
};
127
132
struct
rte_l2tpv2_msg_with_all_options
{
133
rte_be16_t
length
;
134
rte_be16_t
tunnel_id
;
135
rte_be16_t
session_id
;
136
rte_be16_t
ns
;
137
rte_be16_t
nr
;
138
rte_be16_t
offset_size
;
139
uint8_t *
offset_padding
;
140
}
__rte_packed
;
141
146
struct
rte_l2tpv2_msg_without_length
{
147
rte_be16_t
tunnel_id
;
148
rte_be16_t
session_id
;
149
rte_be16_t
ns
;
150
rte_be16_t
nr
;
151
rte_be16_t
offset_size
;
152
uint8_t *
offset_padding
;
153
}
__rte_packed
;
154
160
struct
rte_l2tpv2_msg_without_ns_nr
{
161
rte_be16_t
length
;
162
rte_be16_t
tunnel_id
;
163
rte_be16_t
session_id
;
164
rte_be16_t
offset_size
;
165
uint8_t *
offset_padding
;
166
};
167
172
struct
rte_l2tpv2_msg_without_offset
{
173
rte_be16_t
length
;
174
rte_be16_t
tunnel_id
;
175
rte_be16_t
session_id
;
176
rte_be16_t
ns
;
177
rte_be16_t
nr
;
178
};
179
183
struct
rte_l2tpv2_msg_with_offset
{
184
rte_be16_t
tunnel_id
;
185
rte_be16_t
session_id
;
186
rte_be16_t
offset_size
;
187
uint8_t *
offset_padding
;
188
}
__rte_packed
;
189
193
struct
rte_l2tpv2_msg_with_ns_nr
{
194
rte_be16_t
tunnel_id
;
195
rte_be16_t
session_id
;
196
rte_be16_t
ns
;
197
rte_be16_t
nr
;
198
};
199
203
struct
rte_l2tpv2_msg_with_length
{
204
rte_be16_t
length
;
205
rte_be16_t
tunnel_id
;
206
rte_be16_t
session_id
;
207
};
208
212
struct
rte_l2tpv2_msg_without_all_options
{
213
rte_be16_t
tunnel_id
;
214
rte_be16_t
session_id
;
215
};
216
220
struct
rte_l2tpv2_combined_msg_hdr
{
221
struct
rte_l2tpv2_common_hdr
common
;
222
union
{
224
struct
rte_l2tpv2_msg_with_all_options
type0;
226
struct
rte_l2tpv2_msg_without_length
type1;
228
struct
rte_l2tpv2_msg_without_ns_nr
type2;
230
struct
rte_l2tpv2_msg_without_offset
type3;
232
struct
rte_l2tpv2_msg_with_offset
type4;
234
struct
rte_l2tpv2_msg_with_ns_nr
type5;
236
struct
rte_l2tpv2_msg_with_length
type6;
238
struct
rte_l2tpv2_msg_without_all_options
type7;
239
};
240
}
__rte_packed
;
241
242
#ifdef __cplusplus
243
}
244
#endif
245
246
#endif
/* _RTE_L2TPV2_H_ */
rte_byteorder.h
rte_be16_t
uint16_t rte_be16_t
Definition
rte_byteorder.h:112
__rte_packed
#define __rte_packed
Definition
rte_common.h:89
rte_l2tpv2_combined_msg_hdr
Definition
rte_l2tpv2.h:220
rte_l2tpv2_combined_msg_hdr::common
struct rte_l2tpv2_common_hdr common
Definition
rte_l2tpv2.h:221
rte_l2tpv2_common_hdr
Definition
rte_l2tpv2.h:97
rte_l2tpv2_common_hdr::l
uint16_t l
Definition
rte_l2tpv2.h:111
rte_l2tpv2_common_hdr::res1
uint16_t res1
Definition
rte_l2tpv2.h:110
rte_l2tpv2_common_hdr::p
uint16_t p
Definition
rte_l2tpv2.h:106
rte_l2tpv2_common_hdr::t
uint16_t t
Definition
rte_l2tpv2.h:112
rte_l2tpv2_common_hdr::s
uint16_t s
Definition
rte_l2tpv2.h:109
rte_l2tpv2_common_hdr::res2
uint16_t res2
Definition
rte_l2tpv2.h:108
rte_l2tpv2_common_hdr::flags_version
rte_be16_t flags_version
Definition
rte_l2tpv2.h:100
rte_l2tpv2_common_hdr::o
uint16_t o
Definition
rte_l2tpv2.h:107
rte_l2tpv2_common_hdr::res3
uint16_t res3
Definition
rte_l2tpv2.h:105
rte_l2tpv2_common_hdr::ver
uint16_t ver
Definition
rte_l2tpv2.h:104
rte_l2tpv2_msg_with_all_options
Definition
rte_l2tpv2.h:132
rte_l2tpv2_msg_with_all_options::tunnel_id
rte_be16_t tunnel_id
Definition
rte_l2tpv2.h:134
rte_l2tpv2_msg_with_all_options::offset_size
rte_be16_t offset_size
Definition
rte_l2tpv2.h:138
rte_l2tpv2_msg_with_all_options::offset_padding
uint8_t * offset_padding
Definition
rte_l2tpv2.h:139
rte_l2tpv2_msg_with_all_options::nr
rte_be16_t nr
Definition
rte_l2tpv2.h:137
rte_l2tpv2_msg_with_all_options::ns
rte_be16_t ns
Definition
rte_l2tpv2.h:136
rte_l2tpv2_msg_with_all_options::length
rte_be16_t length
Definition
rte_l2tpv2.h:133
rte_l2tpv2_msg_with_all_options::session_id
rte_be16_t session_id
Definition
rte_l2tpv2.h:135
rte_l2tpv2_msg_with_length
Definition
rte_l2tpv2.h:203
rte_l2tpv2_msg_with_length::tunnel_id
rte_be16_t tunnel_id
Definition
rte_l2tpv2.h:205
rte_l2tpv2_msg_with_length::length
rte_be16_t length
Definition
rte_l2tpv2.h:204
rte_l2tpv2_msg_with_length::session_id
rte_be16_t session_id
Definition
rte_l2tpv2.h:206
rte_l2tpv2_msg_with_ns_nr
Definition
rte_l2tpv2.h:193
rte_l2tpv2_msg_with_ns_nr::tunnel_id
rte_be16_t tunnel_id
Definition
rte_l2tpv2.h:194
rte_l2tpv2_msg_with_ns_nr::nr
rte_be16_t nr
Definition
rte_l2tpv2.h:197
rte_l2tpv2_msg_with_ns_nr::ns
rte_be16_t ns
Definition
rte_l2tpv2.h:196
rte_l2tpv2_msg_with_ns_nr::session_id
rte_be16_t session_id
Definition
rte_l2tpv2.h:195
rte_l2tpv2_msg_with_offset
Definition
rte_l2tpv2.h:183
rte_l2tpv2_msg_with_offset::tunnel_id
rte_be16_t tunnel_id
Definition
rte_l2tpv2.h:184
rte_l2tpv2_msg_with_offset::offset_size
rte_be16_t offset_size
Definition
rte_l2tpv2.h:186
rte_l2tpv2_msg_with_offset::offset_padding
uint8_t * offset_padding
Definition
rte_l2tpv2.h:187
rte_l2tpv2_msg_with_offset::session_id
rte_be16_t session_id
Definition
rte_l2tpv2.h:185
rte_l2tpv2_msg_without_all_options
Definition
rte_l2tpv2.h:212
rte_l2tpv2_msg_without_all_options::tunnel_id
rte_be16_t tunnel_id
Definition
rte_l2tpv2.h:213
rte_l2tpv2_msg_without_all_options::session_id
rte_be16_t session_id
Definition
rte_l2tpv2.h:214
rte_l2tpv2_msg_without_length
Definition
rte_l2tpv2.h:146
rte_l2tpv2_msg_without_length::tunnel_id
rte_be16_t tunnel_id
Definition
rte_l2tpv2.h:147
rte_l2tpv2_msg_without_length::offset_size
rte_be16_t offset_size
Definition
rte_l2tpv2.h:151
rte_l2tpv2_msg_without_length::offset_padding
uint8_t * offset_padding
Definition
rte_l2tpv2.h:152
rte_l2tpv2_msg_without_length::nr
rte_be16_t nr
Definition
rte_l2tpv2.h:150
rte_l2tpv2_msg_without_length::ns
rte_be16_t ns
Definition
rte_l2tpv2.h:149
rte_l2tpv2_msg_without_length::session_id
rte_be16_t session_id
Definition
rte_l2tpv2.h:148
rte_l2tpv2_msg_without_ns_nr
Definition
rte_l2tpv2.h:160
rte_l2tpv2_msg_without_ns_nr::tunnel_id
rte_be16_t tunnel_id
Definition
rte_l2tpv2.h:162
rte_l2tpv2_msg_without_ns_nr::offset_size
rte_be16_t offset_size
Definition
rte_l2tpv2.h:164
rte_l2tpv2_msg_without_ns_nr::offset_padding
uint8_t * offset_padding
Definition
rte_l2tpv2.h:165
rte_l2tpv2_msg_without_ns_nr::length
rte_be16_t length
Definition
rte_l2tpv2.h:161
rte_l2tpv2_msg_without_ns_nr::session_id
rte_be16_t session_id
Definition
rte_l2tpv2.h:163
rte_l2tpv2_msg_without_offset
Definition
rte_l2tpv2.h:172
rte_l2tpv2_msg_without_offset::tunnel_id
rte_be16_t tunnel_id
Definition
rte_l2tpv2.h:174
rte_l2tpv2_msg_without_offset::nr
rte_be16_t nr
Definition
rte_l2tpv2.h:177
rte_l2tpv2_msg_without_offset::ns
rte_be16_t ns
Definition
rte_l2tpv2.h:176
rte_l2tpv2_msg_without_offset::length
rte_be16_t length
Definition
rte_l2tpv2.h:173
rte_l2tpv2_msg_without_offset::session_id
rte_be16_t session_id
Definition
rte_l2tpv2.h:175
Generated by
1.9.8