xref: /openbsd-src/usr.sbin/tcpdump/gtp.h (revision 1568fe7ee936c3206d82f2a8a068551f6fe5f0d7)
1*1568fe7eSjsing /*	$OpenBSD: gtp.h,v 1.1 2009/11/04 09:43:11 jsing Exp $ */
2*1568fe7eSjsing /*
3*1568fe7eSjsing  * Copyright (c) 2009 Joel Sing <jsing@openbsd.org>
4*1568fe7eSjsing  *
5*1568fe7eSjsing  * Permission to use, copy, modify, and distribute this software for any
6*1568fe7eSjsing  * purpose with or without fee is hereby granted, provided that the above
7*1568fe7eSjsing  * copyright notice and this permission notice appear in all copies.
8*1568fe7eSjsing  *
9*1568fe7eSjsing  * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
10*1568fe7eSjsing  * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
11*1568fe7eSjsing  * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
12*1568fe7eSjsing  * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
13*1568fe7eSjsing  * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
14*1568fe7eSjsing  * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
15*1568fe7eSjsing  * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
16*1568fe7eSjsing  */
17*1568fe7eSjsing 
18*1568fe7eSjsing #ifndef __GTP_H_DEFINED
19*1568fe7eSjsing #define __GTP_H_DEFINED
20*1568fe7eSjsing 
21*1568fe7eSjsing #define GTP_VERSION_0			0
22*1568fe7eSjsing #define GTP_VERSION_1			1
23*1568fe7eSjsing #define GTP_VERSION_2			2
24*1568fe7eSjsing 
25*1568fe7eSjsing #define GTP_VERSION_MASK		0x07 << 5
26*1568fe7eSjsing #define GTP_VERSION_SHIFT		5
27*1568fe7eSjsing 
28*1568fe7eSjsing #define GTP_V0_PROTO			0
29*1568fe7eSjsing #define GTP_V0_PRIME_PROTO		1
30*1568fe7eSjsing #define GTP_V1_CTRL_PROTO		2
31*1568fe7eSjsing #define GTP_V1_USER_PROTO		3
32*1568fe7eSjsing #define GTP_V1_PRIME_PROTO		4
33*1568fe7eSjsing 
34*1568fe7eSjsing #define GTPV0_PORT			3386
35*1568fe7eSjsing 
36*1568fe7eSjsing #define GTPV1_C_PORT			2123
37*1568fe7eSjsing #define GTPV1_U_PORT			2152
38*1568fe7eSjsing #define GTPV1_PRIME_PORT		3386
39*1568fe7eSjsing 
40*1568fe7eSjsing #define GTPV0_HDR_PROTO_TYPE		1 << 4
41*1568fe7eSjsing #define GTPV0_HDR_SNN			1 << 0
42*1568fe7eSjsing 
43*1568fe7eSjsing #define GTPV0_IE_TYPE_MASK		1 << 7
44*1568fe7eSjsing #define GTPV0_IE_VALUE_MASK		~GTPV1_IE_TYPE_MASK
45*1568fe7eSjsing 
46*1568fe7eSjsing /*
47*1568fe7eSjsing  * GTPv0 Message Types.
48*1568fe7eSjsing  */
49*1568fe7eSjsing #define GTPV0_ECHO_REQUEST			1
50*1568fe7eSjsing #define GTPV0_ECHO_RESPONSE			2
51*1568fe7eSjsing #define GTPV0_VERSION_NOT_SUPPORTED		3
52*1568fe7eSjsing #define GTPV0_NODE_ALIVE_REQUEST		4
53*1568fe7eSjsing #define GTPV0_NODE_ALIVE_RESPONSE		5
54*1568fe7eSjsing #define GTPV0_REDIRECTION_REQUEST		6
55*1568fe7eSjsing #define GTPV0_REDIRECTION_RESPONSE		7
56*1568fe7eSjsing #define GTPV0_CREATE_PDP_CONTEXT_REQUEST	16
57*1568fe7eSjsing #define GTPV0_CREATE_PDP_CONTEXT_RESPONSE	17
58*1568fe7eSjsing #define GTPV0_UPDATE_PDP_CONTEXT_REQUEST	18
59*1568fe7eSjsing #define GTPV0_UPDATE_PDP_CONTEXT_RESPONSE	19
60*1568fe7eSjsing #define GTPV0_DELETE_PDP_CONTEXT_REQUEST	20
61*1568fe7eSjsing #define GTPV0_DELETE_PDP_CONTEXT_RESPONSE	21
62*1568fe7eSjsing #define GTPV0_CREATE_AA_PDP_CONTEXT_REQUEST	22
63*1568fe7eSjsing #define GTPV0_CREATE_AA_PDP_CONTEXT_RESPONSE	23
64*1568fe7eSjsing #define GTPV0_DELETE_AA_PDP_CONTEXT_REQUEST	24
65*1568fe7eSjsing #define GTPV0_DELETE_AA_PDP_CONTEXT_RESPONSE	25
66*1568fe7eSjsing #define GTPV0_ERROR_INDICATION			26
67*1568fe7eSjsing #define GTPV0_PDU_NOTIFICATION_REQUEST		27
68*1568fe7eSjsing #define GTPV0_PDU_NOTIFICATION_RESPONSE		28
69*1568fe7eSjsing #define GTPV0_PDU_NOTIFICATION_REJECT_REQUEST	29
70*1568fe7eSjsing #define GTPV0_PDU_NOTIFICATION_REJECT_RESPONSE	30
71*1568fe7eSjsing #define GTPV0_SEND_ROUTEING_INFO_REQUEST	32
72*1568fe7eSjsing #define GTPV0_SEND_ROUTEING_INFO_RESPONSE	33
73*1568fe7eSjsing #define GTPV0_FAILURE_REPORT_REQUEST		34
74*1568fe7eSjsing #define GTPV0_FAILURE_REPORT_RESPONSE		35
75*1568fe7eSjsing #define GTPV0_MS_GPRS_PRESENT_REQUEST		36
76*1568fe7eSjsing #define GTPV0_MS_GPRS_PRESENT_RESPONSE		37
77*1568fe7eSjsing #define GTPV0_IDENTIFICATION_REQUEST		48
78*1568fe7eSjsing #define GTPV0_IDENTIFICATION_RESPONSE		49
79*1568fe7eSjsing #define GTPV0_SGSN_CONTEXT_REQUEST		50
80*1568fe7eSjsing #define GTPV0_SGSN_CONTEXT_RESPONSE		51
81*1568fe7eSjsing #define GTPV0_SGSN_CONTEXT_ACKNOWLEDGE		52
82*1568fe7eSjsing #define GTPV0_DATA_RECORD_TRANSFER_REQUEST	240
83*1568fe7eSjsing #define GTPV0_DATA_RECORD_TRANSFER_RESPONSE	241
84*1568fe7eSjsing #define GTPV0_T_PDU				255
85*1568fe7eSjsing 
86*1568fe7eSjsing /*
87*1568fe7eSjsing  * GTPv0 Information Elements.
88*1568fe7eSjsing  */
89*1568fe7eSjsing #define GTPV0_TV_CAUSE				1
90*1568fe7eSjsing #define   GTPV0_TV_CAUSE_LENGTH			2
91*1568fe7eSjsing #define GTPV0_TV_IMSI				2
92*1568fe7eSjsing #define   GTPV0_TV_IMSI_LENGTH			9
93*1568fe7eSjsing #define GTPV0_TV_RAI				3
94*1568fe7eSjsing #define   GTPV0_TV_RAI_LENGTH			7
95*1568fe7eSjsing #define GTPV0_TV_TLLI				4
96*1568fe7eSjsing #define   GTPV0_TV_TLLI_LENGTH			5
97*1568fe7eSjsing #define GTPV0_TV_PTMSI				5
98*1568fe7eSjsing #define   GTPV0_TV_PTMSI_LENGTH			5
99*1568fe7eSjsing #define GTPV0_TV_QOS				6
100*1568fe7eSjsing #define   GTPV0_TV_QOS_LENGTH			4
101*1568fe7eSjsing #define GTPV0_TV_REORDER			8
102*1568fe7eSjsing #define   GTPV0_TV_REORDER_LENGTH		2
103*1568fe7eSjsing #define GTPV0_TV_AUTH_TRIPLET			9
104*1568fe7eSjsing #define   GTPV0_TV_AUTH_TRIPLET_LENGTH		29
105*1568fe7eSjsing #define GTPV0_TV_MAP_CAUSE			11
106*1568fe7eSjsing #define   GTPV0_TV_MAP_CAUSE_LENGTH		2
107*1568fe7eSjsing #define GTPV0_TV_PTMSI_SIGNATURE		12
108*1568fe7eSjsing #define   GTPV0_TV_PTMSI_SIGNATURE_LENGTH	4
109*1568fe7eSjsing #define GTPV0_TV_MS_VALIDATED			13
110*1568fe7eSjsing #define   GTPV0_TV_MS_VALIDATED_LENGTH		2
111*1568fe7eSjsing #define GTPV0_TV_RECOVERY			14
112*1568fe7eSjsing #define   GTPV0_TV_RECOVERY_LENGTH		2
113*1568fe7eSjsing #define GTPV0_TV_SELECTION_MODE			15
114*1568fe7eSjsing #define   GTPV0_TV_SELECTION_MODE_LENGTH	2
115*1568fe7eSjsing #define GTPV0_TV_FLOW_LABEL_DATA_I		16
116*1568fe7eSjsing #define   GTPV0_TV_FLOW_LABEL_DATA_I_LENGTH	3
117*1568fe7eSjsing #define GTPV0_TV_FLOW_LABEL_SIGNALLING		17
118*1568fe7eSjsing #define   GTPV0_TV_FLOW_LABEL_SIGNALLING_LENGTH	3
119*1568fe7eSjsing #define GTPV0_TV_FLOW_LABEL_DATA_II		18
120*1568fe7eSjsing #define   GTPV0_TV_FLOW_LABEL_DATA_II_LENGTH	4
121*1568fe7eSjsing #define GTPV0_TV_PACKET_XFER_CMD		126
122*1568fe7eSjsing #define   GTPV0_TV_PACKET_XFER_CMD_LENGTH	2
123*1568fe7eSjsing #define GTPV0_TV_CHARGING_ID			127
124*1568fe7eSjsing #define   GTPV0_TV_CHARGING_ID_LENGTH		5
125*1568fe7eSjsing 
126*1568fe7eSjsing #define GTPV0_TLV_END_USER_ADDRESS		128
127*1568fe7eSjsing #define GTPV0_TLV_MM_CONTEXT			129
128*1568fe7eSjsing #define GTPV0_TLV_PDP_CONTEXT			130
129*1568fe7eSjsing #define GTPV0_TLV_ACCESS_POINT_NAME		131
130*1568fe7eSjsing #define GTPV0_TLV_PROTOCOL_CONFIG_OPTIONS	132
131*1568fe7eSjsing #define GTPV0_TLV_GSN_ADDRESS			133
132*1568fe7eSjsing #define GTPV0_TLV_MS_ISDN			134
133*1568fe7eSjsing #define GTPV0_TLV_RELEASED_PACKETS		249
134*1568fe7eSjsing #define GTPV0_TLV_CANCELLED_PACKETS		250
135*1568fe7eSjsing #define GTPV0_TLV_CHARGING_GATEWAY_ADDRESS	251
136*1568fe7eSjsing #define GTPV0_TLV_DATA_RECORD_PACKET		252
137*1568fe7eSjsing #define GTPV0_TLV_REQUESTS_RESPONDED		253
138*1568fe7eSjsing #define GTPV0_TLV_RECOMMENDED_NODE		254
139*1568fe7eSjsing #define GTPV0_TLV_PRIVATE_EXTENSION		255
140*1568fe7eSjsing 
141*1568fe7eSjsing /*
142*1568fe7eSjsing  * GTP Version 1.
143*1568fe7eSjsing  */
144*1568fe7eSjsing 
145*1568fe7eSjsing #define GTPV1_HDR_PROTO_TYPE		1 << 4
146*1568fe7eSjsing #define GTPV1_HDR_RSVD			1 << 3
147*1568fe7eSjsing #define GTPV1_HDR_EH_FLAG		1 << 2
148*1568fe7eSjsing #define GTPV1_HDR_SN_FLAG		1 << 1
149*1568fe7eSjsing #define GTPV1_HDR_NPDU_FLAG		1 << 0
150*1568fe7eSjsing 
151*1568fe7eSjsing /*
152*1568fe7eSjsing  * GTPv1 Extended Headers.
153*1568fe7eSjsing  */
154*1568fe7eSjsing #define GTPV1_HDR_EXT			(GTPV1_HDR_EH_FLAG | \
155*1568fe7eSjsing 					 GTPV1_HDR_SN_FLAG | \
156*1568fe7eSjsing 					 GTPV1_HDR_NPDU_FLAG)
157*1568fe7eSjsing 
158*1568fe7eSjsing #define GTPV1_EH_NONE			0x00
159*1568fe7eSjsing #define GTPV1_EH_MBMS_SUPPORT		0x01
160*1568fe7eSjsing #define GTPV1_EH_MSI_CHANGE_RPT		0x02
161*1568fe7eSjsing #define GTPV1_EH_PDCP_PDU_NO		0xc0
162*1568fe7eSjsing #define GTPV1_EH_SUSPEND_REQUEST	0xc1
163*1568fe7eSjsing #define GTPV1_EH_SUSPEND_RESPONSE	0xc2
164*1568fe7eSjsing 
165*1568fe7eSjsing #define GTPV1_IE_TYPE_MASK		1 << 7
166*1568fe7eSjsing #define GTPV1_IE_VALUE_MASK		~GTPV1_IE_TYPE_MASK
167*1568fe7eSjsing 
168*1568fe7eSjsing #define GTPV1_CAUSE_VALUE_MASK		3 << 6
169*1568fe7eSjsing #define GTPV1_CAUSE_REQUEST		0x00
170*1568fe7eSjsing #define GTPV1_CAUSE_ACCEPTANCE		0x80
171*1568fe7eSjsing #define GTPV1_CAUSE_REJECTION		0xc0
172*1568fe7eSjsing 
173*1568fe7eSjsing /*
174*1568fe7eSjsing  * GTPv1 Message Types.
175*1568fe7eSjsing  */
176*1568fe7eSjsing #define GTPV1_ECHO_REQUEST			1
177*1568fe7eSjsing #define GTPV1_ECHO_RESPONSE			2
178*1568fe7eSjsing #define GTPV1_VERSION_NOT_SUPPORTED		3
179*1568fe7eSjsing #define GTPV1_NODE_ALIVE_REQUEST		4
180*1568fe7eSjsing #define GTPV1_NODE_ALIVE_RESPONSE		5
181*1568fe7eSjsing #define GTPV1_REDIRECTION_REQUEST		6
182*1568fe7eSjsing #define GTPV1_REDIRECTION_RESPONSE		7
183*1568fe7eSjsing #define GTPV1_CREATE_PDP_REQUEST		16
184*1568fe7eSjsing #define GTPV1_CREATE_PDP_RESPONSE		17
185*1568fe7eSjsing #define GTPV1_UPDATE_PDP_REQUEST		18
186*1568fe7eSjsing #define GTPV1_UPDATE_PDP_RESPONSE		19
187*1568fe7eSjsing #define GTPV1_DELETE_PDP_REQUEST		20
188*1568fe7eSjsing #define GTPV1_DELETE_PDP_RESPONSE		21
189*1568fe7eSjsing #define GTPV1_INIT_PDP_ACTIVATE_REQUEST		22
190*1568fe7eSjsing #define GTPV1_INIT_PDP_ACTIVATE_RESPONSE	23
191*1568fe7eSjsing #define GTPV1_ERROR_INDICATION			26
192*1568fe7eSjsing #define GTPV1_PDU_NOTIFICATION_REQUEST		27
193*1568fe7eSjsing #define GTPV1_PDU_NOTIFICATION_RESPONSE		28
194*1568fe7eSjsing #define GTPV1_PDU_NOTIFICATION_REJECT_REQUEST	29
195*1568fe7eSjsing #define GTPV1_PDU_NOTIFICATION_REJECT_RESPONSE	30
196*1568fe7eSjsing #define GTPV1_SUPPORT_EXT_HEADER_NOTIFICATION	31
197*1568fe7eSjsing #define GTPV1_SEND_ROUTEING_INFO_REQUEST	32
198*1568fe7eSjsing #define GTPV1_SEND_ROUTEING_INFO_RESPONSE	33
199*1568fe7eSjsing #define GTPV1_FAILURE_REPORT_REQUEST		34
200*1568fe7eSjsing #define GTPV1_FAILURE_REPORT_RESPONSE		35
201*1568fe7eSjsing #define GTPV1_NOTE_MS_GPRS_PRESENT_REQUEST	36
202*1568fe7eSjsing #define GTPV1_NOTE_MS_GPRS_PRESENT_RESPONSE	37
203*1568fe7eSjsing #define GTPV1_IDENTIFICATION_REQUEST		48
204*1568fe7eSjsing #define GTPV1_IDENTIFICATION_RESPONSE		49
205*1568fe7eSjsing #define GTPV1_SGSN_CONTEXT_REQUEST		50
206*1568fe7eSjsing #define GTPV1_SGSN_CONTEXT_RESPONSE		51
207*1568fe7eSjsing #define GTPV1_SGSN_CONTEXT_ACKNOWLEDGE		52
208*1568fe7eSjsing #define GTPV1_FORWARD_RELOCATION_REQUEST	53
209*1568fe7eSjsing #define GTPV1_FORWARD_RELOCATION_RESPONSE	54
210*1568fe7eSjsing #define GTPV1_FORWARD_RELOCATION_COMPLETE	55
211*1568fe7eSjsing #define GTPV1_RELOCATION_CANCEL_REQUEST		56
212*1568fe7eSjsing #define GTPV1_RELOCATION_CANCEL_RESPONSE	57
213*1568fe7eSjsing #define GTPV1_FORWARD_SRNS_CONTEXT		58
214*1568fe7eSjsing #define GTPV1_FORWARD_RELOCATION_COMPLETE_ACK	59
215*1568fe7eSjsing #define GTPV1_FORWARD_SRNS_CONTEXT_ACK		60
216*1568fe7eSjsing #define GTPV1_RAN_INFORMATION_RELAY		70
217*1568fe7eSjsing #define GTPV1_MBMS_NOTIFICATION_REQUEST		96
218*1568fe7eSjsing #define GTPV1_MBMS_NOTIFICATION_RESPONSE	97
219*1568fe7eSjsing #define GTPV1_MBMS_NOTIFICATION_REJECT_REQUEST	98
220*1568fe7eSjsing #define GTPV1_MBMS_NOTIFICATION_REJECT_RESPONSE	99
221*1568fe7eSjsing #define GTPV1_CREATE_MBMS_CONTEXT_REQUEST	100
222*1568fe7eSjsing #define GTPV1_CREATE_MBMS_CONTEXT_RESPONSE	101
223*1568fe7eSjsing #define GTPV1_UPDATE_MBMS_CONTEXT_REQUEST	102
224*1568fe7eSjsing #define GTPV1_UPDATE_MBMS_CONTEXT_RESPONSE	103
225*1568fe7eSjsing #define GTPV1_DELETE_MBMS_CONTEXT_REQUEST	104
226*1568fe7eSjsing #define GTPV1_DELETE_MBMS_CONTEXT_RESPONSE	105
227*1568fe7eSjsing #define GTPV1_MBMS_REGISTRATION_REQUEST		112
228*1568fe7eSjsing #define GTPV1_MBMS_REGISTRATION_RESPONSE	113
229*1568fe7eSjsing #define GTPV1_MBMS_DEREGISTRATION_REQUEST	114
230*1568fe7eSjsing #define GTPV1_MBMS_DEREGISTRATION_RESPONSE	115
231*1568fe7eSjsing #define GTPV1_MBMS_SESSION_START_REQUEST	116
232*1568fe7eSjsing #define GTPV1_MBMS_SESSION_START_RESPONSE	117
233*1568fe7eSjsing #define GTPV1_MBMS_SESSION_STOP_REQUEST		118
234*1568fe7eSjsing #define GTPV1_MBMS_SESSION_STOP_RESPONSE	119
235*1568fe7eSjsing #define GTPV1_MBMS_SESSION_UPDATE_REQUEST	120
236*1568fe7eSjsing #define GTPV1_MBMS_SESSION_UPDATE_RESPONSE	121
237*1568fe7eSjsing #define GTPV1_MS_INFO_CHANGE_REQUEST		128
238*1568fe7eSjsing #define GTPV1_MS_INFO_CHANGE_RESPONSE		129
239*1568fe7eSjsing #define GTPV1_DATA_RECORD_XFER_REQUEST		240
240*1568fe7eSjsing #define GTPV1_DATA_RECORD_XFER_RESPONSE		241
241*1568fe7eSjsing #define GTPV1_G_PDU				255
242*1568fe7eSjsing 
243*1568fe7eSjsing /*
244*1568fe7eSjsing  * GTPv1 Information Elements.
245*1568fe7eSjsing  */
246*1568fe7eSjsing #define GTPV1_TV_CAUSE				1
247*1568fe7eSjsing #define   GTPV1_TV_CAUSE_LENGTH			2
248*1568fe7eSjsing #define GTPV1_TV_IMSI				2
249*1568fe7eSjsing #define   GTPV1_TV_IMSI_LENGTH			9
250*1568fe7eSjsing #define GTPV1_TV_RAI				3
251*1568fe7eSjsing #define   GTPV1_TV_RAI_LENGTH			7
252*1568fe7eSjsing #define GTPV1_TV_TLLI				4
253*1568fe7eSjsing #define   GTPV1_TV_TLLI_LENGTH			5
254*1568fe7eSjsing #define GTPV1_TV_PTMSI				5
255*1568fe7eSjsing #define   GTPV1_TV_PTMSI_LENGTH			6
256*1568fe7eSjsing #define GTPV1_TV_REORDER			8
257*1568fe7eSjsing #define   GTPV1_TV_REORDER_LENGTH		2
258*1568fe7eSjsing #define GTPV1_TV_AUTH				9
259*1568fe7eSjsing #define   GTPV1_TV_AUTH_LENGTH			29
260*1568fe7eSjsing #define GTPV1_TV_MAP_CAUSE			11
261*1568fe7eSjsing #define   GTPV1_TV_MAP_CAUSE_LENGTH		2
262*1568fe7eSjsing #define GTPV1_TV_PTMSI_SIGNATURE		12
263*1568fe7eSjsing #define   GTPV1_TV_PTMSI_SIGNATURE_LENGTH	4
264*1568fe7eSjsing #define GTPV1_TV_MS_VALIDATED			13
265*1568fe7eSjsing #define   GTPV1_TV_MS_VALIDATED_LENGTH		2
266*1568fe7eSjsing #define GTPV1_TV_RECOVERY			14
267*1568fe7eSjsing #define   GTPV1_TV_RECOVERY_LENGTH		2
268*1568fe7eSjsing #define GTPV1_TV_SELECTION_MODE			15
269*1568fe7eSjsing #define   GTPV1_TV_SELECTION_MODE_LENGTH	2
270*1568fe7eSjsing #define GTPV1_TV_TEID_DATA_I			16
271*1568fe7eSjsing #define   GTPV1_TV_TEID_DATA_I_LENGTH		5
272*1568fe7eSjsing #define GTPV1_TV_TEID_CTRL			17
273*1568fe7eSjsing #define   GTPV1_TV_TEID_CTRL_LENGTH		5
274*1568fe7eSjsing #define GTPV1_TV_TEID_DATA_II			18
275*1568fe7eSjsing #define   GTPV1_TV_TEID_DATA_II_LENGTH		6
276*1568fe7eSjsing #define GTPV1_TV_TEARDOWN			19
277*1568fe7eSjsing #define   GTPV1_TV_TEARDOWN_LENGTH		2
278*1568fe7eSjsing #define GTPV1_TV_NSAPI				20
279*1568fe7eSjsing #define   GTPV1_TV_NSAPI_LENGTH			2
280*1568fe7eSjsing #define GTPV1_TV_RANAP				21
281*1568fe7eSjsing #define   GTPV1_TV_RANAP_LENGTH			2
282*1568fe7eSjsing #define GTPV1_TV_RAB_CONTEXT			22
283*1568fe7eSjsing #define   GTPV1_TV_RAB_CONTEXT_LENGTH		10
284*1568fe7eSjsing #define GTPV1_TV_RADIO_PRIORITY_SMS		23
285*1568fe7eSjsing #define   GTPV1_TV_RADIO_PRI_SMS_LENGTH		2
286*1568fe7eSjsing #define GTPV1_TV_RADIO_PRIORITY			24
287*1568fe7eSjsing #define   GTPV1_TV_RADIO_PRI_LENGTH		2
288*1568fe7eSjsing #define GTPV1_TV_PACKET_FLOW_ID			25
289*1568fe7eSjsing #define   GTPV1_TV_PACKET_FLOW_ID_LENGTH	3
290*1568fe7eSjsing #define GTPV1_TV_CHARGING			26
291*1568fe7eSjsing #define   GTPV1_TV_CHARGING_LENGTH		3
292*1568fe7eSjsing #define GTPV1_TV_TRACE_REFERENCE		27
293*1568fe7eSjsing #define   GTPV1_TV_TRACE_REFERENCE_LENGTH	3
294*1568fe7eSjsing #define GTPV1_TV_TRACE_TYPE			28
295*1568fe7eSjsing #define   GTPV1_TV_TRACE_TYPE_LENGTH		3
296*1568fe7eSjsing #define GTPV1_TV_MSNRR				29
297*1568fe7eSjsing #define   GTPV1_TV_MSNRR_LENGTH			2
298*1568fe7eSjsing #define GTPV1_TV_PACKET_XFER_CMD		126
299*1568fe7eSjsing #define   GTPV1_TV_PACKET_XFER_CMD_LENGTH	2
300*1568fe7eSjsing #define GTPV1_TV_CHARGING_ID			127
301*1568fe7eSjsing #define   GTPV1_TV_CHARGING_ID_LENGTH		5
302*1568fe7eSjsing 
303*1568fe7eSjsing #define GTPV1_TLV_END_USER_ADDRESS		128
304*1568fe7eSjsing #define GTPV1_TLV_MM_CONTEXT			129
305*1568fe7eSjsing #define GTPV1_TLV_PDP_CONTEXT			130
306*1568fe7eSjsing #define GTPV1_TLV_ACCESS_POINT_NAME		131
307*1568fe7eSjsing #define GTPV1_TLV_PROTOCOL_CONFIG_OPTIONS	132
308*1568fe7eSjsing #define GTPV1_TLV_GSN_ADDRESS			133
309*1568fe7eSjsing #define GTPV1_TLV_MSISDN			134
310*1568fe7eSjsing #define GTPV1_TLV_QOS_PROFILE			135
311*1568fe7eSjsing #define GTPV1_TLV_AUTHENTICATION		136
312*1568fe7eSjsing #define GTPV1_TLV_TRAFFIC_FLOW			137
313*1568fe7eSjsing #define GTPV1_TLV_TARGET_IDENTIFICATION		138
314*1568fe7eSjsing #define GTPV1_TLV_UTRAN_CONTAINER		139
315*1568fe7eSjsing #define GTPV1_TLV_RAB_SETUP_INFORMATION		140
316*1568fe7eSjsing #define GTPV1_TLV_EXT_HEADER_TYPE_LIST		141
317*1568fe7eSjsing #define GTPV1_TLV_TRIGGER_ID			142
318*1568fe7eSjsing #define GTPV1_TLV_OMC_IDENTITY			143
319*1568fe7eSjsing #define GTPV1_TLV_RAN_CONTAINER			144
320*1568fe7eSjsing #define GTPV1_TLV_PDP_CONTEXT_PRIORITIZATION	145
321*1568fe7eSjsing #define GTPV1_TLV_ADDITIONAL_RAB_SETUP_INFO	146
322*1568fe7eSjsing #define GTPV1_TLV_SGSN_NUMBER			147
323*1568fe7eSjsing #define GTPV1_TLV_COMMON_FLAGS			148
324*1568fe7eSjsing #define GTPV1_TLV_APN_RESTRICTION		149
325*1568fe7eSjsing #define GTPV1_TLV_RADIO_PRIORITY_LCS		150
326*1568fe7eSjsing #define GTPV1_TLV_RAT_TYPE			151
327*1568fe7eSjsing #define GTPV1_TLV_USER_LOCATION_INFO		152
328*1568fe7eSjsing #define GTPV1_TLV_MS_TIME_ZONE			153
329*1568fe7eSjsing #define GTPV1_TLV_IMEI_SV			154
330*1568fe7eSjsing #define GTPV1_TLV_CAMEL_CHARGING_CONTAINER	155
331*1568fe7eSjsing #define GTPV1_TLV_MBMS_UE_CONTEXT		156
332*1568fe7eSjsing #define GTPV1_TLV_TMGI				157
333*1568fe7eSjsing #define GTPV1_TLV_RIM_ROUTING_ADDRESS		158
334*1568fe7eSjsing #define GTPV1_TLV_MBMS_PROTOCOL_CONFIG_OPTIONS	159
335*1568fe7eSjsing #define GTPV1_TLV_MBMS_SERVICE_AREA		160
336*1568fe7eSjsing #define GTPV1_TLV_SOURCE_RNC_PDCP_CONTEXT_INFO	161
337*1568fe7eSjsing #define GTPV1_TLV_ADDITIONAL_TRACE_INFO		162
338*1568fe7eSjsing #define GTPV1_TLV_HOP_COUNTER			163
339*1568fe7eSjsing #define GTPV1_TLV_SELECTED_PLMN_ID		164
340*1568fe7eSjsing #define GTPV1_TLV_MBMS_SESSION_IDENTIFIER	165
341*1568fe7eSjsing #define GTPV1_TLV_MBMS_2G_3G_INDICATOR		166
342*1568fe7eSjsing #define GTPV1_TLV_ENHANCED_NSAPI		167
343*1568fe7eSjsing #define GTPV1_TLV_MBMS_SESSION_DURATION		168
344*1568fe7eSjsing #define GTPV1_TLV_ADDITIONAL_MBMS_TRACE_INFO	169
345*1568fe7eSjsing #define GTPV1_TLV_MBMS_SESSION_REPITITION_NO	170
346*1568fe7eSjsing #define GTPV1_TLV_MBMS_TIME_TO_DATA_TRANSFER	171
347*1568fe7eSjsing #define GTPV1_TLV_PS_HANDOVER_REQUEST_CONTEXT	172
348*1568fe7eSjsing #define GTPV1_TLV_BSS_CONTAINER			173
349*1568fe7eSjsing #define GTPV1_TLV_CELL_IDENTIFICATION		174
350*1568fe7eSjsing #define GTPV1_TLV_PDU_NUMBERS			175
351*1568fe7eSjsing #define GTPV1_TLV_BSSGP_CAUSE			176
352*1568fe7eSjsing #define GTPV1_TLV_REQUIRED_MBMS_BEARER_CAP	177
353*1568fe7eSjsing #define GTPV1_TLV_RIM_ROUTING_ADDRESS_DISC	178
354*1568fe7eSjsing #define GTPV1_TLV_LIST_OF_SETUP_PFCS		179
355*1568fe7eSjsing #define GTPV1_TLV_PS_HANDOVER_XID_PARAMETERS	180
356*1568fe7eSjsing #define GTPV1_TLV_MS_INFO_CHANGE_REPORTING	181
357*1568fe7eSjsing #define GTPV1_TLV_DIRECT_TUNNEL_FLAGS		182
358*1568fe7eSjsing #define GTPV1_TLV_CORRELATION_ID		183
359*1568fe7eSjsing #define GTPV1_TLV_BEARER_CONTROL_MODE		184
360*1568fe7eSjsing #define GTPV1_TLV_MBMS_FLOW_IDENTIFIER		185
361*1568fe7eSjsing 
362*1568fe7eSjsing #define GTPV1_TLV_RELEASED_PACKETS		249
363*1568fe7eSjsing #define GTPV1_TLV_CANCELLED_PACKETS		250
364*1568fe7eSjsing #define GTPV1_TLV_CHARGING_GATEWAY_ADDRESS	251
365*1568fe7eSjsing #define GTPV1_TLV_DATA_RECORD_PACKET		252
366*1568fe7eSjsing #define GTPV1_TLV_REQUESTS_RESPONDED		253
367*1568fe7eSjsing #define GTPV1_TLV_ADDRESS_OF_RECOMMENDED_NODE	254
368*1568fe7eSjsing 
369*1568fe7eSjsing #define GTPV1_TLV_PRIVATE_EXTENSION		255
370*1568fe7eSjsing 
371*1568fe7eSjsing struct gtp_v0_hdr {
372*1568fe7eSjsing 	u_int8_t flags;
373*1568fe7eSjsing 	u_int8_t msgtype;
374*1568fe7eSjsing 	u_int16_t length;
375*1568fe7eSjsing 	u_int16_t seqno;
376*1568fe7eSjsing 	u_int16_t flow;
377*1568fe7eSjsing 	u_int8_t npduno;
378*1568fe7eSjsing 	u_int8_t spare1;
379*1568fe7eSjsing 	u_int8_t spare2;
380*1568fe7eSjsing 	u_int8_t spare3;
381*1568fe7eSjsing 	u_int64_t tid;
382*1568fe7eSjsing } __packed;
383*1568fe7eSjsing 
384*1568fe7eSjsing struct gtp_v0_prime_hdr {
385*1568fe7eSjsing 	u_int8_t flags;
386*1568fe7eSjsing 	u_int8_t msgtype;
387*1568fe7eSjsing 	u_int16_t length;
388*1568fe7eSjsing 	u_int16_t seqno;
389*1568fe7eSjsing } __packed;
390*1568fe7eSjsing 
391*1568fe7eSjsing struct gtp_v1_hdr {
392*1568fe7eSjsing 	u_int8_t flags;
393*1568fe7eSjsing 	u_int8_t msgtype;
394*1568fe7eSjsing 	u_int16_t length;
395*1568fe7eSjsing 	u_int32_t teid;
396*1568fe7eSjsing } __packed;
397*1568fe7eSjsing 
398*1568fe7eSjsing struct gtp_v1_hdr_ext {
399*1568fe7eSjsing 	struct gtp_v1_hdr gh;
400*1568fe7eSjsing 	u_int16_t seqno;
401*1568fe7eSjsing 	u_int8_t npduno;
402*1568fe7eSjsing 	u_int8_t nexthdr;
403*1568fe7eSjsing } __packed;
404*1568fe7eSjsing 
405*1568fe7eSjsing struct gtp_v1_prime_hdr {
406*1568fe7eSjsing 	u_int8_t flags;
407*1568fe7eSjsing 	u_int8_t msgtype;
408*1568fe7eSjsing 	u_int16_t length;
409*1568fe7eSjsing 	u_int16_t seqno;
410*1568fe7eSjsing } __packed;
411*1568fe7eSjsing 
412*1568fe7eSjsing static struct tok gtp_type[] = {
413*1568fe7eSjsing         { 0,    "GTPv0" },
414*1568fe7eSjsing         { 1,    "GTPv0'" },
415*1568fe7eSjsing         { 2,    "GTPv1-C" },
416*1568fe7eSjsing         { 3,    "GTPv1-U" },
417*1568fe7eSjsing         { 4,    "GTPv1'" }
418*1568fe7eSjsing };
419*1568fe7eSjsing 
420*1568fe7eSjsing static const char *gtp_rat_type[] = {
421*1568fe7eSjsing         NULL, "UTRAN", "GERAN", "WLAN", "GAN", "HSPA Evolution"
422*1568fe7eSjsing };
423*1568fe7eSjsing 
424*1568fe7eSjsing static const char *gtp_packet_xfer_cmd[] = {
425*1568fe7eSjsing 	NULL, "Send Data Record", "Send Duplicated Record",
426*1568fe7eSjsing 	"Cancel Data Record", "Release Data Record"
427*1568fe7eSjsing };
428*1568fe7eSjsing 
429*1568fe7eSjsing static const char *mbms_2g3g_indicator[] = {
430*1568fe7eSjsing 	"2G Only", "3G Only", "2G and 3G"
431*1568fe7eSjsing };
432*1568fe7eSjsing 
433*1568fe7eSjsing static const char *ms_info_change_rpt[] = {
434*1568fe7eSjsing 	"Stop Reporting", "Start Reporting CGI/SAI", "Start Reporting RAI"
435*1568fe7eSjsing };
436*1568fe7eSjsing 
437*1568fe7eSjsing #endif
438