Wireshark 2.9.0-477-g68ec514b The Wireshark network protocol analyzer

- Main Page
- Related Pages
- Modules
- Namespaces
- Classes
- Files

- File List
- File Members

packet-gtp.h
1 /* packet-gtp.h
2 *
3 * Wireshark - Network traffic analyzer
4 * By Gerald Combs <gerald@wireshark.org>
5 * Copyright 1998 Gerald Combs
6 *
7 * SPDX-License-Identifier: GPL-2.0-or-later
8 */
9
10 #ifndef __PACKET_GTP_H
11 #define __PACKET_GTP_H
12 /*structure used to track responses to requests using sequence number*/
13 typedef struct gtp_msg_hash_entry {
14 gboolean is_request; /*TRUE/FALSE*/
15 guint32 req_frame; /*frame with request */
16 nstime_t req_time; /*req time */
17 guint32 rep_frame; /*frame with reply */
18 gint seq_nr; /*sequence number*/
19 guint msgtype; /*messagetype*/
20 } gtp_msg_hash_t;
21
22
23 typedef struct _gtp_hdr {
24 guint8 flags; /* GTP header flags */
25 guint8 message; /* Message type */
26 guint16 length; /* Length of header */
27 gint64 teid; /* Tunnel End-point ID */
28 } gtp_hdr_t;
29
30 /* definitions of GTP messages */
31 #define GTP_MSG_UNKNOWN 0x00
32 #define GTP_MSG_ECHO_REQ 0x01
33 #define GTP_MSG_ECHO_RESP 0x02
34 #define GTP_MSG_VER_NOT_SUPP 0x03
35 #define GTP_MSG_NODE_ALIVE_REQ 0x04
36 #define GTP_MSG_NODE_ALIVE_RESP 0x05
37 #define GTP_MSG_REDIR_REQ 0x06
38 #define GTP_MSG_REDIR_RESP 0x07
39 /*
40 * 8-15 For future use. Shall not be sent. If received,
41 * shall be treated as an Unknown message.
42 */
43 #define GTP_MSG_CREATE_PDP_REQ 0x10
44 #define GTP_MSG_CREATE_PDP_RESP 0x11
45 #define GTP_MSG_UPDATE_PDP_REQ 0x12
46 #define GTP_MSG_UPDATE_PDP_RESP 0x13
47 #define GTP_MSG_DELETE_PDP_REQ 0x14
48 #define GTP_MSG_DELETE_PDP_RESP 0x15
49 #define GTP_MSG_INIT_PDP_CONTEXT_ACT_REQ 0x16 /* 2G */
50 #define GTP_MSG_INIT_PDP_CONTEXT_ACT_RESP 0x17 /* 2G */
51 /*
52 * 24-25 For future use. Shall not be sent. If received,
53 * shall be treated as an Unknown message.
54 */
55 #define GTP_MSG_DELETE_AA_PDP_REQ 0x18 /* 2G */
56 #define GTP_MSG_DELETE_AA_PDP_RESP 0x19 /* 2G */
57 #define GTP_MSG_ERR_IND 0x1A
58 #define GTP_MSG_PDU_NOTIFY_REQ 0x1B
59 #define GTP_MSG_PDU_NOTIFY_RESP 0x1C
60 #define GTP_MSG_PDU_NOTIFY_REJ_REQ 0x1D
61 #define GTP_MSG_PDU_NOTIFY_REJ_RESP 0x1E
62 #define GTP_MSG_SUPP_EXT_HDR 0x1F
63 #define GTP_MSG_SEND_ROUT_INFO_REQ 0x20
64 #define GTP_MSG_SEND_ROUT_INFO_RESP 0x21
65 #define GTP_MSG_FAIL_REP_REQ 0x22
66 #define GTP_MSG_FAIL_REP_RESP 0x23
67 #define GTP_MSG_MS_PRESENT_REQ 0x24
68 #define GTP_MSG_MS_PRESENT_RESP 0x25
69 /*
70 * 38-47 For future use. Shall not be sent. If received,
71 * shall be treated as an Unknown message.
72 */
73 #define GTP_MSG_IDENT_REQ 0x30
74 #define GTP_MSG_IDENT_RESP 0x31
75 #define GTP_MSG_SGSN_CNTXT_REQ 0x32
76 #define GTP_MSG_SGSN_CNTXT_RESP 0x33
77 #define GTP_MSG_SGSN_CNTXT_ACK 0x34
78 #define GTP_MSG_FORW_RELOC_REQ 0x35
79 #define GTP_MSG_FORW_RELOC_RESP 0x36
80 #define GTP_MSG_FORW_RELOC_COMP 0x37
81 #define GTP_MSG_RELOC_CANCEL_REQ 0x38
82 #define GTP_MSG_RELOC_CANCEL_RESP 0x39
83 #define GTP_MSG_FORW_SRNS_CNTXT 0x3A
84 #define GTP_MSG_FORW_RELOC_ACK 0x3B
85 #define GTP_MSG_FORW_SRNS_CNTXT_ACK 0x3C
86 /*
87 * 61-69 For future use. Shall not be sent. If received,
88 * shall be treated as an Unknown message.
89 */
90 #define GTP_MSG_RAN_INFO_RELAY 70
91 /*
92 * 71-95 For future use. Shall not be sent. If received,
93 * shall be treated as an Unknown message.
94 */
95 #define GTP_MBMS_NOTIFY_REQ 96
96 #define GTP_MBMS_NOTIFY_RES 97
97 #define GTP_MBMS_NOTIFY_REJ_REQ 98
98 #define GTP_MBMS_NOTIFY_REJ_RES 99
99 #define GTP_CREATE_MBMS_CNTXT_REQ 100
100 #define GTP_CREATE_MBMS_CNTXT_RES 101
101 #define GTP_UPD_MBMS_CNTXT_REQ 102
102 #define GTP_UPD_MBMS_CNTXT_RES 103
103 #define GTP_DEL_MBMS_CNTXT_REQ 104
104 #define GTP_DEL_MBMS_CNTXT_RES 105
105 /*
106 * 106 - 111 For future use. Shall not be sent. If received,
107 * shall be treated as an Unknown message.
108 */
109 #define GTP_MBMS_REG_REQ 112
110 #define GTP_MBMS_REG_RES 113
111 #define GTP_MBMS_DE_REG_REQ 114
112 #define GTP_MBMS_DE_REG_RES 115
113 #define GTP_MBMS_SES_START_REQ 116
114 #define GTP_MBMS_SES_START_RES 117
115 #define GTP_MBMS_SES_STOP_REQ 118
116 #define GTP_MBMS_SES_STOP_RES 119
117 #define GTP_MBMS_SES_UPD_REQ 120
118 #define GTP_MBMS_SES_UPD_RES 121
119 /* 122-127 For future use. Shall not be sent.
120 * If received, shall be treated as an Unknown message.
121 */
122 #define GTP_MS_INFO_CNG_NOT_REQ 128
123 #define GTP_MS_INFO_CNG_NOT_RES 129
124 /* 130-239 For future use. Shall not be sent.
125 * If received, shall be treated as an Unknown message.
126 */
127 #define GTP_MSG_DATA_TRANSF_REQ 0xF0
128 #define GTP_MSG_DATA_TRANSF_RESP 0xF1
129 /* 242-253 For future use. Shall not be sent.
130 * If received, shall be treated as an Unknown message.
131 */
132 #define GTP_MSG_END_MARKER 0xFE /* 254 */
133 #define GTP_MSG_TPDU 0xFF
134
135 extern value_string_ext cause_type_ext;
136
137 /* Data structures to keep track of sessions */
138 extern guint32 gtp_session_count;
139 extern gboolean g_gtp_session;
140
141 typedef struct session_args {
142 wmem_list_t *teid_list;
143 wmem_list_t *ip_list;
144 guint32 last_teid;
145 address last_ip;
146 guint8 last_cause;
147 } session_args_t;
148
149 /* Relation between frame -> session */
150 extern GHashTable* session_table;
151
152 /* Relation between <teid,ip> -> frame */
153 extern wmem_tree_t* frame_tree;
154
155 guint32 get_frame(address ip, guint32 teid, guint32 *frame);
156
157 void remove_frame_info(guint32 *f);
158
159 void add_gtp_session(guint32 frame, guint32 session);
160
161 gboolean teid_exists(guint32 teid, wmem_list_t *teid_list);
162
163 gboolean ip_exists(address ip, wmem_list_t *ip_list);
164
165 void fill_map(wmem_list_t *teid_list, wmem_list_t *ip_list, guint32 frame);
166
167 gboolean is_cause_accepted(guint8 cause, guint32 version);
168
169 int decode_qos_umts(tvbuff_t * tvb, int offset, packet_info * pinfo, proto_tree * tree, const gchar * qos_str, guint8 type);
170
171 void dissect_gtp_uli(tvbuff_t * tvb, int offset, packet_info * pinfo, proto_tree * tree, session_args_t * args _U_);
172
173 #endif /* __PACKET_GTP_H*/
_wmem_tree_t
Definition: wmem_tree-int.h:47
_gtp_hdr
Definition: packet-gtp.h:23
gtp_msg_hash_entry
Definition: packet-gtp.h:13
_packet_info
Definition: packet_info.h:44
session_args
Definition: packet-gtp.h:141
tvbuff
Definition: tvbuff-int.h:35
nstime_t
Definition: nstime.h:27
_value_string_ext
Definition: value_string.h:164
_proto_node
Definition: proto.h:759
_wmem_list_t
Definition: wmem_list.c:23
_address
Definition: address.h:47