DPDK  24.03.0
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 
98  union {
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 
139  uint8_t *offset_padding;
140 } __rte_packed;
141 
152  uint8_t *offset_padding;
153 } __rte_packed;
154 
165  uint8_t *offset_padding;
166 };
167 
178 };
179 
187  uint8_t *offset_padding;
188 } __rte_packed;
189 
198 };
199 
207 };
208 
215 };
216 
221  struct rte_l2tpv2_common_hdr common;
222  union {
239  };
240 } __rte_packed;
241 
242 #ifdef __cplusplus
243 }
244 #endif
245 
246 #endif /* _RTE_L2TPV2_H_ */
rte_be16_t flags_version
Definition: rte_l2tpv2.h:100
#define __rte_packed
Definition: rte_common.h:102
uint16_t rte_be16_t