Coverage Report

Created: 2026-06-30 07:22

next uncovered line (L), next uncovered region (R), next uncovered branch (B)
/src/wireshark/epan/dissectors/packet-diameter_3gpp.c
Line
Count
Source
1
/* packet-diameter_3gpp.c
2
 * Routines for dissecting 3GPP OctetSting AVP:s
3
 * Copyright 2008, Anders Broman <anders.broman[at]ericsson.com>
4
 *
5
 * Wireshark - Network traffic analyzer
6
 * By Gerald Combs <gerald@wireshark.org>
7
 * Copyright 1998 Gerald Combs
8
 *
9
 * SPDX-License-Identifier: GPL-2.0-or-later
10
 */
11
12
 /* This dissector registers a dissector table for 3GPP Vendor specific
13
  * AVP:s which will be called from the Diameter dissector to dissect
14
  * the content of AVP:s of the OctetString type(or similar).
15
  */
16
17
#include "config.h"
18
19
#include <epan/packet.h>
20
#include <epan/expert.h>
21
#include <epan/asn1.h>
22
#include <epan/tfs.h>
23
24
#include "packet-diameter.h"
25
#include "packet-diameter_3gpp.h"
26
#include "packet-gsm_a_common.h"
27
#include "packet-gtp.h"
28
#include "packet-gtpv2.h"
29
#include "packet-e164.h"
30
#include "packet-e212.h"
31
#include "packet-s1ap.h"
32
#include "packet-sip.h"
33
#include "packet-lcsap.h"
34
35
void proto_register_diameter_3gpp(void);
36
void proto_reg_handoff_diameter_3gpp(void);
37
38
static expert_field ei_diameter_3gpp_plmn_id_wrong_len;
39
40
/* Initialize the protocol and registered fields */
41
static int proto_diameter_3gpp;
42
43
static int hf_diameter_3gpp_timezone;
44
static int hf_diameter_3gpp_timezone_adjustment;
45
static int hf_diameter_3gpp_rat_type;
46
static int hf_diameter_3gpp_path;
47
static int hf_diameter_3gpp_contact;
48
/* static int hf_diameter_3gpp_user_data; */
49
static int hf_diameter_3gpp_ipaddr;
50
static int hf_diameter_3gpp_mbms_required_qos_prio;
51
static int hf_diameter_3gpp_tmgi;
52
static int hf_diameter_3gpp_req_nodes;
53
static int hf_diameter_3gpp_req_nodes_bit0;
54
static int hf_diameter_3gpp_req_nodes_bit1;
55
static int hf_diameter_3gpp_req_nodes_bit2;
56
static int hf_diameter_3gpp_req_nodes_bit3;
57
static int hf_diameter_mbms_service_id;
58
static int hf_diameter_3gpp_spare_bits;
59
static int hf_diameter_3gpp_uar_flags_flags;
60
static int hf_diameter_3gpp_uar_flags_flags_bit0;
61
static int hf_diameter_3gpp_feature_list_flags;
62
static int hf_diameter_3gpp_cx_feature_list_flags;
63
static int hf_diameter_3gpp_cx_feature_list_1_flags_bit0;
64
static int hf_diameter_3gpp_cx_feature_list_1_flags_bit1;
65
static int hf_diameter_3gpp_cx_feature_list_1_flags_bit2;
66
static int hf_diameter_3gpp_cx_feature_list_1_flags_bit3;
67
static int hf_diameter_3gpp_cx_feature_list_1_flags_spare_bits;
68
static int hf_diameter_3gpp_feature_list1_sh_flags_bit0;
69
static int hf_diameter_3gpp_feature_list1_sh_flags_bit1;
70
static int hf_diameter_3gpp_feature_list1_sh_flags_bit2;
71
static int hf_diameter_3gpp_feature_list1_sh_flags_bit3;
72
static int hf_diameter_3gpp_feature_list1_s6a_flags_bit0;
73
static int hf_diameter_3gpp_feature_list1_s6a_flags_bit1;
74
static int hf_diameter_3gpp_feature_list1_s6a_flags_bit2;
75
static int hf_diameter_3gpp_feature_list1_s6a_flags_bit3;
76
static int hf_diameter_3gpp_feature_list1_s6a_flags_bit4;
77
static int hf_diameter_3gpp_feature_list1_s6a_flags_bit5;
78
static int hf_diameter_3gpp_feature_list1_s6a_flags_bit6;
79
static int hf_diameter_3gpp_feature_list1_s6a_flags_bit7;
80
static int hf_diameter_3gpp_feature_list1_s6a_flags_bit8;
81
static int hf_diameter_3gpp_feature_list1_s6a_flags_bit9;
82
static int hf_diameter_3gpp_feature_list1_s6a_flags_bit10;
83
static int hf_diameter_3gpp_feature_list1_s6a_flags_bit11;
84
static int hf_diameter_3gpp_feature_list1_s6a_flags_bit12;
85
static int hf_diameter_3gpp_feature_list1_s6a_flags_bit13;
86
static int hf_diameter_3gpp_feature_list1_s6a_flags_bit14;
87
static int hf_diameter_3gpp_feature_list1_s6a_flags_bit15;
88
static int hf_diameter_3gpp_feature_list1_s6a_flags_bit16;
89
static int hf_diameter_3gpp_feature_list1_s6a_flags_bit17;
90
static int hf_diameter_3gpp_feature_list1_s6a_flags_bit18;
91
static int hf_diameter_3gpp_feature_list1_s6a_flags_bit19;
92
static int hf_diameter_3gpp_feature_list1_s6a_flags_bit20;
93
static int hf_diameter_3gpp_feature_list1_s6a_flags_bit21;
94
static int hf_diameter_3gpp_feature_list1_s6a_flags_bit22;
95
static int hf_diameter_3gpp_feature_list1_s6a_flags_bit23;
96
static int hf_diameter_3gpp_feature_list1_s6a_flags_bit24;
97
static int hf_diameter_3gpp_feature_list1_s6a_flags_bit25;
98
static int hf_diameter_3gpp_feature_list1_s6a_flags_bit26;
99
static int hf_diameter_3gpp_feature_list1_s6a_flags_bit27;
100
static int hf_diameter_3gpp_feature_list1_s6a_flags_bit28;
101
static int hf_diameter_3gpp_feature_list1_s6a_flags_bit29;
102
static int hf_diameter_3gpp_feature_list1_s6a_flags_bit30;
103
static int hf_diameter_3gpp_feature_list1_s6a_flags_bit31;
104
static int hf_diameter_3gpp_feature_list2_s6a_flags_bit0;
105
static int hf_diameter_3gpp_feature_list2_s6a_flags_bit1;
106
static int hf_diameter_3gpp_feature_list2_s6a_flags_bit2;
107
static int hf_diameter_3gpp_feature_list2_s6a_flags_bit3;
108
static int hf_diameter_3gpp_feature_list2_s6a_flags_bit4;
109
static int hf_diameter_3gpp_feature_list2_s6a_flags_bit5;
110
static int hf_diameter_3gpp_feature_list2_s6a_flags_bit6;
111
static int hf_diameter_3gpp_feature_list2_s6a_flags_bit7;
112
static int hf_diameter_3gpp_feature_list2_s6a_flags_bit8;
113
static int hf_diameter_3gpp_feature_list2_s6a_flags_bit9;
114
static int hf_diameter_3gpp_feature_list2_s6a_flags_bit10;
115
static int hf_diameter_3gpp_feature_list2_s6a_flags_bit11;
116
static int hf_diameter_3gpp_feature_list2_s6a_flags_bit12;
117
static int hf_diameter_3gpp_feature_list2_s6a_flags_bit13;
118
static int hf_diameter_3gpp_feature_list2_s6a_flags_bit14;
119
static int hf_diameter_3gpp_feature_list2_s6a_flags_bit15;
120
static int hf_diameter_3gpp_feature_list2_s6a_flags_bit16;
121
static int hf_diameter_3gpp_feature_list2_s6a_flags_bit17;
122
static int hf_diameter_3gpp_feature_list2_s6a_flags_bit18;
123
static int hf_diameter_3gpp_feature_list2_s6a_flags_bit19;
124
static int hf_diameter_3gpp_feature_list2_s6a_flags_bit20;
125
static int hf_diameter_3gpp_feature_list2_s6a_flags_bit21;
126
static int hf_diameter_3gpp_feature_list2_s6a_flags_bit22;
127
static int hf_diameter_3gpp_feature_list2_s6a_flags_bit23;
128
static int hf_diameter_3gpp_feature_list2_s6a_flags_bit24;
129
static int hf_diameter_3gpp_feature_list2_s6a_flags_bit25;
130
static int hf_diameter_3gpp_feature_list2_s6a_flags_bit26;
131
static int hf_diameter_3gpp_feature_list2_s6a_flags_bit27;
132
static int hf_diameter_3gpp_feature_list2_s6a_flags_bit28;
133
static int hf_diameter_3gpp_feature_list2_s6a_flags_bit29;
134
static int hf_diameter_3gpp_feature_list2_s6a_flags_bit30;
135
static int hf_diameter_3gpp_feature_list_gx_flags;
136
static int hf_diameter_3gpp_feature_list1_gx_flags_bit0;
137
static int hf_diameter_3gpp_feature_list1_gx_flags_bit1;
138
static int hf_diameter_3gpp_feature_list1_gx_flags_bit2;
139
static int hf_diameter_3gpp_feature_list1_gx_flags_bit3;
140
static int hf_diameter_3gpp_feature_list1_gx_flags_bit4;
141
static int hf_diameter_3gpp_feature_list1_gx_flags_bit5;
142
static int hf_diameter_3gpp_feature_list1_gx_flags_bit6;
143
static int hf_diameter_3gpp_feature_list1_gx_flags_bit7;
144
static int hf_diameter_3gpp_feature_list1_gx_flags_bit8;
145
static int hf_diameter_3gpp_feature_list1_gx_flags_bit9;
146
static int hf_diameter_3gpp_feature_list1_gx_flags_bit10;
147
static int hf_diameter_3gpp_feature_list1_gx_flags_bit11;
148
static int hf_diameter_3gpp_feature_list1_gx_flags_bit12;
149
static int hf_diameter_3gpp_feature_list1_gx_flags_bit13;
150
static int hf_diameter_3gpp_feature_list1_gx_flags_bit14;
151
static int hf_diameter_3gpp_feature_list1_gx_flags_bit15;
152
static int hf_diameter_3gpp_feature_list1_gx_flags_bit16;
153
static int hf_diameter_3gpp_feature_list1_gx_flags_bit17;
154
static int hf_diameter_3gpp_feature_list1_gx_flags_bit18;
155
static int hf_diameter_3gpp_feature_list1_gx_flags_bit19;
156
static int hf_diameter_3gpp_feature_list1_gx_flags_bit20;
157
static int hf_diameter_3gpp_feature_list1_gx_flags_bit21;
158
static int hf_diameter_3gpp_feature_list1_gx_flags_bit22;
159
static int hf_diameter_3gpp_feature_list1_gx_flags_bit23;
160
static int hf_diameter_3gpp_feature_list1_gx_flags_bit24;
161
static int hf_diameter_3gpp_feature_list1_gx_flags_bit25;
162
static int hf_diameter_3gpp_feature_list1_gx_flags_bit26;
163
static int hf_diameter_3gpp_feature_list1_gx_flags_bit27;
164
static int hf_diameter_3gpp_feature_list1_gx_flags_bit28;
165
static int hf_diameter_3gpp_feature_list1_gx_flags_bit29;
166
static int hf_diameter_3gpp_feature_list1_gx_flags_bit30;
167
static int hf_diameter_3gpp_feature_list1_gx_flags_bit31;
168
static int hf_diameter_3gpp_feature_list2_gx_flags_bit0;
169
static int hf_diameter_3gpp_feature_list2_gx_flags_bit1;
170
static int hf_diameter_3gpp_feature_list2_gx_flags_bit2;
171
static int hf_diameter_3gpp_feature_list2_gx_flags_bit3;
172
static int hf_diameter_3gpp_feature_list2_gx_flags_bit4;
173
static int hf_diameter_3gpp_feature_list2_gx_flags_bit5;
174
static int hf_diameter_3gpp_feature_list2_gx_flags_bit6;
175
static int hf_diameter_3gpp_feature_list2_gx_flags_bit7;
176
static int hf_diameter_3gpp_feature_list_sd_flags;
177
static int hf_diameter_3gpp_feature_list_sd_flags_bit0;
178
static int hf_diameter_3gpp_feature_list_sd_flags_bit1;
179
static int hf_diameter_3gpp_feature_list_sd_flags_bit2;
180
static int hf_diameter_3gpp_feature_list_sd_flags_bit3;
181
static int hf_diameter_3gpp_feature_list_sd_flags_bit4;
182
static int hf_diameter_3gpp_feature_list_sd_flags_bit5;
183
static int hf_diameter_3gpp_feature_list_sd_flags_bit6;
184
static int hf_diameter_3gpp_feature_list_sd_flags_bit7;
185
static int hf_diameter_3gpp_feature_list_sd_flags_bit8;
186
static int hf_diameter_3gpp_feature_list_sd_flags_bit9;
187
static int hf_diameter_3gpp_feature_list_sd_flags_bit10;
188
static int hf_diameter_3gpp_feature_list_sd_flags_spare_bits;
189
static int hf_diameter_3gpp_cms_no_gyn_session_serv_not_allowed;
190
static int hf_diameter_3gpp_cms_no_gyn_session_serv_allowed;
191
static int hf_diameter_3gpp_cms_rating_failed;
192
static int hf_diameter_3gpp_cms_user_unknown;
193
static int hf_diameter_3gpp_cms_auth_rej;
194
static int hf_diameter_3gpp_cms_credit_ctrl_not_applicable;
195
static int hf_diameter_3gpp_cms_end_user_serv_status;
196
static int hf_diameter_3gpp_qos_subscribed;
197
static int hf_diameter_3gpp_qos_reliability_cls;
198
static int hf_diameter_3gpp_qos_prec_class;
199
static int hf_diameter_3gpp_qos_delay_cls;
200
static int hf_diameter_3gpp_qos_peak_thr;
201
static int hf_diameter_3gpp_qos_mean_thr;
202
static int hf_diameter_3gpp_qos_al_ret_priority;
203
static int hf_diameter_3gpp_qos_del_of_err_sdu;
204
static int hf_diameter_3gpp_qos_del_order;
205
static int hf_diameter_3gpp_qos_traffic_cls;
206
static int hf_diameter_3gpp_qos_maximum_sdu_size;
207
static int hf_diameter_3gpp_qos_max_bitrate_upl;
208
static int hf_diameter_3gpp_qos_max_bitrate_downl;
209
static int hf_diameter_3gpp_qos_sdu_err_rat;
210
static int hf_diameter_3gpp_qos_ber;
211
static int hf_diameter_3gpp_qos_traff_hdl_pri;
212
static int hf_diameter_3gpp_qos_trans_delay;
213
static int hf_diameter_3gpp_qos_guar_bitrate_upl;
214
static int hf_diameter_3gpp_qos_guar_bitrate_downl;
215
static int hf_diameter_3gpp_qos_source_stat_desc;
216
static int hf_diameter_3gpp_qos_signalling_ind;
217
static int hf_diameter_3gpp_qos_max_bitrate_downl_ext;
218
static int hf_diameter_3gpp_qos_guar_bitrate_downl_ext;
219
static int hf_diameter_3gpp_qos_max_bitrate_upl_ext;
220
static int hf_diameter_3gpp_qos_guar_bitrate_upl_ext;
221
static int hf_diameter_3gpp_qos_pre_emption_vulnerability;
222
static int hf_diameter_3gpp_qos_priority_level;
223
static int hf_diameter_3gpp_qos_pre_emption_capability;
224
static int hf_diameter_3gpp_ulr_flags;
225
static int hf_diameter_3gpp_ulr_flags_bit0;
226
static int hf_diameter_3gpp_ulr_flags_bit1;
227
static int hf_diameter_3gpp_ulr_flags_bit2;
228
static int hf_diameter_3gpp_ulr_flags_bit3;
229
static int hf_diameter_3gpp_ulr_flags_bit4;
230
static int hf_diameter_3gpp_ulr_flags_bit5;
231
static int hf_diameter_3gpp_ulr_flags_bit6;
232
static int hf_diameter_3gpp_ulr_flags_bit7;
233
static int hf_diameter_3gpp_ulr_flags_bit8;
234
static int hf_diameter_3gpp_ula_flags;
235
static int hf_diameter_3gpp_ula_flags_bit0;
236
static int hf_diameter_3gpp_ula_flags_bit1;
237
static int hf_diameter_3gpp_dsr_flags;
238
static int hf_diameter_3gpp_dsr_flags_bit0;
239
static int hf_diameter_3gpp_dsr_flags_bit1;
240
static int hf_diameter_3gpp_dsr_flags_bit2;
241
static int hf_diameter_3gpp_dsr_flags_bit3;
242
static int hf_diameter_3gpp_dsr_flags_bit4;
243
static int hf_diameter_3gpp_dsr_flags_bit5;
244
static int hf_diameter_3gpp_dsr_flags_bit6;
245
static int hf_diameter_3gpp_dsr_flags_bit7;
246
static int hf_diameter_3gpp_dsr_flags_bit8;
247
static int hf_diameter_3gpp_dsr_flags_bit9;
248
static int hf_diameter_3gpp_dsr_flags_bit10;
249
static int hf_diameter_3gpp_dsr_flags_bit11;
250
static int hf_diameter_3gpp_dsr_flags_bit12;
251
static int hf_diameter_3gpp_dsr_flags_bit13;
252
static int hf_diameter_3gpp_dsr_flags_bit14;
253
static int hf_diameter_3gpp_dsr_flags_bit15;
254
static int hf_diameter_3gpp_dsr_flags_bit16;
255
static int hf_diameter_3gpp_dsr_flags_bit17;
256
static int hf_diameter_3gpp_dsr_flags_bit18;
257
static int hf_diameter_3gpp_dsr_flags_bit19;
258
static int hf_diameter_3gpp_dsr_flags_bit20;
259
static int hf_diameter_3gpp_dsr_flags_bit21;
260
static int hf_diameter_3gpp_dsr_flags_bit22;
261
static int hf_diameter_3gpp_dsr_flags_bit23;
262
static int hf_diameter_3gpp_dsr_flags_bit24;
263
static int hf_diameter_3gpp_dsr_flags_bit25;
264
static int hf_diameter_3gpp_dsr_flags_bit26;
265
static int hf_diameter_3gpp_dsr_flags_bit27;
266
static int hf_diameter_3gpp_dsr_flags_bit28;
267
static int hf_diameter_3gpp_dsr_flags_bit29;
268
static int hf_diameter_3gpp_dsr_flags_bit30;
269
static int hf_diameter_3gpp_dsr_flags_bit31;
270
static int hf_diameter_3gpp_dsa_flags;
271
static int hf_diameter_3gpp_dsa_flags_bit0;
272
static int hf_diameter_3gpp_ida_flags;
273
static int hf_diameter_3gpp_ida_flags_bit0;
274
static int hf_diameter_3gpp_pua_flags;
275
static int hf_diameter_3gpp_pua_flags_bit0;
276
static int hf_diameter_3gpp_pua_flags_bit1;
277
static int hf_diameter_3gpp_nor_flags;
278
static int hf_diameter_3gpp_nor_flags_bit0;
279
static int hf_diameter_3gpp_nor_flags_bit1;
280
static int hf_diameter_3gpp_nor_flags_bit2;
281
static int hf_diameter_3gpp_nor_flags_bit3;
282
static int hf_diameter_3gpp_nor_flags_bit4;
283
static int hf_diameter_3gpp_nor_flags_bit5;
284
static int hf_diameter_3gpp_nor_flags_bit6;
285
static int hf_diameter_3gpp_nor_flags_bit7;
286
static int hf_diameter_3gpp_nor_flags_bit8;
287
static int hf_diameter_3gpp_nor_flags_bit9;
288
static int hf_diameter_3gpp_idr_flags;
289
static int hf_diameter_3gpp_idr_flags_bit0;
290
static int hf_diameter_3gpp_idr_flags_bit1;
291
static int hf_diameter_3gpp_idr_flags_bit2;
292
static int hf_diameter_3gpp_idr_flags_bit3;
293
static int hf_diameter_3gpp_idr_flags_bit4;
294
static int hf_diameter_3gpp_idr_flags_bit5;
295
static int hf_diameter_3gpp_idr_flags_bit6;
296
static int hf_diameter_3gpp_idr_flags_bit7;
297
static int hf_diameter_3gpp_idr_flags_bit8;
298
static int hf_diameter_3gpp_ppr_flags;
299
static int hf_diameter_3gpp_ppr_flags_bit0;
300
static int hf_diameter_3gpp_ppr_flags_bit1;
301
static int hf_diameter_3gpp_ppr_flags_bit2;
302
static int hf_diameter_3gpp_ppr_flags_bit3;
303
static int hf_diameter_3gpp_aaa_fail_flags;
304
static int hf_diameter_3gpp_aaa_fail_flags_bit0;
305
static int hf_diameter_3gpp_der_flags;
306
static int hf_diameter_3gpp_der_flags_bit0;
307
static int hf_diameter_3gpp_der_flags_bit1;
308
static int hf_diameter_3gpp_dea_flags;
309
static int hf_diameter_3gpp_dea_flags_bit0;
310
static int hf_diameter_3gpp_dea_flags_bit1;
311
static int hf_diameter_3gpp_rar_flags;
312
static int hf_diameter_3gpp_rar_flags_bit0;
313
static int hf_diameter_3gpp_rar_flags_bit1;
314
static int hf_diameter_3gpp_der_s6b_flags;
315
static int hf_diameter_3gpp_der_s6b_flags_bit0;
316
static int hf_diameter_3gpp_ipv6addr;
317
static int hf_diameter_3gpp_mbms_abs_time_ofmbms_data_tfer;
318
static int hf_diameter_3gpp_udp_port;
319
static int hf_diameter_3gpp_codec_data_dir;
320
static int hf_diameter_3gpp_codec_sdp_type;
321
static int hf_diameter_3gpp_af_requested_data_flags;
322
static int hf_diameter_3gpp_af_requested_data_flags_bit0;
323
static int hf_diameter_3gpp_mbms_bearer_event;
324
static int hf_diameter_3gpp_mbms_bearer_event_bit0;
325
static int hf_diameter_3gpp_mbms_bearer_event_bit1;
326
static int hf_diameter_3gpp_mbms_bearer_event_bit2;
327
static int hf_diameter_3gpp_mbms_bearer_result;
328
static int hf_diameter_3gpp_mbms_bearer_result_bit0;
329
static int hf_diameter_3gpp_mbms_bearer_result_bit1;
330
static int hf_diameter_3gpp_mbms_bearer_result_bit2;
331
static int hf_diameter_3gpp_mbms_bearer_result_bit3;
332
static int hf_diameter_3gpp_mbms_bearer_result_bit4;
333
static int hf_diameter_3gpp_mbms_bearer_result_bit5;
334
static int hf_diameter_3gpp_mbms_bearer_result_bit6;
335
static int hf_diameter_3gpp_mbms_bearer_result_bit7;
336
static int hf_diameter_3gpp_mbms_bearer_result_bit8;
337
static int hf_diameter_3gpp_mbms_bearer_result_bit9;
338
static int hf_diameter_3gpp_mbms_bearer_result_bit10;
339
static int hf_diameter_3gpp_mbms_bearer_result_bit11;
340
static int hf_diameter_3gpp_tmgi_allocation_result;
341
static int hf_diameter_3gpp_tmgi_allocation_result_bit0;
342
static int hf_diameter_3gpp_tmgi_allocation_result_bit1;
343
static int hf_diameter_3gpp_tmgi_allocation_result_bit2;
344
static int hf_diameter_3gpp_tmgi_allocation_result_bit3;
345
static int hf_diameter_3gpp_tmgi_allocation_result_bit4;
346
static int hf_diameter_3gpp_tmgi_deallocation_result;
347
static int hf_diameter_3gpp_tmgi_deallocation_result_bit0;
348
static int hf_diameter_3gpp_tmgi_deallocation_result_bit1;
349
static int hf_diameter_3gpp_tmgi_deallocation_result_bit2;
350
static int hf_diameter_3gpp_sar_flags;
351
static int hf_diameter_3gpp_sar_flags_flags_bit0;
352
static int hf_diameter_3gpp_emergency_services_flags;
353
static int hf_diameter_3gpp_emergency_services_flags_bit0;
354
static int hf_diameter_3gpp_pur_flags;
355
static int hf_diameter_3gpp_pur_flags_spare_bits;
356
static int hf_diameter_3gpp_pur_flags_bit1;
357
static int hf_diameter_3gpp_pur_flags_bit0;
358
static int hf_diameter_3gpp_clr_flags;
359
static int hf_diameter_3gpp_clr_flags_spare_bits;
360
static int hf_diameter_3gpp_clr_flags_bit1;
361
static int hf_diameter_3gpp_clr_flags_bit0;
362
static int hf_diameter_3gpp_uvr_flags;
363
static int hf_diameter_3gpp_uvr_flags_spare_bits;
364
static int hf_diameter_3gpp_uvr_flags_bit0;
365
static int hf_diameter_3gpp_uva_flags;
366
static int hf_diameter_3gpp_uva_flags_spare_bits;
367
static int hf_diameter_3gpp_uva_flags_bit0;
368
static int hf_diameter_3gpp_subscription_data_flags;
369
static int hf_diameter_3gpp_subscription_data_flags_spare_bits;
370
static int hf_diameter_3gpp_subscription_data_flags_bit3;
371
static int hf_diameter_3gpp_subscription_data_flags_bit2;
372
static int hf_diameter_3gpp_subscription_data_flags_bit1;
373
static int hf_diameter_3gpp_subscription_data_flags_bit0;
374
static int hf_diameter_3gpp_wlan_offloadability_eutran;
375
static int hf_diameter_3gpp_wlan_offloadability_eutran_spare_bits;
376
static int hf_diameter_3gpp_wlan_offloadability_eutran_bit0;
377
static int hf_diameter_3gpp_wlan_offloadability_utran;
378
static int hf_diameter_3gpp_wlan_offloadability_utran_spare_bits;
379
static int hf_diameter_3gpp_wlan_offloadability_utran_bit0;
380
static int hf_diameter_3gpp_air_flags;
381
static int hf_diameter_3gpp_air_flags_spare_bits;
382
static int hf_diameter_3gpp_air_flags_bit0;
383
static int hf_diameter_3gpp_preferred_data_mode;
384
static int hf_diameter_3gpp_preferred_data_mode_spare_bits;
385
static int hf_diameter_3gpp_preferred_data_mode_bit1;
386
static int hf_diameter_3gpp_preferred_data_mode_bit0;
387
static int hf_diameter_3gpp_v2x_permission;
388
static int hf_diameter_3gpp_v2x_permission_spare_bits;
389
static int hf_diameter_3gpp_v2x_permission_bit1;
390
static int hf_diameter_3gpp_v2x_permission_bit0;
391
static int hf_diameter_3gpp_core_network_restrictions;
392
static int hf_diameter_3gpp_core_network_restrictions_spare_bits;
393
static int hf_diameter_3gpp_core_network_restrictions_bit1;
394
static int hf_diameter_3gpp_core_network_restrictions_bit0;
395
static int hf_diameter_3gpp_supported_gad_shapes;
396
static int hf_diameter_3gpp_highaccuracyellipsoidpointwithaltitudeandscalableuncertaintyellipsoid_bit10;
397
static int hf_diameter_3gpp_highaccuracyellipsoidpointwithscalableuncertaintyellipse_bit9;
398
static int hf_diameter_3gpp_highaccuracyellipsoidpointwithaltitudeanduncertaintyellipsoid_bit8;
399
static int hf_diameter_3gpp_highaccuracyellipsoidpointwithuncertaintyellipse_bit7;
400
static int hf_diameter_3gpp_ellipsoidarc_bit6;
401
static int hf_diameter_3gpp_ellipsoidpointwithaltitudeanduncertaintyelipsoid_bit5;
402
static int hf_diameter_3gpp_ellipsoidpointwithaltitude_bit4;
403
static int hf_diameter_3gpp_polygon_bit3;
404
static int hf_diameter_3gpp_ellipsoidpointwithuncertaintyellipse_bit2;
405
static int hf_diameter_3gpp_ellipsoidpointwithuncertaintycircle_bit1;
406
static int hf_diameter_3gpp_ellipsoidpoint_bit0;
407
408
409
static int hf_diameter_3gpp_uar_flags_flags_spare_bits;
410
static int hf_diameter_3gpp_feature_list1_sh_flags_spare_bits;
411
static int hf_diameter_3gpp_feature_list2_s6a_flags_spare_bits;
412
static int hf_diameter_3gpp_cms_spare_bits;
413
static int hf_diameter_3gpp_ulr_flags_spare_bits;
414
static int hf_diameter_3gpp_ula_flags_spare_bits;
415
static int hf_diameter_3gpp_dsa_flags_spare_bits;
416
static int hf_diameter_3gpp_acc_res_dat_flags;
417
static int hf_diameter_3gpp_acc_res_dat_flags_bit0;
418
static int hf_diameter_3gpp_acc_res_dat_flags_bit1;
419
static int hf_diameter_3gpp_acc_res_dat_flags_bit2;
420
static int hf_diameter_3gpp_acc_res_dat_flags_bit3;
421
static int hf_diameter_3gpp_acc_res_dat_flags_bit4;
422
static int hf_diameter_3gpp_acc_res_dat_flags_bit5;
423
static int hf_diameter_3gpp_acc_res_dat_flags_bit6;
424
static int hf_diameter_3gpp_acc_res_dat_flags_bit7;
425
static int hf_diameter_3gpp_acc_res_dat_flags_bit8;
426
static int hf_diameter_3gpp_acc_res_dat_flags_bit9;
427
static int hf_diameter_3gpp_acc_res_dat_flags_bit10;
428
static int hf_diameter_3gpp_acc_res_dat_flags_bit11;
429
static int hf_diameter_3gpp_acc_res_dat_flags_bit12;
430
static int hf_diameter_3gpp_acc_res_dat_flags_spare_bits;
431
static int hf_diameter_3gpp_ida_flags_spare_bits;
432
static int hf_diameter_3gpp_pua_flags_spare_bits;
433
static int hf_diameter_3gpp_nor_flags_spare_bits;
434
static int hf_diameter_3gpp_idr_flags_spare_bits;
435
static int hf_diameter_3gpp_ppr_flags_spare_bits;
436
static int hf_diameter_3gpp_aaa_fail_flags_spare_bits;
437
static int hf_diameter_3gpp_der_flags_spare_bits;
438
static int hf_diameter_3gpp_dea_flags_spare_bits;
439
static int hf_diameter_3gpp_rar_flags_spare_bits;
440
static int hf_diameter_3gpp_der_s6b_flags_spare_bits;
441
static int hf_diameter_3gpp_mbms_bearer_event_spare_bits;
442
static int hf_diameter_3gpp_mbms_bearer_result_spare_bits;
443
static int hf_diameter_3gpp_tmgi_allocation_result_spare_bits;
444
static int hf_diameter_3gpp_tmgi_deallocation_result_spare_bits;
445
static int hf_diameter_3gpp_emergency_services_flags_spare_bits;
446
447
static int hf_diameter_3gpp_plr_flags;
448
static int hf_diameter_3gpp_plr_flags_spare_bits;
449
static int hf_diameter_3gpp_delayed_location_reporting_support_indicator_bit2;
450
static int hf_diameter_3gpp_optimized_lcs_proc_req_bit1;
451
static int hf_diameter_3gpp_mo_lr_shortcircuit_indicator_bit0;
452
453
static int hf_diameter_3gpp_pla_flags;
454
static int hf_diameter_3gpp_pla_flags_spare_bits;
455
static int hf_diameter_3gpp_ue_transiently_not_reachable_indicator_bit3;
456
static int hf_diameter_3gpp_optimized_lcs_proc_performed_bit2;
457
static int hf_diameter_3gpp_mo_lr_shortcircuit_indicator_bit1;
458
static int hf_diameter_3gpp_deferred_mt_lr_response_indicator_bit0;
459
460
static int hf_diameter_3gpp_deferred_location_type;
461
static int hf_diameter_3gpp_deferred_location_type_spare_bits;
462
static int hf_diameter_3gpp_ue_available_bit0;
463
static int hf_diameter_3gpp_entering_into_area_bit1;
464
static int hf_diameter_3gpp_leaving_from_area_bit2;
465
static int hf_diameter_3gpp_being_inside_area_bit3;
466
static int hf_diameter_3gpp_periodic_ldr_bit4;
467
static int hf_diameter_3gpp_motion_event_bit5;
468
static int hf_diameter_3gpp_ldr_activated_bit6;
469
static int hf_diameter_3gpp_maximum_interval_exporation_bit7;
470
471
static int ett_diameter_3gpp_path;
472
static int ett_diameter_3gpp_feature_list;
473
static int ett_diameter_3gpp_uar_flags;
474
static int ett_diameter_3gpp_tmgi;
475
static int ett_diameter_3gpp_cms;
476
477
static int hf_diameter_3gpp_secondary_rat_type;
478
479
static int hf_diameter_3gpp_gcip;
480
static int hf_diameter_3gpp_amec;
481
static int hf_diameter_3gpp_coame;
482
static int hf_diameter_3gpp_acpc;
483
static int hf_diameter_3gpp_rir_flags;
484
static int hf_diameter_3gpp_rir_spare_b31_b4;
485
static int hf_diameter_3gpp_feature_list_s6t_flags;
486
static int hf_diameter_3gpp_feature_list_s6t_flags_bit0;
487
static int hf_diameter_3gpp_feature_list_s6t_flags_bit1;
488
static int hf_diameter_3gpp_feature_list_s6t_flags_bit2;
489
static int hf_diameter_3gpp_feature_list_s6t_flags_bit3;
490
static int hf_diameter_3gpp_feature_list_s6t_flags_bit4;
491
static int hf_diameter_3gpp_feature_list_s6t_flags_bit5;
492
static int hf_diameter_3gpp_feature_list_s6t_flags_bit6;
493
static int hf_diameter_3gpp_feature_list_s6t_flags_bit7;
494
static int hf_diameter_3gpp_feature_list_s6t_flags_bit8;
495
static int hf_diameter_3gpp_feature_list_s6t_flags_bit9;
496
static int hf_diameter_3gpp_feature_list_s6t_spare_b31_b10;
497
static int hf_diameter_3gpp_supported_monitoring_events;
498
static int hf_diameter_3gpp_supported_monitoring_events_b0;
499
static int hf_diameter_3gpp_supported_monitoring_events_b1;
500
static int hf_diameter_3gpp_supported_monitoring_events_b2;
501
static int hf_diameter_3gpp_supported_monitoring_events_b3;
502
static int hf_diameter_3gpp_supported_monitoring_events_b4;
503
static int hf_diameter_3gpp_supported_monitoring_events_b5;
504
static int hf_diameter_3gpp_supported_monitoring_events_b6;
505
static int hf_diameter_3gpp_supported_monitoring_events_b7;
506
static int hf_diameter_3gpp_supported_monitoring_events_b8;
507
static int hf_diameter_3gpp_srr_spare_b31_b3;
508
static int hf_diameter_3gpp_srr_gprsind;
509
static int hf_diameter_3gpp_srr_smrppri;
510
static int hf_diameter_3gpp_srr_sad;
511
static int hf_diameter_3gpp_srr_flags;
512
513
static int hf_diameter_3gpp_mwd_spare;
514
static int hf_diameter_3gpp_mwd_mnr5gn3g;
515
static int hf_diameter_3gpp_mwd_mnr5g;
516
static int hf_diameter_3gpp_mwd_mnrg;
517
static int hf_diameter_3gpp_mwd_mcef;
518
static int hf_diameter_3gpp_mwd_mnrf;
519
static int hf_diameter_3gpp_mwd_scaddressni;
520
static int hf_diameter_3gpp_mwd_status;
521
522
static int ett_diameter_3gpp_qos_subscribed;
523
static int ett_diameter_3gpp_ulr_flags;
524
static int ett_diameter_3gpp_ula_flags;
525
static int ett_diameter_3gpp_dsr_flags;
526
static int ett_diameter_3gpp_dsa_flags;
527
static int ett_diameter_3gpp_ida_flags;
528
static int ett_diameter_3gpp_pua_flags;
529
static int ett_diameter_3gpp_nor_flags;
530
static int ett_diameter_3gpp_idr_flags;
531
static int ett_diameter_3gpp_ppr_flags;
532
static int ett_diameter_3gpp_aaa_fail_flags;
533
static int ett_diameter_3gpp_der_flags;
534
static int ett_diameter_3gpp_dea_flags;
535
static int ett_diameter_3gpp_rar_flags;
536
static int ett_diameter_3gpp_der_s6b_flags;
537
static int ett_diameter_3gpp_mbms_bearer_event;
538
static int ett_diameter_3gpp_mbms_bearer_result;
539
static int ett_diameter_3gpp_tmgi_allocation_result;
540
static int ett_diameter_3gpp_tmgi_deallocation_result;
541
static int ett_diameter_3gpp_sar_flags;
542
static int ett_diameter_3gpp_req_nodes;
543
static int ett_diameter_3gpp_emergency_services_flags;
544
static int ett_diameter_3gpp_pur_flags;
545
static int ett_diameter_3gpp_clr_flags;
546
static int ett_diameter_3gpp_uvr_flags;
547
static int ett_diameter_3gpp_uva_flags;
548
static int ett_diameter_3gpp_subscription_data_flags;
549
static int ett_diameter_3gpp_wlan_offloadability_eutran;
550
static int ett_diameter_3gpp_wlan_offloadability_utran;
551
static int ett_diameter_3gpp_air_flags;
552
static int ett_diameter_3gpp_preferred_data_mode;
553
static int ett_diameter_3gpp_v2x_permission;
554
static int ett_diameter_3gpp_core_network_restrictions;
555
static int ett_diameter_3gpp_supported_gad_shapes;
556
static int ett_diameter_3gpp_plr_flags;
557
static int ett_diameter_3gpp_pla_flags;
558
static int ett_diameter_3gpp_deferred_location_type;
559
static int ett_diameter_3gpp_rir_flags;
560
static int ett_diameter_3gpp_supported_monitoring_events;
561
static int ett_diameter_3gpp_af_requested_data_flags;
562
static int ett_diameter_3gpp_srr_flags;
563
static int ett_diameter_3gpp_mwd_status;
564
565
static int hf_diameter_3gpp_feature_list1_rx_flags_bit0;
566
static int hf_diameter_3gpp_feature_list1_rx_flags_bit1;
567
static int hf_diameter_3gpp_feature_list1_rx_flags_bit2;
568
static int hf_diameter_3gpp_feature_list1_rx_flags_bit3;
569
static int hf_diameter_3gpp_feature_list1_rx_flags_bit4;
570
static int hf_diameter_3gpp_feature_list1_rx_flags_bit5;
571
static int hf_diameter_3gpp_feature_list1_rx_flags_bit6;
572
static int hf_diameter_3gpp_feature_list1_rx_flags_bit7;
573
static int hf_diameter_3gpp_feature_list1_rx_flags_bit8;
574
static int hf_diameter_3gpp_feature_list1_rx_flags_bit9;
575
static int hf_diameter_3gpp_feature_list1_rx_flags_bit10;
576
static int hf_diameter_3gpp_feature_list1_rx_flags_bit11;
577
static int hf_diameter_3gpp_feature_list1_rx_flags_bit12;
578
static int hf_diameter_3gpp_feature_list1_rx_flags_bit13;
579
static int hf_diameter_3gpp_feature_list1_rx_flags_bit14;
580
static int hf_diameter_3gpp_feature_list1_rx_flags_bit15;
581
static int hf_diameter_3gpp_feature_list1_rx_flags_bit16;
582
static int hf_diameter_3gpp_feature_list1_rx_flags_bit17;
583
static int hf_diameter_3gpp_feature_list1_rx_flags_bit18;
584
static int hf_diameter_3gpp_feature_list1_rx_flags_bit19;
585
static int hf_diameter_3gpp_feature_list1_rx_flags_bit20;
586
static int hf_diameter_3gpp_feature_list1_rx_flags_bit21;
587
static int hf_diameter_3gpp_feature_list1_rx_flags_bit22;
588
static int hf_diameter_3gpp_feature_list1_rx_flags_spare_bits;
589
590
static int hf_diameter_3gpp_feature_list2_rx_flags_bit0;
591
static int hf_diameter_3gpp_feature_list2_rx_flags_bit1;
592
static int hf_diameter_3gpp_feature_list2_rx_flags_bit2;
593
static int hf_diameter_3gpp_feature_list2_rx_flags_bit3;
594
static int hf_diameter_3gpp_feature_list2_rx_flags_bit4;
595
static int hf_diameter_3gpp_feature_list2_rx_flags_bit5;
596
static int hf_diameter_3gpp_feature_list2_rx_flags_bit6;
597
static int hf_diameter_3gpp_feature_list2_rx_flags_bit7;
598
static int hf_diameter_3gpp_feature_list2_rx_flags_bit8;
599
static int hf_diameter_3gpp_feature_list2_rx_flags_bit9;
600
static int hf_diameter_3gpp_feature_list2_rx_flags_bit10;
601
static int hf_diameter_3gpp_feature_list2_rx_flags_bit11;
602
static int hf_diameter_3gpp_feature_list2_rx_flags_bit12;
603
static int hf_diameter_3gpp_feature_list2_rx_flags_bit13;
604
static int hf_diameter_3gpp_feature_list2_rx_flags_bit14;
605
static int hf_diameter_3gpp_feature_list2_rx_flags_bit15;
606
static int hf_diameter_3gpp_feature_list2_rx_flags_spare_bits;
607
608
static int hf_diameter_3gpp_feature_list_swx_flags;
609
static int hf_diameter_3gpp_feature_list_swx_flags_bit0;
610
static int hf_diameter_3gpp_feature_list_swx_flags_bit1;
611
static int hf_diameter_3gpp_feature_list_swx_flags_bit2;
612
static int hf_diameter_3gpp_feature_list_swx_flags_bit3;
613
static int hf_diameter_3gpp_feature_list_swx_flags_bit4;
614
static int hf_diameter_3gpp_feature_list_swx_flags_bit5;
615
static int hf_diameter_3gpp_feature_list_swx_flags_bit6;
616
static int hf_diameter_3gpp_feature_list_s6b_flags;
617
static int hf_diameter_3gpp_feature_list_s6b_flags_bit0;
618
619
static int hf_diameter_3gpp_feature_list_s6c_flags;
620
static int hf_diameter_3gpp_feature_list_s6c_flags_bit0;
621
622
static int hf_diameter_3gpp_ran_nas_protocol_type;
623
static int hf_diameter_3gpp_ran_nas_cause_type;
624
static int hf_diameter_3gpp_ran_nas_cause_value;
625
static int hf_diameter_3gpp_s1ap_radio_network;
626
static int hf_diameter_3gpp_s1ap_transport;
627
static int hf_diameter_3gpp_s1ap_nas;
628
static int hf_diameter_3gpp_s1ap_protocol;
629
static int hf_diameter_3gpp_s1ap_misc;
630
static int hf_diameter_3gpp_emm_cause;
631
static int hf_diameter_3gpp_esm_cause;
632
static int hf_diameter_3gpp_diameter_cause;
633
static int hf_diameter_3gpp_ikev2_cause;
634
635
static int hf_diameter_3gpp_selection_mode;
636
637
/* Dissector handles */
638
static dissector_handle_t xml_handle;
639
static dissector_handle_t gsm_sms_handle;
640
static dissector_handle_t sdp_handle;
641
642
/* Forward declarations */
643
static int dissect_diameter_3gpp_ipv6addr(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, void *data _U_);
644
645
/*
646
 *  AVP Code: 8 IMSI-MNC-MCC
647
 */
648
static int
649
dissect_diameter_3gpp_imsi_mnc_mcc(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data _U_)
650
0
{
651
0
    uint32_t str_len;
652
653
0
    str_len = tvb_reported_length(tvb);
654
0
    dissect_e212_mcc_mnc_in_utf8_address(tvb, pinfo, tree, 0);
655
656
0
    return str_len;
657
0
}
658
659
/* AVP Code: 12 3GPP-Selection-Mode */
660
static int
661
dissect_diameter_3gpp_selection_mode(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, void *data _U_)
662
0
{
663
0
    proto_item *item;
664
0
    uint8_t sel_mode;
665
666
    /* Value in ASCII(UTF-8) */
667
0
    sel_mode = tvb_get_uint8(tvb, 0) - 0x30;
668
669
0
    item = proto_tree_add_uint(tree, hf_diameter_3gpp_selection_mode, tvb, 0, 1, sel_mode);
670
0
    proto_item_set_generated(item);
671
672
0
    return tvb_reported_length(tvb);
673
0
}
674
675
/* AVP Code: 15 3GPP-SGSN-IPv6-Address */
676
static int
677
dissect_diameter_3gpp_sgsn_ipv6_address(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data)
678
0
{
679
    /* 3GPP AVP code 15 has a conflict between imscxdx.xml (where the AVP
680
    * contains an Unsigned32 enum) and TGPPGmb.xml (where the AVP contains
681
    * an OctetString IPv6 address).  This function decodes the latter; we
682
    * (silently) abort dissection if the length is 4 on the assumption that
683
    * the old IMS AVP is what we're decoding.
684
    */
685
0
    if (tvb_reported_length(tvb) == 4)
686
0
        return 4;
687
688
0
    return dissect_diameter_3gpp_ipv6addr(tvb, pinfo, tree, data);
689
690
0
}
691
692
/*
693
 *  AVP Code: 18 SGSN-MNC-MCC
694
 */
695
static int
696
dissect_diameter_3gpp_sgsn_mnc_mcc(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data _U_)
697
0
{
698
0
    uint32_t str_len;
699
700
0
    str_len = tvb_reported_length(tvb);
701
0
    dissect_e212_mcc_mnc_in_utf8_address(tvb, pinfo, tree, 0);
702
703
0
    return str_len;
704
0
}
705
706
/* AVP Code: 21 3GPP-RAT-Type
707
* 3GPP TS 29.061, 29.274
708
*/
709
static const value_string diameter_3gpp_rat_type_vals[] = {
710
    { 0, "Reserved" },
711
    { 1, "UTRAN" },
712
    { 2, "GERAN" },
713
    { 3, "WLAN" },
714
    { 4, "GAN" },
715
    { 5, "HSPA Evolution" },
716
    { 6, "EUTRAN (WB-E-UTRAN)" },
717
    { 7, "Virtual" },
718
    { 8, "EUTRAN-NB-IoT" },
719
    { 9, "LTE-M" },
720
    { 51, "NR" },
721
    { 52, "NR in unlicensed bands" },
722
    { 53, "Trusted WLAN" },
723
    { 54, "Trusted Non-3GPP access" },
724
    { 55, "Wireline access" },
725
    { 56, "Wireline Cable access" },
726
    { 57, "Wireline BBF access" },
727
    { 58, "NR RedCap" },
728
    { 101, "IEEE 802.16e" },
729
    { 102, "3GPP2 eHRPD" },
730
    { 103, "3GPP2 HRPD" },
731
    { 104, "3GPP2 1xRTT" },
732
    { 105, "3GPP2 UMB" },
733
    { 0, NULL }
734
};
735
736
static int
737
dissect_diameter_3gpp_rat_type(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, void *data _U_)
738
0
{
739
0
    unsigned offset = 0;
740
0
    int length = tvb_reported_length(tvb);
741
742
0
    proto_tree_add_item(tree, hf_diameter_3gpp_rat_type, tvb, offset, 1, ENC_BIG_ENDIAN);
743
744
0
    return length;
745
0
}
746
747
/* AVP Code: 23 3GPP-MS-TimeZone
748
 * 3GPP TS 29.061
749
 */
750
static const value_string daylight_saving_time_vals[] = {
751
    {0, "No adjustment"},
752
    {1, "+1 hour adjustment for Daylight Saving Time"},
753
    {2, "+2 hours adjustment for Daylight Saving Time"},
754
    {3, "Reserved"},
755
    {0, NULL}
756
};
757
758
static int
759
dissect_diameter_3gpp_ms_timezone(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, void *data)
760
0
{
761
0
    unsigned offset = 0;
762
0
    uint8_t     oct, hours, minutes;
763
0
    char        sign;
764
0
    diam_sub_dis_t *diam_sub_dis = (diam_sub_dis_t*)data;
765
766
    /* 3GPP TS 23.040 version 6.6.0 Release 6
767
     * 9.2.3.11 TP-Service-Centre-Time-Stamp (TP-SCTS)
768
     * :
769
     * The Time Zone indicates the difference, expressed in quarters of an hour,
770
     * between the local time and GMT. In the first of the two semi-octets,
771
     * the first bit (bit 3 of the seventh octet of the TP-Service-Centre-Time-Stamp field)
772
     * represents the algebraic sign of this difference (0: positive, 1: negative).
773
     */
774
775
0
    oct = tvb_get_uint8(tvb, offset);
776
0
    sign = (oct & 0x08) ? '-' : '+';
777
0
    oct = (oct >> 4) + (oct & 0x07) * 10;
778
0
    hours =  oct / 4;
779
0
    minutes = oct % 4 * 15;
780
781
0
    proto_tree_add_uint_format_value(tree, hf_diameter_3gpp_timezone, tvb, offset, 1, oct, "GMT %c %d hours %d minutes", sign, hours, minutes);
782
0
    offset++;
783
784
0
    oct = tvb_get_uint8(tvb, offset) & 0x3;
785
0
    proto_tree_add_item(tree, hf_diameter_3gpp_timezone_adjustment, tvb, offset, 1, ENC_BIG_ENDIAN);
786
0
    offset++;
787
788
0
    diam_sub_dis->avp_str = wmem_strdup_printf(pinfo->pool, "Timezone: GMT %c %d hours %d minutes %s",
789
0
        sign,
790
0
        hours,
791
0
        minutes,
792
0
        val_to_str_const(oct, daylight_saving_time_vals, "Unknown"));
793
794
0
    return offset;
795
0
}
796
/* AVP Code: 29 3GPP-TWAN-Identifier
797
 * 3GPP TS 29.061 V14.2.0 (2016-12)
798
*/
799
static int
800
dissect_diameter_3gpp_twan_identifier(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data _U_)
801
0
{
802
0
    int length = tvb_reported_length(tvb);
803
804
0
    dissect_gtpv2_twan_identifier(tvb, pinfo, tree, NULL, length, 0, 0, NULL);
805
806
0
    return length;
807
0
}
808
809
/*
810
 * AVP Code: 524 Codec-Data
811
 */
812
static int
813
dissect_diameter_3gpp_codec_data(tvbuff_t* tvb, packet_info* pinfo _U_, proto_tree* tree, void* data _U_)
814
0
{
815
0
    unsigned offset = 0, linelen, next_offset;
816
0
    unsigned length = tvb_reported_length(tvb);
817
0
    const char* str;
818
819
    /* The first line of the value of the Codec-Data AVP shall consist of either the word "uplink"
820
     * or the word "downlink" (in ASCII, without quotes) followed by a new-line character
821
     */
822
0
    if (!tvb_find_line_end_remaining(tvb, offset, &linelen, &next_offset)) {
823
0
        return tvb_reported_length(tvb);
824
0
    }
825
0
    str = (char*)tvb_get_string_enc(pinfo->pool, tvb, offset, linelen, ENC_ASCII | ENC_NA);
826
0
    proto_tree_add_string_format(tree, hf_diameter_3gpp_codec_data_dir, tvb, offset, linelen, str, "%s", str);
827
0
    if (next_offset > length) {
828
0
        return tvb_reported_length(tvb);
829
0
    }
830
0
    offset = next_offset;
831
    /* The second line of the value of the Codec-Data AVP shall consist of either the word "offer"
832
     * or the word "answer", or the word "description" (in ASCII, without quotes)
833
     * followed by a new-line character
834
     */
835
0
    if (!tvb_find_line_end_remaining(tvb, offset, &linelen, &next_offset)) {
836
0
        return tvb_reported_length(tvb);
837
0
    }
838
0
    str = (char*)tvb_get_string_enc(pinfo->pool, tvb, offset, linelen, ENC_ASCII | ENC_NA);
839
0
    proto_tree_add_string_format(tree, hf_diameter_3gpp_codec_sdp_type, tvb, offset, linelen, str, "%s", str);
840
0
    if (next_offset >= length) {
841
0
        return tvb_reported_length(tvb);
842
0
    }
843
844
    /* The rest of the value shall consist of SDP line(s) in ASCII encoding
845
     * separated by new-line characters, as specified in IETF RFC 4566
846
     */
847
0
    if (sdp_handle) {
848
        /* Lets see if we have null padding*/
849
0
        while (tvb_get_uint8(tvb, length - 1) == 0) {
850
0
            length--;
851
0
        }
852
0
        length -= next_offset;
853
0
        tvbuff_t* new_tvb = tvb_new_subset_length(tvb, next_offset, length);
854
0
        call_dissector(sdp_handle, new_tvb, pinfo, tree);
855
0
    }
856
0
    return tvb_reported_length(tvb);
857
0
}
858
859
/*
860
 * AVP Code: 551 AF-Requested-Data
861
 */
862
static int * const diameter_3gpp_af_requested_data_flags[] = {
863
    &hf_diameter_3gpp_af_requested_data_flags_bit0,
864
    NULL
865
};
866
867
static int
868
dissect_diameter_3gpp_af_requested_data(tvbuff_t* tvb, packet_info* pinfo _U_, proto_tree* tree, void* data _U_)
869
0
{
870
0
    diam_sub_dis_t* diam_sub_dis_inf = (diam_sub_dis_t*)data;
871
872
    /* Hide the item created in packet-diameter.c and only show the one created here */
873
0
    proto_item_set_hidden(diam_sub_dis_inf->item);
874
875
0
    proto_tree_add_bitmask_with_flags(tree, tvb, 0, hf_diameter_3gpp_af_requested_data_flags,
876
0
                                      ett_diameter_3gpp_af_requested_data_flags,
877
0
                                      diameter_3gpp_af_requested_data_flags, ENC_BIG_ENDIAN, BMT_NO_APPEND);
878
879
0
    return 4;
880
881
0
}
882
883
/* AVP Code: 601 Public-Identity
884
 * TGPP.xml
885
 * 6.3.2 Public-Identity AVP
886
 * The Public-Identity AVP is of type UTF8String. This AVP contains the public identity of a user in the IMS. The syntax
887
 * of this AVP corresponds either to a SIP URL (with the format defined in IETF RFC 3261 [3] and IETF RFC 2396 [4])
888
 * or a TEL URL (with the format defined in IETF RFC 3966 [8]). Both SIP URL and TEL URL shall be in canonical
889
 * form, as described in 3GPP TS 23.003 [13].
890
 */
891
static int
892
dissect_diameter_3gpp_public_identity(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, void *data _U_)
893
0
{
894
0
    int length = tvb_reported_length(tvb);
895
896
0
    dfilter_store_sip_from_addr(tvb, tree, 0, length);
897
898
0
    return length;
899
900
0
}
901
902
/* AVP Code: 629 Feature-List-id
903
 * Feature list Id is neede to dissect Feature list in S6a/S6d application
904
 * Ref 3GPP TS 29.272
905
 */
906
907
static int
908
dissect_diameter_3gpp_feature_list_id(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree _U_, void *data)
909
0
{
910
0
    diam_sub_dis_t *diam_sub_dis_inf = (diam_sub_dis_t*)data;
911
912
0
    if(diam_sub_dis_inf) {
913
0
        diam_sub_dis_inf->feature_list_id = tvb_get_ntohl(tvb,0);
914
0
    }
915
916
0
    return 4;
917
0
}
918
919
/* AVP Code: 637 UAR-Flags
920
 * imscxdx.xml
921
 * IMS Cx Dx AVPS 3GPP TS 29.229
922
 */
923
924
static int
925
dissect_diameter_3gpp_uar_flags(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, void *data)
926
0
{
927
0
    static int * const flags[] = {
928
0
        &hf_diameter_3gpp_uar_flags_flags_spare_bits,
929
0
        &hf_diameter_3gpp_uar_flags_flags_bit0,
930
0
        NULL
931
0
    };
932
933
0
    diam_sub_dis_t* diam_sub_dis_inf = (diam_sub_dis_t*)data;
934
935
    /* Hide the item created in packet-diameter.c and only show the one created here */
936
0
    proto_item_set_hidden(diam_sub_dis_inf->item);
937
938
0
    proto_tree_add_bitmask_with_flags(tree, tvb, 0, hf_diameter_3gpp_uar_flags_flags, ett_diameter_3gpp_uar_flags, flags, ENC_BIG_ENDIAN, BMT_NO_APPEND);
939
0
    return 4;
940
0
}
941
942
/* AVP Code: 630 Feature-List
943
 * Interpretation depends on Application Id
944
 * imscxdx.xml
945
 * IMS Cx Dx AVPS 3GPP TS 29.229
946
 */
947
static int * const diameter_3gpp_cx_feature_list_1_fields[] = {
948
    &hf_diameter_3gpp_cx_feature_list_1_flags_spare_bits,
949
    &hf_diameter_3gpp_cx_feature_list_1_flags_bit3,
950
    &hf_diameter_3gpp_cx_feature_list_1_flags_bit2,
951
    &hf_diameter_3gpp_cx_feature_list_1_flags_bit1,
952
    &hf_diameter_3gpp_cx_feature_list_1_flags_bit0,
953
    NULL
954
};
955
956
/* 3GPP TS 29.212 V14.0.0 (2016-09) */
957
static int * const diameter_3gpp_sd_feature_list_fields[] = {
958
    &hf_diameter_3gpp_feature_list_sd_flags_spare_bits,
959
    &hf_diameter_3gpp_feature_list_sd_flags_bit10,
960
    &hf_diameter_3gpp_feature_list_sd_flags_bit9,
961
    &hf_diameter_3gpp_feature_list_sd_flags_bit8,
962
    &hf_diameter_3gpp_feature_list_sd_flags_bit7,
963
    &hf_diameter_3gpp_feature_list_sd_flags_bit6,
964
    &hf_diameter_3gpp_feature_list_sd_flags_bit5,
965
    &hf_diameter_3gpp_feature_list_sd_flags_bit4,
966
    &hf_diameter_3gpp_feature_list_sd_flags_bit3,
967
    &hf_diameter_3gpp_feature_list_sd_flags_bit2,
968
    &hf_diameter_3gpp_feature_list_sd_flags_bit1,
969
    &hf_diameter_3gpp_feature_list_sd_flags_bit0,
970
    NULL
971
};
972
973
static int
974
dissect_diameter_3gpp_feature_list(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, void *data)
975
0
{
976
0
    unsigned offset = 0;
977
0
    uint32_t application_id = 0, feature_list_id = 0;
978
0
    diam_sub_dis_t *diam_sub_dis_inf = (diam_sub_dis_t*)data;
979
980
0
    if(!diam_sub_dis_inf) {
981
0
        return 4;
982
0
    }
983
984
0
    application_id = diam_sub_dis_inf->application_id;
985
0
    feature_list_id = diam_sub_dis_inf->feature_list_id;
986
    /* Hide the item created in packet-diameter.c and only show the one created here */
987
0
    bool save_hidden = proto_item_is_hidden(diam_sub_dis_inf->item);
988
0
    proto_item_set_hidden(diam_sub_dis_inf->item);
989
990
0
    switch (application_id) {
991
0
    case DIAM_APPID_3GPP_CX:
992
0
        proto_tree_add_bitmask_with_flags(tree, tvb, offset, hf_diameter_3gpp_cx_feature_list_flags,
993
0
            ett_diameter_3gpp_feature_list, diameter_3gpp_cx_feature_list_1_fields, ENC_BIG_ENDIAN, BMT_NO_APPEND);
994
0
        break;
995
0
    case DIAM_APPID_3GPP_RX:
996
0
    {
997
0
        if (feature_list_id == 1) {
998
            /* 3GPP TS 129 214 Table 5.4.1.1: Features of Feature-List-ID 1 used in Rx */
999
0
            static int * const flags[] = {
1000
0
                &hf_diameter_3gpp_feature_list1_rx_flags_spare_bits,
1001
0
                &hf_diameter_3gpp_feature_list1_rx_flags_bit22,
1002
0
                &hf_diameter_3gpp_feature_list1_rx_flags_bit21,
1003
0
                &hf_diameter_3gpp_feature_list1_rx_flags_bit20,
1004
0
                &hf_diameter_3gpp_feature_list1_rx_flags_bit19,
1005
0
                &hf_diameter_3gpp_feature_list1_rx_flags_bit18,
1006
0
                &hf_diameter_3gpp_feature_list1_rx_flags_bit17,
1007
0
                &hf_diameter_3gpp_feature_list1_rx_flags_bit16,
1008
0
                &hf_diameter_3gpp_feature_list1_rx_flags_bit15,
1009
0
                &hf_diameter_3gpp_feature_list1_rx_flags_bit14,
1010
0
                &hf_diameter_3gpp_feature_list1_rx_flags_bit13,
1011
0
                &hf_diameter_3gpp_feature_list1_rx_flags_bit12,
1012
0
                &hf_diameter_3gpp_feature_list1_rx_flags_bit11,
1013
0
                &hf_diameter_3gpp_feature_list1_rx_flags_bit10,
1014
0
                &hf_diameter_3gpp_feature_list1_rx_flags_bit9,
1015
0
                &hf_diameter_3gpp_feature_list1_rx_flags_bit8,
1016
0
                &hf_diameter_3gpp_feature_list1_rx_flags_bit7,
1017
0
                &hf_diameter_3gpp_feature_list1_rx_flags_bit6,
1018
0
                &hf_diameter_3gpp_feature_list1_rx_flags_bit5,
1019
0
                &hf_diameter_3gpp_feature_list1_rx_flags_bit4,
1020
0
                &hf_diameter_3gpp_feature_list1_rx_flags_bit3,
1021
0
                &hf_diameter_3gpp_feature_list1_rx_flags_bit2,
1022
0
                &hf_diameter_3gpp_feature_list1_rx_flags_bit1,
1023
0
                &hf_diameter_3gpp_feature_list1_rx_flags_bit0,
1024
0
                NULL
1025
0
            };
1026
1027
0
            proto_tree_add_bitmask_with_flags(tree, tvb, offset, hf_diameter_3gpp_feature_list_flags, ett_diameter_3gpp_feature_list, flags, ENC_BIG_ENDIAN, BMT_NO_APPEND);
1028
0
        }
1029
0
        else if (feature_list_id == 2) {
1030
0
            static int * const flags[] = {
1031
0
                &hf_diameter_3gpp_feature_list2_rx_flags_spare_bits,
1032
0
                &hf_diameter_3gpp_feature_list2_rx_flags_bit15,
1033
0
                &hf_diameter_3gpp_feature_list2_rx_flags_bit14,
1034
0
                &hf_diameter_3gpp_feature_list2_rx_flags_bit13,
1035
0
                &hf_diameter_3gpp_feature_list2_rx_flags_bit12,
1036
0
                &hf_diameter_3gpp_feature_list2_rx_flags_bit11,
1037
0
                &hf_diameter_3gpp_feature_list2_rx_flags_bit10,
1038
0
                &hf_diameter_3gpp_feature_list2_rx_flags_bit9,
1039
0
                &hf_diameter_3gpp_feature_list2_rx_flags_bit8,
1040
0
                &hf_diameter_3gpp_feature_list2_rx_flags_bit7,
1041
0
                &hf_diameter_3gpp_feature_list2_rx_flags_bit6,
1042
0
                &hf_diameter_3gpp_feature_list2_rx_flags_bit5,
1043
0
                &hf_diameter_3gpp_feature_list2_rx_flags_bit4,
1044
0
                &hf_diameter_3gpp_feature_list2_rx_flags_bit3,
1045
0
                &hf_diameter_3gpp_feature_list2_rx_flags_bit2,
1046
0
                &hf_diameter_3gpp_feature_list2_rx_flags_bit1,
1047
0
                &hf_diameter_3gpp_feature_list2_rx_flags_bit0,
1048
0
                NULL
1049
0
            };
1050
1051
0
            proto_tree_add_bitmask_with_flags(tree, tvb, offset, hf_diameter_3gpp_feature_list_flags, ett_diameter_3gpp_feature_list, flags, ENC_BIG_ENDIAN, BMT_NO_APPEND);
1052
0
        }
1053
0
    }
1054
0
        break;
1055
0
    case DIAM_APPID_3GPP_SH:
1056
0
        {
1057
0
        static int * const flags[] = {
1058
0
            &hf_diameter_3gpp_feature_list1_sh_flags_spare_bits,
1059
0
            &hf_diameter_3gpp_feature_list1_sh_flags_bit3,
1060
0
            &hf_diameter_3gpp_feature_list1_sh_flags_bit2,
1061
0
            &hf_diameter_3gpp_feature_list1_sh_flags_bit1,
1062
0
            &hf_diameter_3gpp_feature_list1_sh_flags_bit0,
1063
0
            NULL
1064
0
        };
1065
1066
0
        proto_tree_add_bitmask_with_flags(tree, tvb, offset, hf_diameter_3gpp_feature_list_flags, ett_diameter_3gpp_feature_list, flags, ENC_BIG_ENDIAN, BMT_NO_APPEND);
1067
0
        }
1068
0
        break;
1069
0
    case DIAM_APPID_3GPP_S6A_S6D:
1070
0
        if (feature_list_id == 1) {
1071
            /* 3GPP TS 29.272 Table 7.3.10/1: Features of Feature-List-ID 1 used in S6a/S6d */
1072
0
            static int * const flags[] = {
1073
0
                &hf_diameter_3gpp_feature_list1_s6a_flags_bit31,
1074
0
                &hf_diameter_3gpp_feature_list1_s6a_flags_bit30,
1075
0
                &hf_diameter_3gpp_feature_list1_s6a_flags_bit29,
1076
0
                &hf_diameter_3gpp_feature_list1_s6a_flags_bit28,
1077
0
                &hf_diameter_3gpp_feature_list1_s6a_flags_bit27,
1078
0
                &hf_diameter_3gpp_feature_list1_s6a_flags_bit26,
1079
0
                &hf_diameter_3gpp_feature_list1_s6a_flags_bit25,
1080
0
                &hf_diameter_3gpp_feature_list1_s6a_flags_bit24,
1081
0
                &hf_diameter_3gpp_feature_list1_s6a_flags_bit23,
1082
0
                &hf_diameter_3gpp_feature_list1_s6a_flags_bit22,
1083
0
                &hf_diameter_3gpp_feature_list1_s6a_flags_bit21,
1084
0
                &hf_diameter_3gpp_feature_list1_s6a_flags_bit20,
1085
0
                &hf_diameter_3gpp_feature_list1_s6a_flags_bit19,
1086
0
                &hf_diameter_3gpp_feature_list1_s6a_flags_bit18,
1087
0
                &hf_diameter_3gpp_feature_list1_s6a_flags_bit17,
1088
0
                &hf_diameter_3gpp_feature_list1_s6a_flags_bit16,
1089
0
                &hf_diameter_3gpp_feature_list1_s6a_flags_bit15,
1090
0
                &hf_diameter_3gpp_feature_list1_s6a_flags_bit14,
1091
0
                &hf_diameter_3gpp_feature_list1_s6a_flags_bit13,
1092
0
                &hf_diameter_3gpp_feature_list1_s6a_flags_bit12,
1093
0
                &hf_diameter_3gpp_feature_list1_s6a_flags_bit11,
1094
0
                &hf_diameter_3gpp_feature_list1_s6a_flags_bit10,
1095
0
                &hf_diameter_3gpp_feature_list1_s6a_flags_bit9,
1096
0
                &hf_diameter_3gpp_feature_list1_s6a_flags_bit8,
1097
0
                &hf_diameter_3gpp_feature_list1_s6a_flags_bit7,
1098
0
                &hf_diameter_3gpp_feature_list1_s6a_flags_bit6,
1099
0
                &hf_diameter_3gpp_feature_list1_s6a_flags_bit5,
1100
0
                &hf_diameter_3gpp_feature_list1_s6a_flags_bit4,
1101
0
                &hf_diameter_3gpp_feature_list1_s6a_flags_bit3,
1102
0
                &hf_diameter_3gpp_feature_list1_s6a_flags_bit2,
1103
0
                &hf_diameter_3gpp_feature_list1_s6a_flags_bit1,
1104
0
                &hf_diameter_3gpp_feature_list1_s6a_flags_bit0,
1105
0
                NULL
1106
0
            };
1107
1108
0
            proto_tree_add_bitmask_with_flags(tree, tvb, offset, hf_diameter_3gpp_feature_list_flags, ett_diameter_3gpp_feature_list, flags, ENC_BIG_ENDIAN, BMT_NO_APPEND);
1109
0
        }
1110
0
        else if (feature_list_id == 2) {
1111
            /* 3GPP TS 29.272 Table 7.3.10/2: Features of Feature-List-ID 2 used in S6a/S6d */
1112
0
            static int * const flags[] = {
1113
0
                &hf_diameter_3gpp_feature_list2_s6a_flags_spare_bits,
1114
0
                &hf_diameter_3gpp_feature_list2_s6a_flags_bit30,
1115
0
                &hf_diameter_3gpp_feature_list2_s6a_flags_bit29,
1116
0
                &hf_diameter_3gpp_feature_list2_s6a_flags_bit28,
1117
0
                &hf_diameter_3gpp_feature_list2_s6a_flags_bit27,
1118
0
                &hf_diameter_3gpp_feature_list2_s6a_flags_bit26,
1119
0
                &hf_diameter_3gpp_feature_list2_s6a_flags_bit25,
1120
0
                &hf_diameter_3gpp_feature_list2_s6a_flags_bit24,
1121
0
                &hf_diameter_3gpp_feature_list2_s6a_flags_bit23,
1122
0
                &hf_diameter_3gpp_feature_list2_s6a_flags_bit22,
1123
0
                &hf_diameter_3gpp_feature_list2_s6a_flags_bit21,
1124
0
                &hf_diameter_3gpp_feature_list2_s6a_flags_bit20,
1125
0
                &hf_diameter_3gpp_feature_list2_s6a_flags_bit19,
1126
0
                &hf_diameter_3gpp_feature_list2_s6a_flags_bit18,
1127
0
                &hf_diameter_3gpp_feature_list2_s6a_flags_bit17,
1128
0
                &hf_diameter_3gpp_feature_list2_s6a_flags_bit16,
1129
0
                &hf_diameter_3gpp_feature_list2_s6a_flags_bit15,
1130
0
                &hf_diameter_3gpp_feature_list2_s6a_flags_bit14,
1131
0
                &hf_diameter_3gpp_feature_list2_s6a_flags_bit13,
1132
0
                &hf_diameter_3gpp_feature_list2_s6a_flags_bit12,
1133
0
                &hf_diameter_3gpp_feature_list2_s6a_flags_bit11,
1134
0
                &hf_diameter_3gpp_feature_list2_s6a_flags_bit10,
1135
0
                &hf_diameter_3gpp_feature_list2_s6a_flags_bit9,
1136
0
                &hf_diameter_3gpp_feature_list2_s6a_flags_bit8,
1137
0
                &hf_diameter_3gpp_feature_list2_s6a_flags_bit7,
1138
0
                &hf_diameter_3gpp_feature_list2_s6a_flags_bit6,
1139
0
                &hf_diameter_3gpp_feature_list2_s6a_flags_bit5,
1140
0
                &hf_diameter_3gpp_feature_list2_s6a_flags_bit4,
1141
0
                &hf_diameter_3gpp_feature_list2_s6a_flags_bit3,
1142
0
                &hf_diameter_3gpp_feature_list2_s6a_flags_bit2,
1143
0
                &hf_diameter_3gpp_feature_list2_s6a_flags_bit1,
1144
0
                &hf_diameter_3gpp_feature_list2_s6a_flags_bit0,
1145
0
                NULL
1146
0
            };
1147
1148
0
            proto_tree_add_bitmask_with_flags(tree, tvb, offset, hf_diameter_3gpp_feature_list_flags, ett_diameter_3gpp_feature_list, flags, ENC_BIG_ENDIAN, BMT_NO_APPEND);
1149
0
        }
1150
0
        break;
1151
0
    case DIAM_APPID_3GPP_GX: /* 3GPP TS 29.212 V15.1.0 (2017-12) */
1152
0
        if (feature_list_id == 1) {
1153
            /* 3GPP TS 29.212 Table 5.4.1.1: Features of Feature-List-ID 1 used in Gx */
1154
0
            static int * const flags[] = {
1155
0
                &hf_diameter_3gpp_feature_list1_gx_flags_bit31,
1156
0
                &hf_diameter_3gpp_feature_list1_gx_flags_bit30,
1157
0
                &hf_diameter_3gpp_feature_list1_gx_flags_bit29,
1158
0
                &hf_diameter_3gpp_feature_list1_gx_flags_bit28,
1159
0
                &hf_diameter_3gpp_feature_list1_gx_flags_bit27,
1160
0
                &hf_diameter_3gpp_feature_list1_gx_flags_bit26,
1161
0
                &hf_diameter_3gpp_feature_list1_gx_flags_bit25,
1162
0
                &hf_diameter_3gpp_feature_list1_gx_flags_bit24,
1163
0
                &hf_diameter_3gpp_feature_list1_gx_flags_bit23,
1164
0
                &hf_diameter_3gpp_feature_list1_gx_flags_bit22,
1165
0
                &hf_diameter_3gpp_feature_list1_gx_flags_bit21,
1166
0
                &hf_diameter_3gpp_feature_list1_gx_flags_bit20,
1167
0
                &hf_diameter_3gpp_feature_list1_gx_flags_bit19,
1168
0
                &hf_diameter_3gpp_feature_list1_gx_flags_bit18,
1169
0
                &hf_diameter_3gpp_feature_list1_gx_flags_bit17,
1170
0
                &hf_diameter_3gpp_feature_list1_gx_flags_bit16,
1171
0
                &hf_diameter_3gpp_feature_list1_gx_flags_bit15,
1172
0
                &hf_diameter_3gpp_feature_list1_gx_flags_bit14,
1173
0
                &hf_diameter_3gpp_feature_list1_gx_flags_bit13,
1174
0
                &hf_diameter_3gpp_feature_list1_gx_flags_bit12,
1175
0
                &hf_diameter_3gpp_feature_list1_gx_flags_bit11,
1176
0
                &hf_diameter_3gpp_feature_list1_gx_flags_bit10,
1177
0
                &hf_diameter_3gpp_feature_list1_gx_flags_bit9,
1178
0
                &hf_diameter_3gpp_feature_list1_gx_flags_bit8,
1179
0
                &hf_diameter_3gpp_feature_list1_gx_flags_bit7,
1180
0
                &hf_diameter_3gpp_feature_list1_gx_flags_bit6,
1181
0
                &hf_diameter_3gpp_feature_list1_gx_flags_bit5,
1182
0
                &hf_diameter_3gpp_feature_list1_gx_flags_bit4,
1183
0
                &hf_diameter_3gpp_feature_list1_gx_flags_bit3,
1184
0
                &hf_diameter_3gpp_feature_list1_gx_flags_bit2,
1185
0
                &hf_diameter_3gpp_feature_list1_gx_flags_bit1,
1186
0
                &hf_diameter_3gpp_feature_list1_gx_flags_bit0,
1187
0
                NULL
1188
0
            };
1189
1190
0
            proto_tree_add_bitmask_with_flags(tree, tvb, offset, hf_diameter_3gpp_feature_list_gx_flags,
1191
0
                ett_diameter_3gpp_feature_list, flags, ENC_BIG_ENDIAN, BMT_NO_APPEND);
1192
0
        }
1193
0
        else if (feature_list_id == 2) {
1194
            /* 3GPP TS 29.212 Table 5.4.1.2: Features of Feature-List-ID 2 used in Gx */
1195
0
            static int * const flags[] = {
1196
0
                &hf_diameter_3gpp_feature_list2_gx_flags_bit7,
1197
0
                &hf_diameter_3gpp_feature_list2_gx_flags_bit6,
1198
0
                &hf_diameter_3gpp_feature_list2_gx_flags_bit5,
1199
0
                &hf_diameter_3gpp_feature_list2_gx_flags_bit4,
1200
0
                &hf_diameter_3gpp_feature_list2_gx_flags_bit3,
1201
0
                &hf_diameter_3gpp_feature_list2_gx_flags_bit2,
1202
0
                &hf_diameter_3gpp_feature_list2_gx_flags_bit1,
1203
0
                &hf_diameter_3gpp_feature_list2_gx_flags_bit0,
1204
0
                NULL
1205
0
            };
1206
1207
0
            proto_tree_add_bitmask_with_flags(tree, tvb, offset, hf_diameter_3gpp_feature_list_gx_flags,
1208
0
                ett_diameter_3gpp_feature_list, flags, ENC_BIG_ENDIAN, BMT_NO_APPEND);
1209
0
        }
1210
0
        break;
1211
0
    case DIAM_APPID_3GPP_SD: /* 3GPP TS 29.212 V14.0.0 (2016-09) */
1212
0
        proto_tree_add_bitmask_with_flags(tree, tvb, 0, hf_diameter_3gpp_feature_list_sd_flags,
1213
0
            ett_diameter_3gpp_feature_list, diameter_3gpp_sd_feature_list_fields, ENC_BIG_ENDIAN, BMT_NO_APPEND);
1214
0
        break;
1215
0
    case DIAM_APPID_3GPP_S6T:
1216
0
    {
1217
0
        static int * const flags[] = {
1218
0
            &hf_diameter_3gpp_feature_list_s6t_spare_b31_b10,
1219
0
            &hf_diameter_3gpp_feature_list_s6t_flags_bit9,
1220
0
            &hf_diameter_3gpp_feature_list_s6t_flags_bit8,
1221
0
            &hf_diameter_3gpp_feature_list_s6t_flags_bit7,
1222
0
            &hf_diameter_3gpp_feature_list_s6t_flags_bit6,
1223
0
            &hf_diameter_3gpp_feature_list_s6t_flags_bit5,
1224
0
            &hf_diameter_3gpp_feature_list_s6t_flags_bit4,
1225
0
            &hf_diameter_3gpp_feature_list_s6t_flags_bit3,
1226
0
            &hf_diameter_3gpp_feature_list_s6t_flags_bit2,
1227
0
            &hf_diameter_3gpp_feature_list_s6t_flags_bit1,
1228
0
            &hf_diameter_3gpp_feature_list_s6t_flags_bit0,
1229
0
            NULL
1230
0
        };
1231
1232
0
        proto_tree_add_bitmask_with_flags(tree, tvb, 0, hf_diameter_3gpp_feature_list_s6t_flags,
1233
0
            ett_diameter_3gpp_feature_list, flags, ENC_BIG_ENDIAN, BMT_NO_APPEND);
1234
0
    }
1235
0
        break;
1236
0
    case DIAM_APPID_3GPP_SWX:
1237
0
    {
1238
        /* 3GPP TS 29.273 Table 8.2.3.16/1: Features of Feature-List-ID 1 used in SWx */
1239
0
        static int * const flags[] = {
1240
0
            &hf_diameter_3gpp_feature_list_swx_flags_bit6,
1241
0
            &hf_diameter_3gpp_feature_list_swx_flags_bit5,
1242
0
            &hf_diameter_3gpp_feature_list_swx_flags_bit4,
1243
0
            &hf_diameter_3gpp_feature_list_swx_flags_bit3,
1244
0
            &hf_diameter_3gpp_feature_list_swx_flags_bit2,
1245
0
            &hf_diameter_3gpp_feature_list_swx_flags_bit1,
1246
0
            &hf_diameter_3gpp_feature_list_swx_flags_bit0,
1247
0
            NULL
1248
0
        };
1249
1250
0
        proto_tree_add_bitmask_with_flags(tree, tvb, 0, hf_diameter_3gpp_feature_list_swx_flags,
1251
0
            ett_diameter_3gpp_feature_list, flags, ENC_BIG_ENDIAN, BMT_NO_APPEND);
1252
0
    }
1253
0
        break;
1254
0
    case DIAM_APPID_3GPP_S6B:
1255
0
    {
1256
        /* 3GPP TS 29.273 Table 9.2.3.5/1: Features of Feature-List-ID 1 used in S6b */
1257
0
        static int * const flags[] = {
1258
0
            &hf_diameter_3gpp_feature_list_s6b_flags_bit0,
1259
0
            NULL
1260
0
        };
1261
1262
0
        proto_tree_add_bitmask_with_flags(tree, tvb, 0, hf_diameter_3gpp_feature_list_s6b_flags,
1263
0
            ett_diameter_3gpp_feature_list, flags, ENC_BIG_ENDIAN, BMT_NO_APPEND);
1264
0
    }
1265
0
        break;
1266
1267
0
    case DIAM_APPID_3GPP_S6C:
1268
0
    {
1269
        /* 3GPP TS 29.338 Table 5.3.3.13/1: Features of Feature-List-ID 1 used in S6c */
1270
0
        static int * const flags[] = {
1271
0
            &hf_diameter_3gpp_feature_list_s6c_flags_bit0,
1272
0
            NULL
1273
0
        };
1274
1275
0
        proto_tree_add_bitmask_with_flags(tree, tvb, 0, hf_diameter_3gpp_feature_list_s6c_flags,
1276
0
            ett_diameter_3gpp_feature_list, flags, ENC_BIG_ENDIAN, BMT_NO_APPEND);
1277
0
    }
1278
0
        break;
1279
1280
0
    default:
1281
        /* In case we end up here */
1282
0
        if (!save_hidden) {
1283
0
            proto_item_set_visible(diam_sub_dis_inf->item);
1284
0
        }
1285
0
        break;
1286
0
    }
1287
1288
0
    return 4;
1289
1290
0
}
1291
1292
/* AVP Code: 640 Path
1293
 * imscxdx.xml
1294
 * IMS Cx Dx AVPS 3GPP TS 29.229
1295
 * 6.3.47 Path AVP
1296
 * The Path AVP is of type OctetString and it contains a comma separated list of SIP proxies in the Path header as defined
1297
 * in IETF RFC 3327 [17].
1298
 */
1299
static int
1300
dissect_diameter_3gpp_path(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, void *data _U_)
1301
0
{
1302
0
    proto_tree *sub_tree;
1303
0
    unsigned offset = 0, comma_offset;
1304
0
    unsigned end_offset = tvb_reported_length(tvb) - 1;
1305
1306
0
    sub_tree = proto_tree_add_subtree(tree, tvb, offset, -1, ett_diameter_3gpp_path, NULL, "Paths");
1307
1308
0
    while (offset < end_offset) {
1309
0
        if(!tvb_find_uint8_remaining(tvb, offset, ',', &comma_offset)) {
1310
0
            proto_tree_add_item(sub_tree, hf_diameter_3gpp_path, tvb, offset, comma_offset, ENC_ASCII);
1311
0
            return end_offset;
1312
0
        }
1313
0
        proto_tree_add_item(sub_tree, hf_diameter_3gpp_path, tvb, offset, comma_offset, ENC_ASCII);
1314
0
        offset = comma_offset+1;
1315
0
    }
1316
1317
1318
0
    return tvb_reported_length(tvb);
1319
0
}
1320
1321
/* AVP Code: 641 Contact
1322
 * imscxdx.xml
1323
 * IMS Cx Dx AVPS 3GPP TS 29.229
1324
 * 6.3.48 Contact AVP
1325
 * The Contact AVP is of type OctetString and it contains the Contact Addresses and Parameters in the Contact header as
1326
 * defined in IETF RFC 3261.
1327
 */
1328
static int
1329
dissect_diameter_3gpp_contact(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, void *data _U_)
1330
0
{
1331
0
    proto_item *item;
1332
0
    unsigned offset = 0;
1333
1334
0
    item = proto_tree_add_item(tree, hf_diameter_3gpp_contact, tvb, offset, -1, ENC_ASCII);
1335
0
    proto_item_set_generated(item);
1336
1337
0
    return tvb_reported_length(tvb);
1338
0
}
1339
1340
/* AVP Code: 701 MSISDN */
1341
static int
1342
dissect_diameter_3gpp_msisdn(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data _U_)
1343
0
{
1344
0
    unsigned offset = 0;
1345
0
    int length = tvb_reported_length(tvb);
1346
1347
0
    dissect_e164_msisdn(tvb, pinfo, tree, offset, length, E164_ENC_BCD);
1348
1349
0
    return length;
1350
0
}
1351
1352
/* AVP Code: 655 SAR-Flags
1353
* TGPP.xml
1354
* IMS Cx Dx AVPS 3GPP TS 29.229
1355
*/
1356
1357
static int * const diameter_3gpp_sar_fields[] = {
1358
    &hf_diameter_3gpp_sar_flags_flags_bit0,
1359
    NULL
1360
};
1361
1362
static int
1363
dissect_diameter_3gpp_sar_flags(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, void *data)
1364
0
{
1365
1366
0
    diam_sub_dis_t* diam_sub_dis_inf = (diam_sub_dis_t*)data;
1367
1368
    /* Hide the item created in packet-diameter.c and only show the one created here */
1369
0
    proto_item_set_hidden(diam_sub_dis_inf->item);
1370
1371
0
    proto_tree_add_bitmask_with_flags(tree, tvb, 0, hf_diameter_3gpp_sar_flags,
1372
0
        ett_diameter_3gpp_sar_flags, diameter_3gpp_sar_fields, ENC_BIG_ENDIAN, BMT_NO_APPEND);
1373
1374
0
    return 4;
1375
0
}
1376
1377
/* AVP Code: 702 User-Data
1378
 * TGPPSh.xml
1379
 * The AVP codes from 709 to799 are reserved for TS 29.329
1380
 */
1381
/* AVP Code: 606 User-Data
1382
 * imscxdx.xml
1383
 * IMS Cx Dx AVPS 3GPP TS 29.229
1384
 */
1385
static int
1386
dissect_diameter_3gpp_user_data(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data _U_)
1387
0
{
1388
0
    int length = tvb_reported_length(tvb);
1389
1390
    /* If there is less than 38 characters this is not XML
1391
     * <?xml version="1.0" encoding="UTF-8"?>
1392
     */
1393
0
    if(length < 38)
1394
0
        return length;
1395
1396
0
    if (tvb_strncaseeql(tvb, 0, "<?xml", 5) == 0 && xml_handle) {
1397
0
        call_dissector(xml_handle, tvb, pinfo, tree);
1398
0
    }
1399
1400
0
    return length;
1401
1402
0
}
1403
1404
/*
1405
 * AVP Code: 713 Requested-Nodes
1406
 */
1407
1408
static int
1409
dissect_diameter_3gpp_req_nodes(tvbuff_t* tvb, packet_info* pinfo _U_, proto_tree* tree, void* data)
1410
0
{
1411
1412
0
    static int* const diameter_3gpp_req_nodes_fields[] = {
1413
0
    &hf_diameter_3gpp_req_nodes_bit3,
1414
0
    &hf_diameter_3gpp_req_nodes_bit2,
1415
0
    &hf_diameter_3gpp_req_nodes_bit1,
1416
0
    &hf_diameter_3gpp_req_nodes_bit0,
1417
0
    NULL
1418
0
    };
1419
1420
0
    diam_sub_dis_t* diam_sub_dis_inf = (diam_sub_dis_t*)data;
1421
1422
    /* Hide the item created in packet-diameter.c and only show the one created here */
1423
0
    proto_item_set_hidden(diam_sub_dis_inf->item);
1424
1425
    /* Change to BMT_NO_FALSE if the list gets to long(?)*/
1426
0
    proto_tree_add_bitmask_with_flags(tree, tvb, 0, hf_diameter_3gpp_req_nodes,
1427
0
        ett_diameter_3gpp_req_nodes, diameter_3gpp_req_nodes_fields, ENC_BIG_ENDIAN, BMT_NO_FALSE);
1428
1429
0
    return 4;
1430
0
}
1431
1432
1433
/* AVP Code: 900 TMGI */
1434
static int
1435
dissect_diameter_3gpp_tmgi(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data _U_)
1436
0
{
1437
0
    proto_item *item;
1438
0
    proto_tree *sub_tree;
1439
0
    unsigned offset = 0;
1440
1441
0
    item = proto_tree_add_item(tree, hf_diameter_3gpp_tmgi, tvb, offset, 6, ENC_NA);
1442
0
    sub_tree = proto_item_add_subtree(item,ett_diameter_3gpp_tmgi);
1443
1444
    /* MBMS Service ID consisting of three octets. MBMS Service ID consists of a 6-digit
1445
     * fixed-length hexadecimal number between 000000 and FFFFFF.
1446
     * MBMS Service ID uniquely identifies an MBMS bearer service within a PLMN.
1447
     */
1448
1449
0
    proto_tree_add_item(sub_tree, hf_diameter_mbms_service_id, tvb, offset, 3, ENC_BIG_ENDIAN);
1450
0
    offset = offset+3;
1451
0
    offset = dissect_e212_mcc_mnc(tvb, pinfo, sub_tree, offset, E212_NONE, true);
1452
1453
0
    return offset;
1454
1455
0
}
1456
1457
/* AVP Code: 903 MBMS-Service-Area */
1458
1459
/* AVP Code: 917 MBMS-GGSN-IPv6-Address */
1460
static int
1461
dissect_diameter_3gpp_ipv6addr(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, void *data _U_)
1462
0
{
1463
0
    unsigned offset = 0;
1464
1465
0
    proto_tree_add_item(tree, hf_diameter_3gpp_ipv6addr, tvb, offset, 16, ENC_NA);
1466
1467
0
    offset += 16;
1468
1469
0
    return offset;
1470
0
}
1471
1472
1473
/* AVP Code: 918 MBMS-BMSC-SSM-IP-Address */
1474
static int
1475
dissect_diameter_3gpp_ipaddr(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, void *data _U_)
1476
0
{
1477
0
    unsigned offset = 0;
1478
1479
0
    proto_tree_add_item(tree, hf_diameter_3gpp_ipaddr, tvb, offset, 4, ENC_BIG_ENDIAN);
1480
0
    offset += 4;
1481
1482
0
    return offset;
1483
1484
0
}
1485
1486
/* AVP Code: 909 RAI AVP
1487
 * 17.7.12 RAI AVP
1488
 * The RAI AVP (AVP Code 909) is of type UTF8String, and contains the Routing Area Identity of the SGSN where the
1489
 * UE is registered. RAI use and structure is specified in 3GPP TS 23.003 [40].
1490
 * Its value shall be encoded as a UTF-8 string on either 11 (if the MNC contains two digits) or 12 (if the MNC contains
1491
 * three digits) octets as follows:
1492
 * - The MCC shall be encoded first using three UTF-8 characters on three octets, each character representing a
1493
 * decimal digit starting with the first MCC digit.
1494
 * - Then, the MNC shall be encoded as either two or three UTF-8 characters on two or three octets, each character
1495
 * representing a decimal digit starting with the first MNC digit.
1496
 * - The Location Area Code (LAC) is encoded next using four UTF-8 characters on four octets, each character
1497
 * representing a hexadecimal digit of the LAC which is two binary octets long.
1498
 * - The Routing Area Code (RAC) is encoded last using two UTF-8 characters on two octets, each character
1499
 * representing a hexadecimal digit of the RAC which is one binary octet long.
1500
 * NOTE: As an example, a RAI with the following information: MCC=123, MNC=45, LAC=41655(0xA2C1) and
1501
 * RAC=10(0x0A) is encoded within the RAI AVP as a UTF-8 string of "12345A2C10A".
1502
 */
1503
1504
static int
1505
dissect_diameter_3gpp_rai(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree _U_, void *data)
1506
0
{
1507
0
    diam_sub_dis_t *diam_sub_dis = (diam_sub_dis_t*)data;
1508
0
    unsigned length;
1509
1510
0
    length = tvb_reported_length(tvb);
1511
1512
0
    if(length==12) {
1513
0
        diam_sub_dis->avp_str = wmem_strdup_printf(pinfo->pool, "MCC %s, MNC %s, LAC 0x%s, RAC 0x%s",
1514
0
            tvb_get_string_enc(pinfo->pool, tvb,  0, 3, ENC_UTF_8|ENC_NA), /* MCC 3 digits */
1515
0
            tvb_get_string_enc(pinfo->pool, tvb,  3, 3, ENC_UTF_8|ENC_NA), /* MNC 3 digits */
1516
0
            tvb_get_string_enc(pinfo->pool, tvb,  6, 4, ENC_UTF_8|ENC_NA), /* LCC 4 digits */
1517
0
            tvb_get_string_enc(pinfo->pool, tvb, 10, 2, ENC_UTF_8|ENC_NA)  /* RAC 2 digits */
1518
0
            );
1519
0
    } else {
1520
0
        diam_sub_dis->avp_str = wmem_strdup_printf(pinfo->pool, "MCC %s, MNC %s, LAC 0x%s, RAC 0x%s",
1521
0
            tvb_get_string_enc(pinfo->pool, tvb,  0, 3, ENC_UTF_8|ENC_NA), /* MCC 3 digits */
1522
0
            tvb_get_string_enc(pinfo->pool, tvb,  3, 2, ENC_UTF_8|ENC_NA), /* MNC 2 digits */
1523
0
            tvb_get_string_enc(pinfo->pool, tvb,  5, 4, ENC_UTF_8|ENC_NA), /* LCC 4 digits */
1524
0
            tvb_get_string_enc(pinfo->pool, tvb,  9, 2, ENC_UTF_8|ENC_NA)  /* RAC 2 digits */
1525
0
            );
1526
0
    }
1527
1528
0
    return length;
1529
1530
0
}
1531
/* AVP Code: 913 MBMS-Required-QoS */
1532
static int
1533
dissect_diameter_3gpp_mbms_required_qos(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data _U_)
1534
0
{
1535
0
    unsigned offset = 0;
1536
0
    unsigned length;
1537
1538
    /* Octet
1539
     * 1        Allocation/Retention Priority as specified in 3GPP TS 23.107.
1540
     *          This octet encodes each priority level defined in 3GPP TS 23.107
1541
     *          as the binary value of the priority level. It specifies the relative
1542
     *          importance of the actual MBMS bearer service compared to other MBMS
1543
     *          and non-MBMS bearer services for allocation and retention of the
1544
     *          MBMS bearer service.
1545
     * 2-N      QoS Profile as specified by the Quality-of-Service information element,
1546
     *          from octet 3 onwards, in 3GPP TS 24.008
1547
     */
1548
0
    proto_tree_add_item(tree, hf_diameter_3gpp_mbms_required_qos_prio, tvb, offset, 1, ENC_BIG_ENDIAN);
1549
0
    offset++;
1550
0
    length = tvb_reported_length(tvb) - 1;
1551
0
    de_sm_qos(tvb, tree,  pinfo, offset,length, NULL, 0);
1552
0
    return offset+length;
1553
1554
0
}
1555
1556
/* AVP Code: 926 MBMS-BMSC-SSM-UDP-Port */
1557
/* AVP Code: 927 MBMS-GW-UDP-Port */
1558
static int
1559
dissect_diameter_3gpp_udp_port(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, void *data _U_)
1560
0
{
1561
0
    unsigned offset = 0;
1562
1563
0
    proto_tree_add_item(tree, hf_diameter_3gpp_udp_port, tvb, offset, 1, ENC_BIG_ENDIAN);
1564
1565
0
    offset += 1;
1566
1567
0
    return offset;
1568
0
}
1569
1570
/* AVP Code: 929 MBMS-Data-Transfer-Start */
1571
/* AVP Code: 930 MBMS-Data-Transfer-Stop */
1572
static int
1573
dissect_diameter_3gpp_mbms_abs_time_ofmbms_data_tfer(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, void *data _U_)
1574
0
{
1575
0
    unsigned offset = 0;
1576
1577
0
    proto_tree_add_item(tree, hf_diameter_3gpp_mbms_abs_time_ofmbms_data_tfer, tvb, offset, 8, ENC_TIME_NTP | ENC_BIG_ENDIAN);
1578
0
    offset+=8;
1579
1580
0
    return offset;
1581
0
}
1582
1583
/* AVP Code: 1082 Credit-Management-Status */
1584
static int
1585
dissect_diameter_3gpp_credit_management_status(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, void *data _U_)
1586
0
{
1587
0
    static int * const flags[] = {
1588
0
        &hf_diameter_3gpp_cms_spare_bits,
1589
0
        &hf_diameter_3gpp_cms_no_gyn_session_serv_not_allowed,
1590
0
        &hf_diameter_3gpp_cms_no_gyn_session_serv_allowed,
1591
0
        &hf_diameter_3gpp_cms_rating_failed,
1592
0
        &hf_diameter_3gpp_cms_user_unknown,
1593
0
        &hf_diameter_3gpp_cms_auth_rej,
1594
0
        &hf_diameter_3gpp_cms_credit_ctrl_not_applicable,
1595
0
        &hf_diameter_3gpp_cms_end_user_serv_status,
1596
0
        NULL
1597
0
    };
1598
1599
1600
0
    proto_tree *subtree = proto_tree_add_subtree(tree, tvb, 0, 4, ett_diameter_3gpp_cms, NULL, "Credit-Management-Status bit mask");
1601
0
    proto_tree_add_bitmask_list(subtree, tvb, 0, 4, flags, ENC_BIG_ENDIAN);
1602
0
    return 4;
1603
0
}
1604
1605
/* AVP Code: 1242 location estimate */
1606
static int
1607
dissect_diameter_3gpp_location_estimate(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data _U_)
1608
0
{
1609
0
    dissect_geographical_description(tvb, pinfo, tree);
1610
1611
0
    return tvb_reported_length(tvb);
1612
0
}
1613
1614
/* AVP Code: 1263 Access-Network-Information
1615
* 3GPP TS 32.299
1616
* The Access-Network-Information AVP (AVP code 1263) is of type OctetString
1617
* and indicates one instance of the SIP P-header "P-Access-Network-Info".
1618
* In SIP, as per RFC 7315 [404], the content of the "P-Access-Network-Info"
1619
* header is known as the access-net-spec.
1620
*/
1621
static int
1622
dissect_diameter_3gpp_access_network_information(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, void *data _U_)
1623
0
{
1624
0
    unsigned offset = 0;
1625
0
    int length = tvb_reported_length(tvb);
1626
1627
0
    dissect_sip_p_access_network_info_header(tvb, pinfo, tree, offset, length);
1628
1629
0
    return length;
1630
0
}
1631
1632
/* AVP Code: 1304 Secondary-RAT-Type
1633
* 3GPP TS 32.299
1634
*/
1635
static const value_string diameter_3gpp_secondary_rat_type_vals[] = {
1636
    { 0, "5G NR" },
1637
    { 0, NULL }
1638
};
1639
1640
static int
1641
dissect_diameter_3gpp_secondary_rat_type(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, void *data _U_)
1642
0
{
1643
0
    unsigned offset = 0;
1644
0
    int length = tvb_reported_length(tvb);
1645
1646
0
    proto_tree_add_item(tree, hf_diameter_3gpp_secondary_rat_type, tvb, offset, 1, ENC_BIG_ENDIAN);
1647
1648
0
    return length;
1649
0
}
1650
1651
/* Helper function returning the main bitrates in kbps */
1652
static uint32_t
1653
qos_calc_bitrate(uint8_t oct)
1654
0
{
1655
0
    if (oct <= 0x3f)
1656
0
        return oct;
1657
0
    if (oct <= 0x7f)
1658
0
        return 64 + (oct - 0x40) * 8;
1659
1660
0
    return 576 + (oct - 0x80) * 64;
1661
0
}
1662
1663
/* Helper function returning the extended bitrates in kbps */
1664
static uint32_t
1665
qos_calc_ext_bitrate(uint8_t oct)
1666
0
{
1667
0
    if (oct <= 0x4a)
1668
0
        return 8600 + oct * 100;
1669
0
    if (oct <= 0xba)
1670
0
        return 16000 + (oct - 0x4a) * 1000;
1671
1672
0
    return 128000 + (oct - 0xba) * 2000;
1673
0
}
1674
1675
1676
/* 3GPP TS 29.272
1677
 * 7.3.77 QoS-Subscribed
1678
 * AVP Code: 1404 QoS-Subscribed
1679
 *
1680
 * The QoS-Subscribed AVP is of type OctetString. Octets are coded according to 3GPP TS 29.002
1681
 * (octets of QoS-Subscribed, Ext-QoS-Subscribed, Ext2-QoS-Subscribed, Ext3-QoS-Subscribed and
1682
 * Ext4-QoS-Subscribed values are concatenated).
1683
 *
1684
 */
1685
static int
1686
dissect_diameter_3ggp_qos_susbscribed(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, void *data _U_)
1687
0
{
1688
0
    unsigned offset = 0;
1689
0
    unsigned length = tvb_reported_length(tvb);
1690
0
    proto_tree *subtree;
1691
0
    proto_item *item;
1692
0
    unsigned char oct, tmp_oct;
1693
0
    const char *str;
1694
0
    uint32_t tmp32;
1695
1696
0
    item = proto_tree_add_item(tree, hf_diameter_3gpp_qos_subscribed, tvb, offset, length, ENC_NA);
1697
0
    subtree = proto_item_add_subtree(item, ett_diameter_3gpp_qos_subscribed);
1698
1699
    /* QoS-Subscribed:: SIZE(3)
1700
    * 1-3   Octets are coded according to TS 3GPP TS 24.008 Quality of Service Octets 3-5
1701
    */
1702
0
    if (length >= 3) {
1703
0
        proto_tree_add_item(subtree, hf_diameter_3gpp_qos_reliability_cls, tvb, offset, 1, ENC_BIG_ENDIAN);
1704
0
        proto_tree_add_item(subtree, hf_diameter_3gpp_qos_delay_cls, tvb, offset, 1, ENC_BIG_ENDIAN);
1705
0
        proto_tree_add_bits_item(subtree, hf_diameter_3gpp_spare_bits, tvb, offset << 3, 2, ENC_BIG_ENDIAN);
1706
0
        offset += 1;
1707
1708
0
        proto_tree_add_item(subtree, hf_diameter_3gpp_qos_prec_class, tvb, offset, 1, ENC_BIG_ENDIAN);
1709
0
        proto_tree_add_bits_item(subtree, hf_diameter_3gpp_spare_bits, tvb, (offset << 3) + 4, 1, ENC_BIG_ENDIAN);
1710
0
        proto_tree_add_item(subtree, hf_diameter_3gpp_qos_peak_thr, tvb, offset, 1, ENC_BIG_ENDIAN);
1711
0
        offset += 1;
1712
1713
0
        proto_tree_add_item(subtree, hf_diameter_3gpp_qos_mean_thr, tvb, offset, 1, ENC_BIG_ENDIAN);
1714
0
        proto_tree_add_bits_item(subtree, hf_diameter_3gpp_spare_bits, tvb, (offset << 3), 3, ENC_BIG_ENDIAN);
1715
0
        offset += 1;
1716
0
    }
1717
1718
    /* Ext-QoS-Subscribed:: SIZE(1..9)
1719
    *   1   Allocation / Retention Priority (This octet encodes each priority level defined in
1720
    *           23.107 as the binary value of the priority level, declaration in 29.060).
1721
    * 2-9   Octets are coded according to 3GPP TS 24.008 Quality of Service Octets 6-13
1722
    */
1723
0
    if (length >= 4) {
1724
0
        proto_tree_add_item(subtree, hf_diameter_3gpp_qos_al_ret_priority, tvb, offset, 1, ENC_NA);
1725
0
        offset += 1;
1726
0
    }
1727
1728
0
    if (length >= 5) {
1729
0
        proto_tree_add_item(subtree, hf_diameter_3gpp_qos_del_of_err_sdu, tvb, offset, 1, ENC_BIG_ENDIAN);
1730
0
        proto_tree_add_item(subtree, hf_diameter_3gpp_qos_del_order, tvb, offset, 1, ENC_BIG_ENDIAN);
1731
0
        proto_tree_add_item(subtree, hf_diameter_3gpp_qos_traffic_cls, tvb, offset, 1, ENC_BIG_ENDIAN);
1732
0
        offset += 1;
1733
0
    }
1734
1735
0
    if (length >= 6) {
1736
0
        oct = tvb_get_uint8(tvb, offset);
1737
0
        switch (oct) {
1738
0
            case 0x00: str = "Subscribed maximum SDU size (MS to net); Reserved (net to MS)"; break;
1739
0
            case 0x97: str = "1502 octets"; break;
1740
0
            case 0x98: str = "1510 octets"; break;
1741
0
            case 0x99: str = "1520 octets"; break;
1742
0
            case 0xff: str = "Reserved"; break;
1743
0
            default:   str = "Unspecified/Reserved";
1744
0
        }
1745
1746
0
        if ((oct >= 1) && (oct <= 0x96))
1747
0
            proto_tree_add_uint_format_value(subtree, hf_diameter_3gpp_qos_maximum_sdu_size, tvb, offset, 1, oct, "%u octets (%u)", oct * 10, oct);
1748
0
        else
1749
0
            proto_tree_add_uint_format_value(subtree, hf_diameter_3gpp_qos_maximum_sdu_size, tvb, offset, 1, oct, "%s (%u)", str, oct);
1750
1751
0
        offset += 1;
1752
0
    }
1753
1754
0
    if (length >= 7) {
1755
0
        oct = tvb_get_uint8(tvb, offset);
1756
1757
0
        switch (oct) {
1758
0
            case 0x00: str = "Subscribed maximum bit rate for uplink (MS to net); Reserved (net to MS)"; break;
1759
0
            case 0xfe: str = "8640 kbps; Check extended"; break;
1760
0
            case 0xff: str = "0 kbps"; break;
1761
0
            default:   str = wmem_strdup_printf(pinfo->pool, "%u kbps", qos_calc_bitrate(oct));
1762
0
        }
1763
1764
0
        proto_tree_add_uint_format_value(subtree, hf_diameter_3gpp_qos_max_bitrate_upl, tvb, offset, 1, oct, "%s (%u)", str, oct);
1765
0
        offset += 1;
1766
0
    }
1767
1768
0
    if (length >= 8) {
1769
0
        oct = tvb_get_uint8(tvb, offset);
1770
1771
0
        switch (oct) {
1772
0
            case 0x00: str = "Subscribed maximum bit rate for downlink (MS to net); Reserved (net to MS)"; break;
1773
0
            case 0xfe: str = "8640 kbps; Check extended"; break;
1774
0
            case 0xff: str = "0 kbps"; break;
1775
0
            default:   str = wmem_strdup_printf(pinfo->pool, "%u kbps", qos_calc_bitrate(oct));
1776
0
        }
1777
1778
0
        proto_tree_add_uint_format_value(subtree, hf_diameter_3gpp_qos_max_bitrate_downl, tvb, offset, 1, oct, "%s (%u)", str, oct);
1779
0
        offset += 1;
1780
0
    }
1781
1782
0
    if (length >= 9) {
1783
0
        proto_tree_add_item(subtree, hf_diameter_3gpp_qos_sdu_err_rat, tvb, offset, 1, ENC_BIG_ENDIAN);
1784
0
        proto_tree_add_item(subtree, hf_diameter_3gpp_qos_ber, tvb, offset, 1, ENC_BIG_ENDIAN);
1785
0
        offset += 1;
1786
0
    }
1787
1788
0
    if (length >= 10) {
1789
0
        proto_tree_add_item(subtree, hf_diameter_3gpp_qos_traff_hdl_pri, tvb, offset, 1, ENC_BIG_ENDIAN);
1790
1791
0
        oct = tvb_get_uint8(tvb, offset);
1792
0
        tmp_oct = oct >> 2;
1793
0
        switch (tmp_oct) {
1794
0
            case 0x00: str = "Subscribed transfer delay (MS to net); Reserved (net to MS)"; break;
1795
0
            case 0x3f: str = "Reserved"; break;
1796
0
            default:
1797
0
                if (oct <= 0x0f)
1798
0
                    tmp32 = tmp_oct * 10;
1799
0
                else if (oct <= 0x1f)
1800
0
                    tmp32 = (tmp_oct - 0x10) * 50 + 200;
1801
0
                else
1802
0
                    tmp32 = (tmp_oct - 0x20) * 100 + 1000;
1803
0
                str = wmem_strdup_printf(pinfo->pool, "%u ms", tmp32);
1804
0
        }
1805
0
        proto_tree_add_uint_format_value(subtree, hf_diameter_3gpp_qos_trans_delay, tvb, offset, 1, oct, "%s (%u)", str, tmp_oct);
1806
0
        offset += 1;
1807
0
    }
1808
1809
0
    if (length >= 11) {
1810
0
        oct = tvb_get_uint8(tvb, offset);
1811
1812
0
        switch (oct) {
1813
0
        case 0x00: str = "Subscribed guaranteed bit rate for uplink (MS to net); Reserved (net to MS)"; break;
1814
0
        case 0xfe: str = "8640 kbps; Check extended"; break;
1815
0
        case 0xff: str = "0 kbps"; break;
1816
0
        default:   str = wmem_strdup_printf(pinfo->pool, "%u kbps", qos_calc_bitrate(oct));
1817
0
        }
1818
1819
0
        proto_tree_add_uint_format_value(subtree, hf_diameter_3gpp_qos_guar_bitrate_upl, tvb, offset, 1, oct, "%s (%u)", str, oct);
1820
0
        offset += 1;
1821
0
    }
1822
1823
0
    if (length >= 12) {
1824
0
        oct = tvb_get_uint8(tvb, offset);
1825
1826
0
        switch (oct) {
1827
0
        case 0x00: str = "Subscribed guaranteed bit rate for downlink (MS to net); Reserved (net to MS)"; break;
1828
0
        case 0xfe: str = "8640 kbps; Check extended"; break;
1829
0
        case 0xff: str = "0 kbps"; break;
1830
0
        default:   str = wmem_strdup_printf(pinfo->pool, "%u kbps", qos_calc_bitrate(oct));
1831
0
        }
1832
1833
0
        proto_tree_add_uint_format_value(subtree, hf_diameter_3gpp_qos_guar_bitrate_downl, tvb, offset, 1, oct, "%s (%u)", str, oct);
1834
0
        offset += 1;
1835
0
    }
1836
1837
    /* Ext2-QoS-Subscribed:: SIZE(1..3)
1838
    * 1-3   Octets are coded according to 3GPP TS 24.008 Quality of Service Octets 14-16
1839
    */
1840
0
    if (length >= 13) {
1841
0
        oct = tvb_get_uint8(tvb, offset);
1842
0
        tmp_oct = oct & 0x0f;
1843
0
        if (tmp_oct == 0x01)
1844
0
            str = "speech (MS to net); spare bits (net to MS)";
1845
0
        else
1846
0
            str = "unknown (MS to net); spare bits (net to MS)";
1847
1848
0
        proto_tree_add_uint_format_value(subtree, hf_diameter_3gpp_qos_source_stat_desc, tvb, offset, 1, oct, "%s (%u)", str, tmp_oct);
1849
0
        proto_tree_add_item(subtree, hf_diameter_3gpp_qos_signalling_ind, tvb, offset, 1, ENC_BIG_ENDIAN);
1850
0
        proto_tree_add_bits_item(subtree, hf_diameter_3gpp_spare_bits, tvb, (offset << 3), 3, ENC_BIG_ENDIAN);
1851
0
        offset += 1;
1852
0
    }
1853
1854
0
    if (length >= 14) {
1855
0
        oct = tvb_get_uint8(tvb, offset);
1856
1857
0
        if (oct == 0x00)
1858
0
            str = "Use the value indicated by the Maximum bit rate for downlink";
1859
0
        else if (oct > 0xfa)  /* shouldn't go past 256 MBps */
1860
0
            str = "undefined";
1861
0
        else if (oct == 0xfa)
1862
0
            str = "256 Mbps; Check extended 2";
1863
0
        else {
1864
0
            tmp32 = qos_calc_ext_bitrate(oct);
1865
0
            if (oct >= 0x4a)
1866
0
                str = wmem_strdup_printf(pinfo->pool, "%u Mbps", tmp32 / 1000);
1867
0
            else
1868
0
                str = wmem_strdup_printf(pinfo->pool, "%u kbps", tmp32);
1869
0
        }
1870
0
        proto_tree_add_uint_format_value(subtree, hf_diameter_3gpp_qos_max_bitrate_downl_ext, tvb, offset, 1, oct, "%s (%u)", str, oct);
1871
0
        offset += 1;
1872
0
    }
1873
1874
0
    if (length >= 15) {
1875
0
        oct = tvb_get_uint8(tvb, offset);
1876
1877
0
        if (oct == 0x00)
1878
0
            str = "Use the value indicated by the Guaranteed bit rate for downlink";
1879
0
        else if (oct > 0xfa)  /* shouldn't go past 256 MBps */
1880
0
            str = "undefined";
1881
0
        else if (oct == 0xfa)
1882
0
            str = "256 Mbps; Check extended 2";
1883
0
        else {
1884
0
            tmp32 = qos_calc_ext_bitrate(oct);
1885
0
            if (oct >= 0x4a)
1886
0
                str = wmem_strdup_printf(pinfo->pool, "%u Mbps", tmp32 / 1000);
1887
0
            else
1888
0
                str = wmem_strdup_printf(pinfo->pool, "%u kbps", tmp32);
1889
0
        }
1890
0
        proto_tree_add_uint_format_value(subtree, hf_diameter_3gpp_qos_guar_bitrate_downl_ext, tvb, offset, 1, oct, "%s (%u)", str, oct);
1891
0
        offset += 1;
1892
0
    }
1893
1894
    /* Ext3-QoS-Subscribed:: SIZE(1..2)
1895
    * 1-2   Octets are coded according to 3GPP TS 24.008 Quality of Service Octets 17-18
1896
    */
1897
0
    if (length >= 16) {
1898
0
        oct = tvb_get_uint8(tvb, offset);
1899
1900
0
        if (oct == 0x00)
1901
0
            str = "Use the value indicated by the Maximum bit rate for uplink";
1902
0
        else if (oct > 0xfa)  /* shouldn't go past 256 MBps */
1903
0
            str = "undefined";
1904
0
        else if (oct == 0xfa)
1905
0
            str = "256 Mbps; Check extended 2";
1906
0
        else {
1907
0
            tmp32 = qos_calc_ext_bitrate(oct);
1908
0
            if (oct >= 0x4a)
1909
0
                str = wmem_strdup_printf(pinfo->pool, "%u Mbps", tmp32 / 1000);
1910
0
            else
1911
0
                str = wmem_strdup_printf(pinfo->pool, "%u kbps", tmp32);
1912
0
        }
1913
0
        proto_tree_add_uint_format_value(subtree, hf_diameter_3gpp_qos_max_bitrate_upl_ext, tvb, offset, 1, oct, "%s (%u)", str, oct);
1914
0
        offset += 1;
1915
0
    }
1916
1917
0
    if (length >= 17) {
1918
0
        oct = tvb_get_uint8(tvb, offset);
1919
1920
0
        if (oct == 0x00)
1921
0
            str = "Use the value indicated by the Guaranteed bit rate for uplink";
1922
0
        else if (oct > 0xfa)  /* shouldn't go past 256 MBps */
1923
0
            str = "undefined";
1924
0
        else if (oct == 0xfa)
1925
0
            str = "256 Mbps; Check extended 2";
1926
0
        else {
1927
0
            tmp32 = qos_calc_ext_bitrate(oct);
1928
0
            if (oct >= 0x4a)
1929
0
                str = wmem_strdup_printf(pinfo->pool, "%u Mbps", tmp32 / 1000);
1930
0
            else
1931
0
                str = wmem_strdup_printf(pinfo->pool, "%u kbps", tmp32);
1932
0
        }
1933
0
        proto_tree_add_uint_format_value(subtree, hf_diameter_3gpp_qos_guar_bitrate_upl_ext, tvb, offset, 1, oct, "%s (%u)", str, oct);
1934
0
        offset += 1;
1935
0
    }
1936
1937
    /* Ext4-QoS-Subscribed:: SIZE(1)
1938
    *   1   Evolved Allocation / Retention Priority.  This octet encodes the Priority Level (PL),
1939
    *       the Preemption Capability (PCI) and Preemption Vulnerability (PVI) values, as described
1940
    *       in 3GPP TS 29.060.
1941
    */
1942
1943
0
    if (length >= 18) {
1944
0
        proto_tree_add_item(subtree, hf_diameter_3gpp_qos_pre_emption_vulnerability, tvb, offset, 1, ENC_BIG_ENDIAN);
1945
0
        proto_tree_add_bits_item(subtree, hf_diameter_3gpp_spare_bits, tvb, (offset << 3) + 6 , 1, ENC_BIG_ENDIAN);
1946
0
        proto_tree_add_item(subtree, hf_diameter_3gpp_qos_priority_level, tvb, offset, 1, ENC_BIG_ENDIAN);
1947
0
        proto_tree_add_item(subtree, hf_diameter_3gpp_qos_pre_emption_capability, tvb, offset, 1, ENC_BIG_ENDIAN);
1948
0
        proto_tree_add_bits_item(subtree, hf_diameter_3gpp_spare_bits, tvb, (offset << 3), 1, ENC_BIG_ENDIAN);
1949
        /*offset += 1;*/
1950
0
    }
1951
1952
0
    return length;
1953
0
}
1954
1955
/* 3GPP TS 29.272
1956
 * 7.3.7 ULR-Flags
1957
 * AVP Code: 1405 ULR-Flags
1958
 */
1959
static int
1960
dissect_diameter_3gpp_ulr_flags(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, void *data)
1961
0
{
1962
0
    static int * const flags[] = {
1963
0
        &hf_diameter_3gpp_ulr_flags_spare_bits,
1964
0
        &hf_diameter_3gpp_ulr_flags_bit8,
1965
0
        &hf_diameter_3gpp_ulr_flags_bit7,
1966
0
        &hf_diameter_3gpp_ulr_flags_bit6,
1967
0
        &hf_diameter_3gpp_ulr_flags_bit5,
1968
0
        &hf_diameter_3gpp_ulr_flags_bit4,
1969
0
        &hf_diameter_3gpp_ulr_flags_bit3,
1970
0
        &hf_diameter_3gpp_ulr_flags_bit2,
1971
0
        &hf_diameter_3gpp_ulr_flags_bit1,
1972
0
        &hf_diameter_3gpp_ulr_flags_bit0,
1973
0
        NULL
1974
0
    };
1975
1976
0
    diam_sub_dis_t* diam_sub_dis_inf = (diam_sub_dis_t*)data;
1977
1978
    /* Hide the item created in packet-diameter.c and only show the one created here */
1979
0
    proto_item_set_hidden(diam_sub_dis_inf->item);
1980
1981
0
    proto_tree_add_bitmask_with_flags(tree, tvb, 0, hf_diameter_3gpp_ulr_flags, ett_diameter_3gpp_ulr_flags, flags, ENC_BIG_ENDIAN, BMT_NO_APPEND);
1982
0
    return 4;
1983
0
}
1984
1985
/* AVP Code: 1406 ULA-Flags */
1986
static int
1987
dissect_diameter_3gpp_ula_flags(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, void *data)
1988
0
{
1989
0
    static int * const flags[] = {
1990
0
        &hf_diameter_3gpp_ula_flags_spare_bits,
1991
0
        &hf_diameter_3gpp_ula_flags_bit1,
1992
0
        &hf_diameter_3gpp_ula_flags_bit0,
1993
0
        NULL
1994
0
    };
1995
1996
0
    diam_sub_dis_t* diam_sub_dis_inf = (diam_sub_dis_t*)data;
1997
1998
    /* Hide the item created in packet-diameter.c and only show the one created here */
1999
0
    proto_item_set_hidden(diam_sub_dis_inf->item);
2000
2001
0
    proto_tree_add_bitmask_with_flags(tree, tvb, 0, hf_diameter_3gpp_ula_flags, ett_diameter_3gpp_ula_flags, flags, ENC_BIG_ENDIAN, BMT_NO_APPEND);
2002
0
    return 4;
2003
0
}
2004
2005
/* AVP Code: 1407 Visited-PLMN-Id */
2006
static int
2007
dissect_diameter_3gpp_visited_plmn_id(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data)
2008
0
{
2009
0
    int length = tvb_reported_length(tvb);
2010
0
    diam_sub_dis_t *diam_sub_dis = (diam_sub_dis_t*)data;
2011
2012
0
    if (length == 3) {
2013
0
        diam_sub_dis->avp_str = dissect_e212_mcc_mnc_wmem_packet_str(tvb, pinfo, tree, 0, E212_NONE, true);
2014
0
    } else {
2015
0
        proto_tree_add_expert(tree, pinfo, &ei_diameter_3gpp_plmn_id_wrong_len, tvb, 0, length);
2016
0
    }
2017
2018
0
    return length;
2019
0
}
2020
/*
2021
 * 3GPP TS 29.272
2022
 * 7.3.25 DSR-Flags
2023
 * AVP Code: 1421 DSR-Flags
2024
 */
2025
static int
2026
dissect_diameter_3gpp_dsr_flags(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, void *data)
2027
0
{
2028
0
    static int * const flags[] = {
2029
0
        &hf_diameter_3gpp_dsr_flags_bit31,
2030
0
        &hf_diameter_3gpp_dsr_flags_bit30,
2031
0
        &hf_diameter_3gpp_dsr_flags_bit29,
2032
0
        &hf_diameter_3gpp_dsr_flags_bit28,
2033
0
        &hf_diameter_3gpp_dsr_flags_bit27,
2034
0
        &hf_diameter_3gpp_dsr_flags_bit26,
2035
0
        &hf_diameter_3gpp_dsr_flags_bit25,
2036
0
        &hf_diameter_3gpp_dsr_flags_bit24,
2037
0
        &hf_diameter_3gpp_dsr_flags_bit23,
2038
0
        &hf_diameter_3gpp_dsr_flags_bit22,
2039
0
        &hf_diameter_3gpp_dsr_flags_bit21,
2040
0
        &hf_diameter_3gpp_dsr_flags_bit20,
2041
0
        &hf_diameter_3gpp_dsr_flags_bit19,
2042
0
        &hf_diameter_3gpp_dsr_flags_bit18,
2043
0
        &hf_diameter_3gpp_dsr_flags_bit17,
2044
0
        &hf_diameter_3gpp_dsr_flags_bit16,
2045
0
        &hf_diameter_3gpp_dsr_flags_bit15,
2046
0
        &hf_diameter_3gpp_dsr_flags_bit14,
2047
0
        &hf_diameter_3gpp_dsr_flags_bit13,
2048
0
        &hf_diameter_3gpp_dsr_flags_bit12,
2049
0
        &hf_diameter_3gpp_dsr_flags_bit11,
2050
0
        &hf_diameter_3gpp_dsr_flags_bit10,
2051
0
        &hf_diameter_3gpp_dsr_flags_bit9,
2052
0
        &hf_diameter_3gpp_dsr_flags_bit8,
2053
0
        &hf_diameter_3gpp_dsr_flags_bit7,
2054
0
        &hf_diameter_3gpp_dsr_flags_bit6,
2055
0
        &hf_diameter_3gpp_dsr_flags_bit5,
2056
0
        &hf_diameter_3gpp_dsr_flags_bit4,
2057
0
        &hf_diameter_3gpp_dsr_flags_bit3,
2058
0
        &hf_diameter_3gpp_dsr_flags_bit2,
2059
0
        &hf_diameter_3gpp_dsr_flags_bit1,
2060
0
        &hf_diameter_3gpp_dsr_flags_bit0,
2061
0
        NULL
2062
0
    };
2063
2064
0
    diam_sub_dis_t* diam_sub_dis_inf = (diam_sub_dis_t*)data;
2065
2066
    /* Hide the item created in packet-diameter.c and only show the one created here */
2067
0
    proto_item_set_hidden(diam_sub_dis_inf->item);
2068
2069
0
    proto_tree_add_bitmask_with_flags(tree, tvb, 0, hf_diameter_3gpp_dsr_flags, ett_diameter_3gpp_dsr_flags, flags, ENC_BIG_ENDIAN, BMT_NO_APPEND);
2070
0
    return 4;
2071
0
}
2072
2073
/* AVP Code: 1422 DSA-Flags */
2074
static int
2075
dissect_diameter_3gpp_dsa_flags(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, void *data)
2076
0
{
2077
0
    static int * const flags[] = {
2078
0
        &hf_diameter_3gpp_dsa_flags_spare_bits,
2079
0
        &hf_diameter_3gpp_dsa_flags_bit0,
2080
0
        NULL
2081
0
    };
2082
2083
0
    diam_sub_dis_t* diam_sub_dis_inf = (diam_sub_dis_t*)data;
2084
2085
    /* Hide the item created in packet-diameter.c and only show the one created here */
2086
0
    proto_item_set_hidden(diam_sub_dis_inf->item);
2087
2088
0
    proto_tree_add_bitmask_with_flags(tree, tvb, 0, hf_diameter_3gpp_dsa_flags, ett_diameter_3gpp_dsa_flags, flags, ENC_BIG_ENDIAN, BMT_NO_APPEND);
2089
0
    return 4;
2090
0
}
2091
2092
/* AVP Code: 1426 Access-Restriction-Data */
2093
static int
2094
dissect_diameter_3gpp_acc_res_data(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, void *data)
2095
0
{
2096
0
    static int * const flags[] = {
2097
0
        &hf_diameter_3gpp_acc_res_dat_flags_spare_bits,
2098
0
        &hf_diameter_3gpp_acc_res_dat_flags_bit12,
2099
0
        &hf_diameter_3gpp_acc_res_dat_flags_bit11,
2100
0
        &hf_diameter_3gpp_acc_res_dat_flags_bit10, /* NR in 5GS Not Allowed*/
2101
0
        &hf_diameter_3gpp_acc_res_dat_flags_bit9,
2102
0
        &hf_diameter_3gpp_acc_res_dat_flags_bit8,
2103
0
        &hf_diameter_3gpp_acc_res_dat_flags_bit7,
2104
0
        &hf_diameter_3gpp_acc_res_dat_flags_bit6,
2105
0
        &hf_diameter_3gpp_acc_res_dat_flags_bit5,
2106
0
        &hf_diameter_3gpp_acc_res_dat_flags_bit4,
2107
0
        &hf_diameter_3gpp_acc_res_dat_flags_bit3,
2108
0
        &hf_diameter_3gpp_acc_res_dat_flags_bit2,
2109
0
        &hf_diameter_3gpp_acc_res_dat_flags_bit1,
2110
0
        &hf_diameter_3gpp_acc_res_dat_flags_bit0,
2111
0
        NULL
2112
0
    };
2113
2114
0
    diam_sub_dis_t* diam_sub_dis_inf = (diam_sub_dis_t*)data;
2115
2116
    /* Hide the item created in packet-diameter.c and only show the one created here */
2117
0
    proto_item_set_hidden(diam_sub_dis_inf->item);
2118
2119
0
    proto_tree_add_bitmask_with_flags(tree, tvb, 0, hf_diameter_3gpp_acc_res_dat_flags, ett_diameter_3gpp_dsa_flags, flags, ENC_BIG_ENDIAN, BMT_NO_APPEND);
2120
0
    return 4;
2121
0
}
2122
2123
2124
/* AVP Code: 1441 IDA-Flags */
2125
static int
2126
dissect_diameter_3gpp_ida_flags(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, void *data _U_)
2127
0
{
2128
0
    static int * const flags[] = {
2129
0
        &hf_diameter_3gpp_ida_flags_spare_bits,
2130
0
        &hf_diameter_3gpp_ida_flags_bit0,
2131
0
        NULL
2132
0
    };
2133
2134
0
    proto_tree_add_bitmask_with_flags(tree, tvb, 0, hf_diameter_3gpp_ida_flags, ett_diameter_3gpp_ida_flags, flags, ENC_BIG_ENDIAN, BMT_NO_APPEND);
2135
0
    return 4;
2136
0
}
2137
2138
/* AVP Code: 1442 PUA-Flags */
2139
static int
2140
dissect_diameter_3gpp_pua_flags(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, void *data)
2141
0
{
2142
0
    static int * const flags[] = {
2143
0
        &hf_diameter_3gpp_pua_flags_spare_bits,
2144
0
        &hf_diameter_3gpp_pua_flags_bit1,
2145
0
        &hf_diameter_3gpp_pua_flags_bit0,
2146
0
        NULL
2147
0
    };
2148
2149
0
    diam_sub_dis_t* diam_sub_dis_inf = (diam_sub_dis_t*)data;
2150
2151
    /* Hide the item created in packet-diameter.c and only show the one created here */
2152
0
    proto_item_set_hidden(diam_sub_dis_inf->item);
2153
2154
0
    proto_tree_add_bitmask_with_flags(tree, tvb, 0, hf_diameter_3gpp_pua_flags, ett_diameter_3gpp_pua_flags, flags, ENC_BIG_ENDIAN, BMT_NO_APPEND);
2155
0
    return 4;
2156
0
}
2157
2158
/* AVP Code: 1443 NOR-Flags */
2159
static int
2160
dissect_diameter_3gpp_nor_flags(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, void *data)
2161
0
{
2162
0
    static int * const flags[] = {
2163
0
        &hf_diameter_3gpp_nor_flags_spare_bits,
2164
0
        &hf_diameter_3gpp_nor_flags_bit9,
2165
0
        &hf_diameter_3gpp_nor_flags_bit8,
2166
0
        &hf_diameter_3gpp_nor_flags_bit7,
2167
0
        &hf_diameter_3gpp_nor_flags_bit6,
2168
0
        &hf_diameter_3gpp_nor_flags_bit5,
2169
0
        &hf_diameter_3gpp_nor_flags_bit4,
2170
0
        &hf_diameter_3gpp_nor_flags_bit3,
2171
0
        &hf_diameter_3gpp_nor_flags_bit2,
2172
0
        &hf_diameter_3gpp_nor_flags_bit1,
2173
0
        &hf_diameter_3gpp_nor_flags_bit0,
2174
0
        NULL
2175
0
    };
2176
2177
0
    diam_sub_dis_t* diam_sub_dis_inf = (diam_sub_dis_t*)data;
2178
2179
    /* Hide the item created in packet-diameter.c and only show the one created here */
2180
0
    proto_item_set_hidden(diam_sub_dis_inf->item);
2181
2182
2183
0
    proto_tree_add_bitmask_with_flags(tree, tvb, 0, hf_diameter_3gpp_nor_flags, ett_diameter_3gpp_nor_flags, flags, ENC_BIG_ENDIAN, BMT_NO_APPEND);
2184
0
    return 4;
2185
0
}
2186
2187
/* AVP Code: 1474 GMLC-NUMBER */
2188
static int
2189
dissect_diameter_3gpp_isdn(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data _U_)
2190
0
{
2191
0
    unsigned offset = 0;
2192
0
    int length = tvb_reported_length(tvb);
2193
2194
0
    dissect_e164_isdn(tvb, pinfo, tree, offset, length, E164_ENC_BCD);
2195
2196
0
    return length;
2197
0
}
2198
2199
/* AVP Code: 1490 IDR-Flags */
2200
static int
2201
dissect_diameter_3gpp_idr_flags(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, void *data)
2202
0
{
2203
0
    static int * const flags[] = {
2204
0
        &hf_diameter_3gpp_idr_flags_spare_bits,
2205
0
        &hf_diameter_3gpp_idr_flags_bit8,
2206
0
        &hf_diameter_3gpp_idr_flags_bit7,
2207
0
        &hf_diameter_3gpp_idr_flags_bit6,
2208
0
        &hf_diameter_3gpp_idr_flags_bit5,
2209
0
        &hf_diameter_3gpp_idr_flags_bit4,
2210
0
        &hf_diameter_3gpp_idr_flags_bit3,
2211
0
        &hf_diameter_3gpp_idr_flags_bit2,
2212
0
        &hf_diameter_3gpp_idr_flags_bit1,
2213
0
        &hf_diameter_3gpp_idr_flags_bit0,
2214
0
        NULL
2215
0
    };
2216
2217
0
    diam_sub_dis_t* diam_sub_dis_inf = (diam_sub_dis_t*)data;
2218
2219
    /* Hide the item created in packet-diameter.c and only show the one created here */
2220
0
    proto_item_set_hidden(diam_sub_dis_inf->item);
2221
2222
0
    proto_tree_add_bitmask_with_flags(tree, tvb, 0, hf_diameter_3gpp_idr_flags, ett_diameter_3gpp_idr_flags, flags, ENC_BIG_ENDIAN, BMT_NO_APPEND);
2223
0
    return 4;
2224
0
}
2225
2226
/* AVP Code: 1508 PPR-Flags */
2227
static int
2228
dissect_diameter_3gpp_ppr_flags(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, void *data)
2229
0
{
2230
0
    static int * const flags[] = {
2231
0
        &hf_diameter_3gpp_ppr_flags_spare_bits,
2232
0
        &hf_diameter_3gpp_ppr_flags_bit3,
2233
0
        &hf_diameter_3gpp_ppr_flags_bit2,
2234
0
        &hf_diameter_3gpp_ppr_flags_bit1,
2235
0
        &hf_diameter_3gpp_ppr_flags_bit0,
2236
0
        NULL
2237
0
    };
2238
2239
0
    diam_sub_dis_t* diam_sub_dis_inf = (diam_sub_dis_t*)data;
2240
2241
    /* Hide the item created in packet-diameter.c and only show the one created here */
2242
0
    proto_item_set_hidden(diam_sub_dis_inf->item);
2243
2244
0
    proto_tree_add_bitmask_with_flags(tree, tvb, 0, hf_diameter_3gpp_ppr_flags, ett_diameter_3gpp_ppr_flags, flags, ENC_BIG_ENDIAN, BMT_NO_APPEND);
2245
0
    return 4;
2246
0
}
2247
2248
/* AVP Code: 1518 AAA-Failure-Indication */
2249
/* TGPP TS 29.273, v14.0.0 */
2250
static int
2251
dissect_diameter_3gpp_aaa_fail_flags(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, void *data)
2252
0
{
2253
0
    static int * const flags[] = {
2254
0
        &hf_diameter_3gpp_aaa_fail_flags_spare_bits,
2255
0
        &hf_diameter_3gpp_aaa_fail_flags_bit0,
2256
0
        NULL
2257
0
    };
2258
2259
0
    diam_sub_dis_t* diam_sub_dis_inf = (diam_sub_dis_t*)data;
2260
2261
    /* Hide the item created in packet-diameter.c and only show the one created here */
2262
0
    proto_item_set_hidden(diam_sub_dis_inf->item);
2263
2264
0
    proto_tree_add_bitmask_with_flags(tree, tvb, 0, hf_diameter_3gpp_aaa_fail_flags, ett_diameter_3gpp_aaa_fail_flags, flags, ENC_BIG_ENDIAN, BMT_NO_APPEND);
2265
0
    return 4;
2266
2267
0
}
2268
2269
/* AVP Code: 1520 DER-Flags */
2270
static int
2271
dissect_diameter_3gpp_der_flags(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, void *data)
2272
0
{
2273
0
    static int * const flags[] = {
2274
0
        &hf_diameter_3gpp_der_flags_spare_bits,
2275
0
        &hf_diameter_3gpp_der_flags_bit1,
2276
0
        &hf_diameter_3gpp_der_flags_bit0,
2277
0
        NULL
2278
0
    };
2279
2280
0
    diam_sub_dis_t* diam_sub_dis_inf = (diam_sub_dis_t*)data;
2281
2282
    /* Hide the item created in packet-diameter.c and only show the one created here */
2283
0
    proto_item_set_hidden(diam_sub_dis_inf->item);
2284
2285
0
    proto_tree_add_bitmask_with_flags(tree, tvb, 0, hf_diameter_3gpp_der_flags, ett_diameter_3gpp_der_flags, flags, ENC_BIG_ENDIAN, BMT_NO_APPEND);
2286
0
    return 4;
2287
0
}
2288
2289
/* AVP Code: 1521 DEA-Flags */
2290
static int
2291
dissect_diameter_3gpp_dea_flags(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, void *data)
2292
0
{
2293
0
    static int * const flags[] = {
2294
0
        &hf_diameter_3gpp_dea_flags_spare_bits,
2295
0
        &hf_diameter_3gpp_dea_flags_bit1,
2296
0
        &hf_diameter_3gpp_dea_flags_bit0,
2297
0
        NULL
2298
0
    };
2299
2300
0
    diam_sub_dis_t* diam_sub_dis_inf = (diam_sub_dis_t*)data;
2301
2302
    /* Hide the item created in packet-diameter.c and only show the one created here */
2303
0
    proto_item_set_hidden(diam_sub_dis_inf->item);
2304
2305
0
    proto_tree_add_bitmask_with_flags(tree, tvb, 0, hf_diameter_3gpp_dea_flags, ett_diameter_3gpp_dea_flags, flags, ENC_BIG_ENDIAN, BMT_NO_APPEND);
2306
0
    return 4;
2307
0
}
2308
2309
/* AVP Code: 1522 RAR-Flags */
2310
static int
2311
dissect_diameter_3gpp_rar_flags(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, void *data)
2312
0
{
2313
0
    static int * const flags[] = {
2314
0
        &hf_diameter_3gpp_rar_flags_spare_bits,
2315
0
        &hf_diameter_3gpp_rar_flags_bit1,
2316
0
        &hf_diameter_3gpp_rar_flags_bit0,
2317
0
        NULL
2318
0
    };
2319
2320
0
    diam_sub_dis_t* diam_sub_dis_inf = (diam_sub_dis_t*)data;
2321
2322
    /* Hide the item created in packet-diameter.c and only show the one created here */
2323
0
    proto_item_set_hidden(diam_sub_dis_inf->item);
2324
2325
0
    proto_tree_add_bitmask_with_flags(tree, tvb, 0, hf_diameter_3gpp_rar_flags, ett_diameter_3gpp_rar_flags, flags, ENC_BIG_ENDIAN, BMT_NO_APPEND);
2326
0
    return 4;
2327
0
}
2328
2329
/* AVP Code: 1523 DER-S6b-Flags */
2330
static int
2331
dissect_diameter_3gpp_der_s6b_flags(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, void *data)
2332
0
{
2333
0
    static int * const flags[] = {
2334
0
        &hf_diameter_3gpp_der_s6b_flags_spare_bits,
2335
0
        &hf_diameter_3gpp_der_s6b_flags_bit0,
2336
0
        NULL
2337
0
    };
2338
2339
0
    diam_sub_dis_t* diam_sub_dis_inf = (diam_sub_dis_t*)data;
2340
2341
    /* Hide the item created in packet-diameter.c and only show the one created here */
2342
0
    proto_item_set_hidden(diam_sub_dis_inf->item);
2343
2344
2345
0
    proto_tree_add_bitmask_with_flags(tree, tvb, 0, hf_diameter_3gpp_der_s6b_flags, ett_diameter_3gpp_der_s6b_flags, flags, ENC_BIG_ENDIAN, BMT_NO_APPEND);
2346
0
    return 4;
2347
0
}
2348
2349
/* AVP Code: 1538 Emergency-Services */
2350
static int
2351
dissect_diameter_3gpp_emergency_services(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, void *data)
2352
0
{
2353
0
    static int * const flags[] = {
2354
0
        &hf_diameter_3gpp_emergency_services_flags_spare_bits,
2355
0
        &hf_diameter_3gpp_emergency_services_flags_bit0,
2356
0
        NULL
2357
0
    };
2358
2359
0
    diam_sub_dis_t* diam_sub_dis_inf = (diam_sub_dis_t*)data;
2360
2361
    /* Hide the item created in packet-diameter.c and only show the one created here */
2362
0
    proto_item_set_hidden(diam_sub_dis_inf->item);
2363
2364
0
    proto_tree_add_bitmask_with_flags(tree, tvb, 0, hf_diameter_3gpp_emergency_services_flags, ett_diameter_3gpp_emergency_services_flags, flags, ENC_BIG_ENDIAN, BMT_NO_APPEND);
2365
0
    return 4;
2366
2367
0
}
2368
2369
/* 3GPP TS 29.272
2370
* 7.3.149 PUR-Flags
2371
* AVP Code: 1635 PUR-Flags
2372
*/
2373
static int
2374
dissect_diameter_3gpp_pur_flags(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, void *data)
2375
0
{
2376
0
    static int * const flags[] = {
2377
0
        &hf_diameter_3gpp_pur_flags_spare_bits,
2378
0
        &hf_diameter_3gpp_pur_flags_bit1,
2379
0
        &hf_diameter_3gpp_pur_flags_bit0,
2380
0
        NULL
2381
0
    };
2382
2383
0
    diam_sub_dis_t* diam_sub_dis_inf = (diam_sub_dis_t*)data;
2384
2385
    /* Hide the item created in packet-diameter.c and only show the one created here */
2386
0
    proto_item_set_hidden(diam_sub_dis_inf->item);
2387
2388
2389
0
    proto_tree_add_bitmask_with_flags(tree, tvb, 0, hf_diameter_3gpp_pur_flags, ett_diameter_3gpp_pur_flags, flags, ENC_BIG_ENDIAN, BMT_NO_APPEND);
2390
0
    return 4;
2391
0
}
2392
2393
/* 3GPP TS 29.272
2394
* 7.3.152 CLR-Flag
2395
* AVP Code: 1638 CLR-Flag
2396
*/
2397
static int
2398
dissect_diameter_3gpp_clr_flags(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, void *data)
2399
0
{
2400
0
    static int * const flags[] = {
2401
0
        &hf_diameter_3gpp_clr_flags_spare_bits,
2402
0
        &hf_diameter_3gpp_clr_flags_bit1,
2403
0
        &hf_diameter_3gpp_clr_flags_bit0,
2404
0
        NULL
2405
0
    };
2406
2407
0
    diam_sub_dis_t* diam_sub_dis_inf = (diam_sub_dis_t*)data;
2408
2409
    /* Hide the item created in packet-diameter.c and only show the one created here */
2410
0
    proto_item_set_hidden(diam_sub_dis_inf->item);
2411
2412
0
    proto_tree_add_bitmask_with_flags(tree, tvb, 0, hf_diameter_3gpp_clr_flags, ett_diameter_3gpp_clr_flags, flags, ENC_BIG_ENDIAN, BMT_NO_APPEND);
2413
0
    return 4;
2414
0
}
2415
2416
/* 3GPP TS 29.272
2417
* 7.3.153 UVR-Flags
2418
* AVP Code: 1639 UVR-Flags
2419
*/
2420
static int
2421
dissect_diameter_3gpp_uvr_flags(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, void *data)
2422
0
{
2423
0
    static int * const flags[] = {
2424
0
        &hf_diameter_3gpp_uvr_flags_spare_bits,
2425
0
        &hf_diameter_3gpp_uvr_flags_bit0,
2426
0
        NULL
2427
0
    };
2428
2429
0
    diam_sub_dis_t* diam_sub_dis_inf = (diam_sub_dis_t*)data;
2430
2431
    /* Hide the item created in packet-diameter.c and only show the one created here */
2432
0
    proto_item_set_hidden(diam_sub_dis_inf->item);
2433
2434
0
    proto_tree_add_bitmask_with_flags(tree, tvb, 0, hf_diameter_3gpp_uvr_flags, ett_diameter_3gpp_uvr_flags, flags, ENC_BIG_ENDIAN, BMT_NO_APPEND);
2435
0
    return 4;
2436
0
}
2437
2438
/* 3GPP TS 29.272
2439
* 7.3.154 UVA-Flags
2440
* AVP Code: 1640 UVA-Flags
2441
*/
2442
static int
2443
dissect_diameter_3gpp_uva_flags(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, void *data)
2444
0
{
2445
0
    static int * const flags[] = {
2446
0
        &hf_diameter_3gpp_uva_flags_spare_bits,
2447
0
        &hf_diameter_3gpp_uva_flags_bit0,
2448
0
        NULL
2449
0
    };
2450
2451
0
    diam_sub_dis_t* diam_sub_dis_inf = (diam_sub_dis_t*)data;
2452
2453
    /* Hide the item created in packet-diameter.c and only show the one created here */
2454
0
    proto_item_set_hidden(diam_sub_dis_inf->item);
2455
2456
0
    proto_tree_add_bitmask_with_flags(tree, tvb, 0, hf_diameter_3gpp_uva_flags, ett_diameter_3gpp_uva_flags, flags, ENC_BIG_ENDIAN, BMT_NO_APPEND);
2457
0
    return 4;
2458
0
}
2459
2460
/* 3GPP TS 29.272
2461
* 7.3.159 MME-Number-for-MT-SMS
2462
* AVP Code: 1645 MME-Number-for-MT-SMS
2463
*/
2464
static int
2465
dissect_diameter_3gpp_mme_number_for_mt_sms(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data _U_)
2466
0
{
2467
0
    unsigned offset = 0;
2468
0
    int length = tvb_reported_length(tvb);
2469
2470
0
    dissect_e164_isdn(tvb, pinfo, tree, offset, length, E164_ENC_BCD);
2471
2472
0
    return length;
2473
0
}
2474
2475
/* 3GPP TS 29.272
2476
* 7.3.165 Subscription-Data-Flags
2477
* AVP Code: 1654 Subscription-Data-Flags
2478
*/
2479
static int
2480
dissect_diameter_3gpp_subscription_data_flags(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, void *data)
2481
0
{
2482
0
    static int * const flags[] = {
2483
0
        &hf_diameter_3gpp_subscription_data_flags_spare_bits,
2484
0
        &hf_diameter_3gpp_subscription_data_flags_bit3,
2485
0
        &hf_diameter_3gpp_subscription_data_flags_bit2,
2486
0
        &hf_diameter_3gpp_subscription_data_flags_bit1,
2487
0
        &hf_diameter_3gpp_subscription_data_flags_bit0,
2488
0
        NULL
2489
0
    };
2490
2491
0
    diam_sub_dis_t* diam_sub_dis_inf = (diam_sub_dis_t*)data;
2492
2493
    /* Hide the item created in packet-diameter.c and only show the one created here */
2494
0
    proto_item_set_hidden(diam_sub_dis_inf->item);
2495
2496
0
    proto_tree_add_bitmask_with_flags(tree, tvb, 0, hf_diameter_3gpp_subscription_data_flags, ett_diameter_3gpp_subscription_data_flags, flags, ENC_BIG_ENDIAN, BMT_NO_APPEND);
2497
0
    return 4;
2498
0
}
2499
2500
/* 3GPP TS 29.272
2501
* 7.3.182 WLAN-offloadability-EUTRAN
2502
* AVP Code: 1668 WLAN-offloadability-EUTRAN
2503
*/
2504
static int
2505
dissect_diameter_3gpp_wlan_offloadability_eutran(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, void *data)
2506
0
{
2507
0
    static int * const flags[] = {
2508
0
        &hf_diameter_3gpp_wlan_offloadability_eutran_spare_bits,
2509
0
        &hf_diameter_3gpp_wlan_offloadability_eutran_bit0,
2510
0
        NULL
2511
0
    };
2512
2513
0
    diam_sub_dis_t* diam_sub_dis_inf = (diam_sub_dis_t*)data;
2514
2515
    /* Hide the item created in packet-diameter.c and only show the one created here */
2516
0
    proto_item_set_hidden(diam_sub_dis_inf->item);
2517
2518
0
    proto_tree_add_bitmask_with_flags(tree, tvb, 0, hf_diameter_3gpp_wlan_offloadability_eutran, ett_diameter_3gpp_wlan_offloadability_eutran, flags, ENC_BIG_ENDIAN, BMT_NO_APPEND);
2519
0
    return 4;
2520
0
}
2521
2522
/* 3GPP TS 29.272
2523
* 7.3.183 WLAN-offloadability-EUTRAN
2524
* AVP Code: 1669 WLAN-offloadability-EUTRAN
2525
*/
2526
static int
2527
dissect_diameter_3gpp_wlan_offloadability_utran(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, void *data)
2528
0
{
2529
0
    static int * const flags[] = {
2530
0
        &hf_diameter_3gpp_wlan_offloadability_utran_spare_bits,
2531
0
        &hf_diameter_3gpp_wlan_offloadability_utran_bit0,
2532
0
        NULL
2533
0
    };
2534
2535
0
    diam_sub_dis_t* diam_sub_dis_inf = (diam_sub_dis_t*)data;
2536
2537
    /* Hide the item created in packet-diameter.c and only show the one created here */
2538
0
    proto_item_set_hidden(diam_sub_dis_inf->item);
2539
2540
0
    proto_tree_add_bitmask_with_flags(tree, tvb, 0, hf_diameter_3gpp_wlan_offloadability_utran, ett_diameter_3gpp_wlan_offloadability_utran, flags, ENC_BIG_ENDIAN, BMT_NO_APPEND);
2541
0
    return 4;
2542
0
}
2543
2544
/* 3GPP TS 29.272
2545
* 7.3.191 Group-PLMN-Id
2546
* AVP Code: 1677 Group-PLMN-Id
2547
*/
2548
static int
2549
dissect_diameter_3gpp_group_plmn_id(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data)
2550
0
{
2551
0
    int length = tvb_reported_length(tvb);
2552
0
    diam_sub_dis_t *diam_sub_dis = (diam_sub_dis_t*)data;
2553
2554
0
    if (length == 3) {
2555
0
        diam_sub_dis->avp_str = dissect_e212_mcc_mnc_wmem_packet_str(tvb, pinfo, tree, 0, E212_NONE, true);
2556
0
    } else {
2557
0
        proto_tree_add_expert(tree, pinfo, &ei_diameter_3gpp_plmn_id_wrong_len, tvb, 0, length);
2558
0
    }
2559
2560
0
    return length;
2561
0
}
2562
2563
2564
/* 3GPP TS 29.272
2565
* 7.3.201 AIR-Flags
2566
* AVP Code: 1679 AIR-Flags
2567
*/
2568
static int
2569
dissect_diameter_3gpp_air_flags(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, void *data)
2570
0
{
2571
0
    static int * const flags[] = {
2572
0
        &hf_diameter_3gpp_air_flags_spare_bits,
2573
0
        &hf_diameter_3gpp_air_flags_bit0,
2574
0
        NULL
2575
0
    };
2576
2577
0
    diam_sub_dis_t* diam_sub_dis_inf = (diam_sub_dis_t*)data;
2578
2579
    /* Hide the item created in packet-diameter.c and only show the one created here */
2580
0
    proto_item_set_hidden(diam_sub_dis_inf->item);
2581
2582
0
    proto_tree_add_bitmask_with_flags(tree, tvb, 0, hf_diameter_3gpp_air_flags, ett_diameter_3gpp_air_flags, flags, ENC_BIG_ENDIAN, BMT_NO_APPEND);
2583
0
    return 4;
2584
0
}
2585
2586
/* 3GPP TS 29.272
2587
* 7.3.209 Preferred-Data-Mode
2588
* AVP Code: 1686 Preferred-Data-Mode
2589
*/
2590
static int
2591
dissect_diameter_3gpp_preferred_data_mode(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, void *data)
2592
0
{
2593
0
    static int * const flags[] = {
2594
0
        &hf_diameter_3gpp_preferred_data_mode_spare_bits,
2595
0
        &hf_diameter_3gpp_preferred_data_mode_bit1,
2596
0
        &hf_diameter_3gpp_preferred_data_mode_bit0,
2597
0
        NULL
2598
0
    };
2599
2600
0
    diam_sub_dis_t* diam_sub_dis_inf = (diam_sub_dis_t*)data;
2601
2602
    /* Hide the item created in packet-diameter.c and only show the one created here */
2603
0
    proto_item_set_hidden(diam_sub_dis_inf->item);
2604
2605
0
    proto_tree_add_bitmask_with_flags(tree, tvb, 0, hf_diameter_3gpp_preferred_data_mode, ett_diameter_3gpp_preferred_data_mode, flags, ENC_BIG_ENDIAN, BMT_NO_APPEND);
2606
0
    return 4;
2607
0
}
2608
2609
/* 3GPP TS 29.272
2610
* 7.3.212 V2X-Permission
2611
* AVP Code: 1689 V2X-Permission
2612
*/
2613
static int
2614
dissect_diameter_3gpp_v2x_permission(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, void *data)
2615
0
{
2616
0
    static int * const flags[] = {
2617
0
        &hf_diameter_3gpp_v2x_permission_spare_bits,
2618
0
        &hf_diameter_3gpp_v2x_permission_bit1,
2619
0
        &hf_diameter_3gpp_v2x_permission_bit0,
2620
0
        NULL
2621
0
    };
2622
2623
0
    diam_sub_dis_t* diam_sub_dis_inf = (diam_sub_dis_t*)data;
2624
2625
    /* Hide the item created in packet-diameter.c and only show the one created here */
2626
0
    proto_item_set_hidden(diam_sub_dis_inf->item);
2627
2628
0
    proto_tree_add_bitmask_with_flags(tree, tvb, 0, hf_diameter_3gpp_v2x_permission, ett_diameter_3gpp_v2x_permission, flags, ENC_BIG_ENDIAN, BMT_NO_APPEND);
2629
0
    return 4;
2630
0
}
2631
2632
/* 3GPP TS 29.272
2633
* 7.3.230 Core-Network-Restrictions
2634
* AVP Code: 1704 Core-Network-Restrictions
2635
*/
2636
int
2637
dissect_diameter_3gpp_core_network_restrictions(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, void *data)
2638
2
{
2639
2
    static int * const flags[] = {
2640
2
        &hf_diameter_3gpp_core_network_restrictions_spare_bits,
2641
2
        &hf_diameter_3gpp_core_network_restrictions_bit1,
2642
2
        &hf_diameter_3gpp_core_network_restrictions_bit0,
2643
2
        NULL
2644
2
    };
2645
2646
2
    if(data){
2647
0
        diam_sub_dis_t* diam_sub_dis_inf = (diam_sub_dis_t*)data;
2648
2649
        /* Hide the item created in packet-diameter.c and only show the one created here */
2650
0
        proto_item_set_hidden(diam_sub_dis_inf->item);
2651
0
    }
2652
2
    proto_tree_add_bitmask_with_flags(tree, tvb, 0, hf_diameter_3gpp_core_network_restrictions, ett_diameter_3gpp_core_network_restrictions, flags, ENC_BIG_ENDIAN, BMT_NO_APPEND);
2653
2
    return 4;
2654
2
}
2655
2656
/* AVP Code: 2403 MSC-Number */
2657
static int
2658
dissect_diameter_3gpp_msc_number(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data _U_)
2659
0
{
2660
0
    unsigned offset = 0;
2661
0
    int length = tvb_reported_length(tvb);
2662
2663
0
    dissect_e164_isdn(tvb, pinfo, tree, offset, length, E164_ENC_BCD);
2664
2665
0
    return length;
2666
0
}
2667
2668
/* AVP Code: 2510 Supported-GAD-Shapes */
2669
static int
2670
dissect_diameter_3gpp_supported_gad_shapes(tvbuff_t* tvb, packet_info* pinfo _U_, proto_tree* tree, void* data)
2671
0
{
2672
0
    static int* const flags[] = {
2673
0
        &hf_diameter_3gpp_highaccuracyellipsoidpointwithaltitudeandscalableuncertaintyellipsoid_bit10,
2674
0
        &hf_diameter_3gpp_highaccuracyellipsoidpointwithscalableuncertaintyellipse_bit9,
2675
0
        &hf_diameter_3gpp_highaccuracyellipsoidpointwithaltitudeanduncertaintyellipsoid_bit8,
2676
0
        &hf_diameter_3gpp_highaccuracyellipsoidpointwithuncertaintyellipse_bit7,
2677
0
        &hf_diameter_3gpp_ellipsoidarc_bit6,
2678
0
        &hf_diameter_3gpp_ellipsoidpointwithaltitudeanduncertaintyelipsoid_bit5,
2679
0
        &hf_diameter_3gpp_ellipsoidpointwithaltitude_bit4,
2680
0
        &hf_diameter_3gpp_polygon_bit3,
2681
0
        &hf_diameter_3gpp_ellipsoidpointwithuncertaintyellipse_bit2,
2682
0
        &hf_diameter_3gpp_ellipsoidpointwithuncertaintycircle_bit1,
2683
0
        &hf_diameter_3gpp_ellipsoidpoint_bit0,
2684
0
        NULL
2685
0
    };
2686
2687
0
    diam_sub_dis_t* diam_sub_dis_inf = (diam_sub_dis_t*)data;
2688
2689
    /* Hide the item created in packet-diameter.c and only show the one created here */
2690
0
    proto_item_set_hidden(diam_sub_dis_inf->item);
2691
2692
0
    proto_tree_add_bitmask_with_flags(tree, tvb, 0, hf_diameter_3gpp_supported_gad_shapes, ett_diameter_3gpp_supported_gad_shapes, flags, ENC_BIG_ENDIAN, BMT_NO_APPEND);
2693
2694
0
    return 4;
2695
0
}
2696
2697
/* AVP Code: 2516 EUTRAN-Positioning-Data */
2698
static int
2699
dissect_diameter_3gpp_eutran_positioning_data(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data _U_)
2700
0
{
2701
0
    return dissect_lcsap_Positioning_Data_PDU(tvb, pinfo, tree, NULL);
2702
0
}
2703
2704
/* AVP Code: 2530 LRR-Flags */
2705
/*
2706
    static int * const flags[] = {
2707
        &hf_diameter_3gpp_lrr_flags_spare_bits,
2708
        &hf_diameter_3gpp_mo_lr_shortcircuit_req_bit2,
2709
        &hf_diameter_3gpp_mo_lr_shortcircuit_ind_bit1,
2710
        &hf_diameter_3gpp_Lgd_SLg_Ind_bit0,
2711
        NULL
2712
    };
2713
2714
*/
2715
/* AVP Code: 2532 Deferred-Location-Type */
2716
static int
2717
dissect_diameter_3gpp_deferred_location_type(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, void *data)
2718
0
{
2719
0
    static int * const flags[] = {
2720
0
        &hf_diameter_3gpp_deferred_location_type_spare_bits,
2721
0
        &hf_diameter_3gpp_maximum_interval_exporation_bit7,
2722
0
        &hf_diameter_3gpp_ldr_activated_bit6,
2723
0
        &hf_diameter_3gpp_motion_event_bit5,
2724
0
        &hf_diameter_3gpp_periodic_ldr_bit4,
2725
0
        &hf_diameter_3gpp_being_inside_area_bit3,
2726
0
        &hf_diameter_3gpp_leaving_from_area_bit2,
2727
0
        &hf_diameter_3gpp_entering_into_area_bit1,
2728
0
        &hf_diameter_3gpp_ue_available_bit0,
2729
0
        NULL
2730
0
    };
2731
2732
0
    diam_sub_dis_t* diam_sub_dis_inf = (diam_sub_dis_t*)data;
2733
2734
    /* Hide the item created in packet-diameter.c and only show the one created here */
2735
0
    proto_item_set_hidden(diam_sub_dis_inf->item);
2736
2737
0
    proto_tree_add_bitmask_with_flags(tree, tvb, 0, hf_diameter_3gpp_deferred_location_type, ett_diameter_3gpp_deferred_location_type, flags, ENC_BIG_ENDIAN, BMT_NO_APPEND);
2738
2739
0
    return 4;
2740
0
}
2741
2742
/* AVP Code: 2545 PLR-Flags */
2743
static int
2744
dissect_diameter_3gpp_plr_flags(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, void *data)
2745
0
{
2746
0
    static int * const flags[] = {
2747
0
        &hf_diameter_3gpp_plr_flags_spare_bits,
2748
0
        &hf_diameter_3gpp_delayed_location_reporting_support_indicator_bit2,
2749
0
        &hf_diameter_3gpp_optimized_lcs_proc_req_bit1,
2750
0
        &hf_diameter_3gpp_mo_lr_shortcircuit_indicator_bit0,
2751
0
        NULL
2752
0
    };
2753
2754
0
    diam_sub_dis_t* diam_sub_dis_inf = (diam_sub_dis_t*)data;
2755
2756
    /* Hide the item created in packet-diameter.c and only show the one created here */
2757
0
    proto_item_set_hidden(diam_sub_dis_inf->item);
2758
2759
0
    proto_tree_add_bitmask_with_flags(tree, tvb, 0, hf_diameter_3gpp_plr_flags, ett_diameter_3gpp_plr_flags, flags, ENC_BIG_ENDIAN, BMT_NO_APPEND);
2760
0
    return 4;
2761
0
}
2762
2763
/* AVP Code: 2546 PLA-Flags */
2764
static int
2765
dissect_diameter_3gpp_pla_flags(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, void *data)
2766
0
{
2767
0
    static int * const flags[] = {
2768
0
        &hf_diameter_3gpp_pla_flags_spare_bits,
2769
0
        &hf_diameter_3gpp_ue_transiently_not_reachable_indicator_bit3,
2770
0
        &hf_diameter_3gpp_optimized_lcs_proc_performed_bit2,
2771
0
        &hf_diameter_3gpp_mo_lr_shortcircuit_indicator_bit1,
2772
0
        &hf_diameter_3gpp_deferred_mt_lr_response_indicator_bit0,
2773
0
        NULL
2774
0
    };
2775
2776
0
    diam_sub_dis_t* diam_sub_dis_inf = (diam_sub_dis_t*)data;
2777
2778
    /* Hide the item created in packet-diameter.c and only show the one created here */
2779
0
    proto_item_set_hidden(diam_sub_dis_inf->item);
2780
2781
0
    proto_tree_add_bitmask_with_flags(tree, tvb, 0, hf_diameter_3gpp_pla_flags, ett_diameter_3gpp_pla_flags, flags, ENC_BIG_ENDIAN, BMT_NO_APPEND);
2782
0
    return 4;
2783
0
}
2784
2785
2786
/* AVP Code: 2556 Civic-Address */
2787
static int
2788
dissect_diameter_3gpp_civic_address(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data _U_)
2789
0
{
2790
0
    int length = tvb_reported_length(tvb);
2791
2792
    /* If there is less than 38 characters this is not XML
2793
     * <?xml version="1.0" encoding="UTF-8"?>
2794
     */
2795
0
    if(length < 38)
2796
0
        return length;
2797
2798
0
    if (tvb_strncaseeql(tvb, 0, "<?xml", 5) == 0 && xml_handle) {
2799
0
        call_dissector(xml_handle, tvb, pinfo, tree);
2800
0
    }
2801
2802
0
    return length;
2803
0
}
2804
2805
/* AVP Code: 2819 RAN-NAS-Release-Cause*/
2806
2807
static const value_string ran_nas_prot_type_vals[] = {
2808
    { 1, "S1AP Cause" },
2809
    { 2, "EMM Cause" },
2810
    { 3, "ESM Cause" },
2811
    { 4, "Diameter Cause" },
2812
    { 5, "IKEv2 Cause" },
2813
    { 0, NULL}
2814
};
2815
2816
static int
2817
dissect_diameter_3gpp_ran_nas_release_cause(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, void *data _U_)
2818
0
{
2819
0
    unsigned offset = 0;
2820
0
    int length = tvb_reported_length(tvb);
2821
0
    uint8_t octet = tvb_get_uint8(tvb, offset);
2822
0
    uint8_t proto_type = (octet >> 4);
2823
0
    int cause_type = 0;
2824
2825
0
    proto_tree_add_item(tree, hf_diameter_3gpp_ran_nas_protocol_type, tvb, offset, 1, ENC_BIG_ENDIAN);
2826
2827
0
    if (proto_type == 1) {
2828
0
        proto_tree_add_item(tree, hf_diameter_3gpp_ran_nas_cause_type, tvb, offset, 1, ENC_BIG_ENDIAN);
2829
0
        cause_type = octet & 0x0F;
2830
0
    }
2831
0
    offset += 1;
2832
2833
0
    switch (proto_type) {
2834
0
        case 1:
2835
0
                switch (cause_type) {
2836
0
                        case 0:
2837
0
                                proto_tree_add_item(tree, hf_diameter_3gpp_s1ap_radio_network, tvb, offset, 1, ENC_BIG_ENDIAN);
2838
0
                                break;
2839
0
                        case 1:
2840
0
                                proto_tree_add_item(tree, hf_diameter_3gpp_s1ap_transport, tvb, offset, 1, ENC_BIG_ENDIAN);
2841
0
                                break;
2842
0
                        case 2:
2843
0
                                proto_tree_add_item(tree, hf_diameter_3gpp_s1ap_nas, tvb, offset, 1, ENC_BIG_ENDIAN);
2844
0
                                break;
2845
0
                        case 3:
2846
0
                                proto_tree_add_item(tree, hf_diameter_3gpp_s1ap_protocol, tvb, offset, 1, ENC_BIG_ENDIAN);
2847
0
                                break;
2848
0
                        case 4:
2849
0
                                proto_tree_add_item(tree, hf_diameter_3gpp_s1ap_misc, tvb, offset, 1, ENC_BIG_ENDIAN);
2850
0
                                break;
2851
0
                        default:
2852
0
                                proto_tree_add_item(tree, hf_diameter_3gpp_ran_nas_cause_value, tvb, offset, 1, ENC_BIG_ENDIAN);
2853
0
                }
2854
0
                offset += 1;
2855
0
                break;
2856
0
        case 2:
2857
0
                proto_tree_add_item(tree, hf_diameter_3gpp_emm_cause, tvb, offset, 1, ENC_BIG_ENDIAN);
2858
0
                offset += 1;
2859
0
                break;
2860
0
        case 3:
2861
0
                proto_tree_add_item(tree, hf_diameter_3gpp_esm_cause, tvb, offset, 1, ENC_BIG_ENDIAN);
2862
0
                offset += 1;
2863
0
                break;
2864
0
        case 4:
2865
0
                proto_tree_add_item(tree, hf_diameter_3gpp_diameter_cause, tvb, offset, 2, ENC_BIG_ENDIAN);
2866
0
                offset += 2;
2867
0
                break;
2868
0
        case 5:
2869
0
                proto_tree_add_item(tree, hf_diameter_3gpp_ikev2_cause, tvb, offset, 2, ENC_BIG_ENDIAN);
2870
0
                offset += 2;
2871
0
                break;
2872
0
        default:
2873
0
                proto_tree_add_item(tree, hf_diameter_3gpp_ran_nas_cause_value, tvb, offset, length - offset, ENC_BIG_ENDIAN);
2874
0
                offset += (length - offset);
2875
0
                break;
2876
0
    }
2877
2878
0
    return offset;
2879
0
}
2880
2881
/* AVP Code: 3144 Supported-Monitoring-Events*/
2882
static int
2883
dissect_diameter_3gpp_supported_monitoring_events(tvbuff_t* tvb, packet_info* pinfo _U_, proto_tree* tree, void* data)
2884
0
{
2885
    /* Unsigned64 */
2886
0
    static int* const flags[] = {
2887
0
        &hf_diameter_3gpp_supported_monitoring_events_b8,
2888
0
        &hf_diameter_3gpp_supported_monitoring_events_b7,
2889
0
        &hf_diameter_3gpp_supported_monitoring_events_b6,
2890
0
        &hf_diameter_3gpp_supported_monitoring_events_b5,
2891
0
        &hf_diameter_3gpp_supported_monitoring_events_b4,
2892
0
        &hf_diameter_3gpp_supported_monitoring_events_b3,
2893
0
        &hf_diameter_3gpp_supported_monitoring_events_b2,
2894
0
        &hf_diameter_3gpp_supported_monitoring_events_b1,
2895
0
        &hf_diameter_3gpp_supported_monitoring_events_b0,
2896
0
        NULL
2897
0
    };
2898
2899
0
    diam_sub_dis_t* diam_sub_dis_inf = (diam_sub_dis_t*)data;
2900
2901
    /* Hide the item created in packet-diameter.c and only show the one created here */
2902
0
    proto_item_set_hidden(diam_sub_dis_inf->item);
2903
0
    proto_tree_add_bitmask_with_flags(tree, tvb, 0, hf_diameter_3gpp_supported_monitoring_events, ett_diameter_3gpp_supported_monitoring_events, flags, ENC_BIG_ENDIAN, BMT_NO_APPEND);
2904
0
    return 8;
2905
0
}
2906
2907
2908
/* AVP Code: 3167 RIR-Flags */
2909
static int
2910
dissect_diameter_3gpp_rir_flags(tvbuff_t* tvb, packet_info* pinfo _U_, proto_tree* tree, void* data)
2911
0
{
2912
0
    static int* const flags[] = {
2913
0
        &hf_diameter_3gpp_rir_spare_b31_b4,
2914
0
        &hf_diameter_3gpp_acpc,
2915
0
        &hf_diameter_3gpp_coame,
2916
0
        &hf_diameter_3gpp_amec,
2917
0
        &hf_diameter_3gpp_gcip,
2918
0
        NULL
2919
0
    };
2920
2921
0
    diam_sub_dis_t* diam_sub_dis_inf = (diam_sub_dis_t*)data;
2922
2923
    /* Hide the item created in packet-diameter.c and only show the one created here */
2924
0
    proto_item_set_hidden(diam_sub_dis_inf->item);
2925
0
    proto_tree_add_bitmask_with_flags(tree, tvb, 0, hf_diameter_3gpp_rir_flags, ett_diameter_3gpp_rir_flags, flags, ENC_BIG_ENDIAN, BMT_NO_APPEND);
2926
0
    return 4;
2927
0
}
2928
2929
/* AVP Code: 3300 SC-Address */
2930
static int
2931
dissect_diameter_3gpp_sc_address(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data _U_)
2932
0
{
2933
0
    unsigned offset = 0;
2934
0
    int length = tvb_reported_length(tvb);
2935
2936
0
    dissect_e164_isdn(tvb, pinfo, tree, offset, length, E164_ENC_BCD);
2937
2938
0
    return length;
2939
0
}
2940
2941
/* AVP Code: 3301 SM-RP-UI */
2942
2943
static int
2944
dissect_diameter_3gpp_sm_rp_ui(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data _U_)
2945
0
{
2946
0
    int length = tvb_reported_length(tvb);
2947
0
    diam_sub_dis_t *diam_sub_dis_inf = (diam_sub_dis_t*)data;
2948
0
    uint32_t cmd = 0;
2949
0
    bool save_writable = col_get_writable(pinfo->cinfo, -1 /* All */);
2950
0
    bool parent_message_is_request = true;
2951
2952
0
    if (diam_sub_dis_inf) {
2953
0
        cmd = diam_sub_dis_inf->cmd_code;
2954
0
        parent_message_is_request = diam_sub_dis_inf->parent_message_is_request;
2955
0
    }
2956
2957
0
    col_set_writable(pinfo->cinfo, -1, false);
2958
2959
0
    if ((length > 0) && (cmd != 0)) {
2960
0
        switch (cmd){
2961
0
        case 8388645:
2962
            /* Command Code: 8388645 MO-Forward-Short-Message
2963
             * serving MME or SGSN or IP-SM-GW and the SMS-IWMSC to forward
2964
             * mobile originated short messages from a mobile user to a Service Centre
2965
             *
2966
             */
2967
0
            if (parent_message_is_request) {
2968
0
                pinfo->p2p_dir = P2P_DIR_RECV;
2969
0
            } else {
2970
0
                pinfo->p2p_dir = P2P_DIR_SENT;
2971
0
            }
2972
0
            call_dissector(gsm_sms_handle, tvb, pinfo, tree);
2973
0
            break;
2974
0
        case 8388646:
2975
            /* code="8388646 MT Forward Short Message
2976
             * SMS-GMSC and the serving MME or SGSN(transiting an SMS Router, if present)
2977
             * or IP-SM-GW to forward mobile terminated short messages.
2978
             */
2979
0
            if (parent_message_is_request) {
2980
0
                pinfo->p2p_dir = P2P_DIR_SENT;
2981
0
            } else {
2982
0
                pinfo->p2p_dir = P2P_DIR_RECV;
2983
0
            }
2984
0
            call_dissector(gsm_sms_handle, tvb, pinfo, tree);
2985
0
            break;
2986
0
        default:
2987
0
            break;
2988
0
        }
2989
0
    }
2990
2991
0
    col_set_writable(pinfo->cinfo, -1, save_writable);
2992
2993
0
    return length;
2994
2995
0
}
2996
2997
/* AVP Code: 3310 SRR-Flags */
2998
static int
2999
dissect_diameter_3gpp_srr_flags(tvbuff_t* tvb, packet_info* pinfo _U_, proto_tree* tree, void* data)
3000
0
{
3001
0
    static int* const flags[] = {
3002
0
        &hf_diameter_3gpp_srr_spare_b31_b3,
3003
0
        &hf_diameter_3gpp_srr_gprsind,
3004
0
        &hf_diameter_3gpp_srr_smrppri,
3005
0
        &hf_diameter_3gpp_srr_sad,
3006
0
        NULL
3007
0
    };
3008
3009
0
    diam_sub_dis_t* diam_sub_dis_inf = (diam_sub_dis_t*)data;
3010
3011
    /* Hide the item created in packet-diameter.c and only show the one created here */
3012
0
    proto_item_set_hidden(diam_sub_dis_inf->item);
3013
0
    proto_tree_add_bitmask_with_flags(tree, tvb, 0, hf_diameter_3gpp_srr_flags, ett_diameter_3gpp_srr_flags, flags, ENC_BIG_ENDIAN, BMT_NO_APPEND);
3014
0
    return 4;
3015
0
}
3016
3017
/* AVP Code: 3312 MWD-Status */
3018
static int
3019
dissect_diameter_3gpp_mwd_status(tvbuff_t* tvb, packet_info* pinfo _U_, proto_tree* tree, void* data)
3020
0
{
3021
0
    static int* const flags[] = {
3022
0
        &hf_diameter_3gpp_mwd_spare,
3023
0
        &hf_diameter_3gpp_mwd_mnr5gn3g,
3024
0
        &hf_diameter_3gpp_mwd_mnr5g,
3025
0
        &hf_diameter_3gpp_mwd_mnrg,
3026
0
        &hf_diameter_3gpp_mwd_mcef,
3027
0
        &hf_diameter_3gpp_mwd_mnrf,
3028
0
        &hf_diameter_3gpp_mwd_scaddressni,
3029
0
        NULL
3030
0
    };
3031
3032
0
    diam_sub_dis_t* diam_sub_dis_inf = (diam_sub_dis_t*)data;
3033
3034
    /* Hide the item created in packet-diameter.c and only show the one created here */
3035
0
    proto_item_set_hidden(diam_sub_dis_inf->item);
3036
0
    proto_tree_add_bitmask_with_flags(tree, tvb, 0, hf_diameter_3gpp_mwd_status, ett_diameter_3gpp_mwd_status, flags, ENC_BIG_ENDIAN, BMT_NO_APPEND);
3037
0
    return 4;
3038
0
}
3039
3040
/* AVP Code: 3502 MBMS-Bearer-Event */
3041
static int
3042
dissect_diameter_3gpp_mbms_bearer_event(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, void *data)
3043
0
{
3044
0
    static int * const flags[] = {
3045
0
        &hf_diameter_3gpp_mbms_bearer_event_spare_bits,
3046
0
        &hf_diameter_3gpp_mbms_bearer_event_bit2,
3047
0
        &hf_diameter_3gpp_mbms_bearer_event_bit1,
3048
0
        &hf_diameter_3gpp_mbms_bearer_event_bit0,
3049
0
        NULL
3050
0
    };
3051
3052
0
    diam_sub_dis_t* diam_sub_dis_inf = (diam_sub_dis_t*)data;
3053
3054
    /* Hide the item created in packet-diameter.c and only show the one created here */
3055
0
    proto_item_set_hidden(diam_sub_dis_inf->item);
3056
3057
0
    proto_tree_add_bitmask_with_flags(tree, tvb, 0, hf_diameter_3gpp_mbms_bearer_event, ett_diameter_3gpp_mbms_bearer_event, flags, ENC_BIG_ENDIAN, BMT_NO_APPEND);
3058
0
    return 4;
3059
0
}
3060
3061
/* AVP Code: 3506 MBMS-Bearer-Result */
3062
static int
3063
dissect_diameter_3gpp_mbms_bearer_result(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, void *data)
3064
0
{
3065
0
    static int * const flags[] = {
3066
0
        &hf_diameter_3gpp_mbms_bearer_result_spare_bits,
3067
0
        &hf_diameter_3gpp_mbms_bearer_result_bit11,
3068
0
        &hf_diameter_3gpp_mbms_bearer_result_bit10,
3069
0
        &hf_diameter_3gpp_mbms_bearer_result_bit9,
3070
0
        &hf_diameter_3gpp_mbms_bearer_result_bit8,
3071
0
        &hf_diameter_3gpp_mbms_bearer_result_bit7,
3072
0
        &hf_diameter_3gpp_mbms_bearer_result_bit6,
3073
0
        &hf_diameter_3gpp_mbms_bearer_result_bit5,
3074
0
        &hf_diameter_3gpp_mbms_bearer_result_bit4,
3075
0
        &hf_diameter_3gpp_mbms_bearer_result_bit3,
3076
0
        &hf_diameter_3gpp_mbms_bearer_result_bit2,
3077
0
        &hf_diameter_3gpp_mbms_bearer_result_bit1,
3078
0
        &hf_diameter_3gpp_mbms_bearer_result_bit0,
3079
0
        NULL
3080
0
    };
3081
3082
0
    diam_sub_dis_t* diam_sub_dis_inf = (diam_sub_dis_t*)data;
3083
3084
    /* Hide the item created in packet-diameter.c and only show the one created here */
3085
0
    proto_item_set_hidden(diam_sub_dis_inf->item);
3086
3087
0
    proto_tree_add_bitmask_with_flags(tree, tvb, 0, hf_diameter_3gpp_mbms_bearer_result, ett_diameter_3gpp_mbms_bearer_result, flags, ENC_BIG_ENDIAN, BMT_NO_APPEND);
3088
0
    return 4;
3089
0
}
3090
3091
/* AVP Code: 3511 TMGI-Allocation-Result */
3092
static int
3093
dissect_diameter_3gpp_tmgi_allocation_result(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, void *data)
3094
0
{
3095
0
    static int * const flags[] = {
3096
0
        &hf_diameter_3gpp_tmgi_allocation_result_spare_bits,
3097
0
        &hf_diameter_3gpp_tmgi_allocation_result_bit4,
3098
0
        &hf_diameter_3gpp_tmgi_allocation_result_bit3,
3099
0
        &hf_diameter_3gpp_tmgi_allocation_result_bit2,
3100
0
        &hf_diameter_3gpp_tmgi_allocation_result_bit1,
3101
0
        &hf_diameter_3gpp_tmgi_allocation_result_bit0,
3102
0
        NULL
3103
0
    };
3104
3105
0
    diam_sub_dis_t* diam_sub_dis_inf = (diam_sub_dis_t*)data;
3106
3107
    /* Hide the item created in packet-diameter.c and only show the one created here */
3108
0
    proto_item_set_hidden(diam_sub_dis_inf->item);
3109
3110
0
    proto_tree_add_bitmask_with_flags(tree, tvb, 0, hf_diameter_3gpp_tmgi_allocation_result, ett_diameter_3gpp_tmgi_allocation_result, flags, ENC_BIG_ENDIAN, BMT_NO_APPEND);
3111
0
    return 4;
3112
0
}
3113
3114
/* AVP Code: 3514 TMGI-Deallocation-Result */
3115
static int
3116
dissect_diameter_3gpp_tmgi_deallocation_result(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, void *data)
3117
0
{
3118
0
    static int * const flags[] = {
3119
0
        &hf_diameter_3gpp_tmgi_deallocation_result_spare_bits,
3120
0
        &hf_diameter_3gpp_tmgi_deallocation_result_bit2,
3121
0
        &hf_diameter_3gpp_tmgi_deallocation_result_bit1,
3122
0
        &hf_diameter_3gpp_tmgi_deallocation_result_bit0,
3123
0
        NULL
3124
0
    };
3125
3126
0
    diam_sub_dis_t* diam_sub_dis_inf = (diam_sub_dis_t*)data;
3127
3128
    /* Hide the item created in packet-diameter.c and only show the one created here */
3129
0
    proto_item_set_hidden(diam_sub_dis_inf->item);
3130
3131
0
    proto_tree_add_bitmask_with_flags(tree, tvb, 0, hf_diameter_3gpp_tmgi_deallocation_result, ett_diameter_3gpp_tmgi_deallocation_result, flags, ENC_BIG_ENDIAN, BMT_NO_APPEND);
3132
0
    return 4;
3133
0
}
3134
3135
3136
void
3137
proto_reg_handoff_diameter_3gpp(void)
3138
14
{
3139
3140
    /* AVP Code: 5 3GPP-GPRS Negotiated QoS profile */
3141
    /* Registered by packet-gtp.c */
3142
3143
    /* AVP Code: 8 3GPP-IMSI-MNC-MCC */
3144
14
    dissector_add_uint("diameter.3gpp", 8, create_dissector_handle(dissect_diameter_3gpp_imsi_mnc_mcc, proto_diameter_3gpp));
3145
3146
    /* AVP Code: 12 3GPP-Selection-Mode */
3147
14
    dissector_add_uint("diameter.3gpp", 12, create_dissector_handle(dissect_diameter_3gpp_selection_mode, proto_diameter_3gpp));
3148
3149
    /* AVP Code: 15 3GPP-SGSN-IPv6-Address */
3150
14
    dissector_add_uint("diameter.3gpp", 15, create_dissector_handle(dissect_diameter_3gpp_sgsn_ipv6_address, proto_diameter_3gpp));
3151
3152
    /* AVP Code: 18 3GPP-SGSN-MNC-MCC */
3153
14
    dissector_add_uint("diameter.3gpp", 18, create_dissector_handle(dissect_diameter_3gpp_sgsn_mnc_mcc, proto_diameter_3gpp));
3154
3155
    /* AVP Code: 21 3GPP-RAT-Access-Type */
3156
14
    dissector_add_uint("diameter.3gpp", 21, create_dissector_handle(dissect_diameter_3gpp_rat_type, proto_diameter_3gpp));
3157
3158
3159
    /* AVP Code: 22 3GPP-User-Location-Info
3160
     * Registered by packet-gtpv2.c
3161
     */
3162
3163
    /* AVP Code: 23 3GPP-MS-TimeZone */
3164
14
    dissector_add_uint("diameter.3gpp", 23, create_dissector_handle(dissect_diameter_3gpp_ms_timezone, proto_diameter_3gpp));
3165
3166
    /* AVP Code: 29 3GPP-TWAN-Identifier */
3167
14
    dissector_add_uint("diameter.3gpp", 29, create_dissector_handle(dissect_diameter_3gpp_twan_identifier, proto_diameter_3gpp));
3168
3169
    /* AVP Code: 524 Codec-Data */
3170
14
    dissector_add_uint("diameter.3gpp", 524, create_dissector_handle(dissect_diameter_3gpp_codec_data, proto_diameter_3gpp));
3171
3172
    /* AVP Code: 551 AF-Requested-Data */
3173
14
    dissector_add_uint("diameter.3gpp", 551, create_dissector_handle(dissect_diameter_3gpp_af_requested_data, proto_diameter_3gpp));
3174
3175
    /* AVP Code: 601 Public-Identity */
3176
14
    dissector_add_uint("diameter.3gpp", 601, create_dissector_handle(dissect_diameter_3gpp_public_identity, proto_diameter_3gpp));
3177
3178
    /* AVP Code: 606 User-Data */
3179
14
    dissector_add_uint("diameter.3gpp", 606, create_dissector_handle(dissect_diameter_3gpp_user_data, proto_diameter_3gpp));
3180
3181
    /* AVP Code: 629 Feature-List */
3182
14
    dissector_add_uint("diameter.3gpp", 629, create_dissector_handle(dissect_diameter_3gpp_feature_list_id, proto_diameter_3gpp));
3183
3184
    /* AVP Code: 630 Feature-List */
3185
14
    dissector_add_uint("diameter.3gpp", 630, create_dissector_handle(dissect_diameter_3gpp_feature_list, proto_diameter_3gpp));
3186
3187
    /* AVP Code: 637 UAR-Flags */
3188
14
    dissector_add_uint("diameter.3gpp", 637, create_dissector_handle(dissect_diameter_3gpp_uar_flags, proto_diameter_3gpp));
3189
3190
    /* AVP Code: 640 Path */
3191
14
    dissector_add_uint("diameter.3gpp", 640, create_dissector_handle(dissect_diameter_3gpp_path, proto_diameter_3gpp));
3192
3193
    /* AVP Code: 641 Contact */
3194
14
    dissector_add_uint("diameter.3gpp", 641, create_dissector_handle(dissect_diameter_3gpp_contact, proto_diameter_3gpp));
3195
3196
    /* AVP Code: 655 SAR-Flags */
3197
14
    dissector_add_uint("diameter.3gpp", 655, create_dissector_handle(dissect_diameter_3gpp_sar_flags, proto_diameter_3gpp));
3198
3199
    /* AVP Code: 701 MSISDN */
3200
14
    dissector_add_uint("diameter.3gpp", 701, create_dissector_handle(dissect_diameter_3gpp_msisdn, proto_diameter_3gpp));
3201
3202
    /* AVP Code: 702 User-Data */
3203
14
    dissector_add_uint("diameter.3gpp", 702, create_dissector_handle(dissect_diameter_3gpp_user_data, proto_diameter_3gpp));
3204
3205
    /* AVP Code: 713 Requested-Nodes */
3206
14
    dissector_add_uint("diameter.3gpp", 713, create_dissector_handle(dissect_diameter_3gpp_req_nodes, proto_diameter_3gpp));
3207
3208
    /* AVP Code: 900 TMGI */
3209
14
    dissector_add_uint("diameter.3gpp", 900, create_dissector_handle(dissect_diameter_3gpp_tmgi, proto_diameter_3gpp));
3210
3211
    /* AVP Code: 904 MBMS-Session-Duration  Registered by packet-gtp.c */
3212
    /* AVP Code: 903 MBMS-Service-Area Registered by packet-gtp.c */
3213
3214
    /* AVP Code: 909 RAI */
3215
14
    dissector_add_uint("diameter.3gpp", 909, create_dissector_handle(dissect_diameter_3gpp_rai, proto_diameter_3gpp));
3216
3217
    /* AVP Code: 911 MBMS-Time-To-Data-Transfer  Registered by packet-gtp.c */
3218
    /* Registered by packet-gtp.c */
3219
3220
    /* AVP Code: 913 MBMS-Required-QoS */
3221
14
    dissector_add_uint("diameter.3gpp", 913, create_dissector_handle(dissect_diameter_3gpp_mbms_required_qos, proto_diameter_3gpp));
3222
3223
    /* AVP Code: 917 MBMS-GGSN-IPv6-Address */
3224
14
    dissector_add_uint("diameter.3gpp", 917, create_dissector_handle(dissect_diameter_3gpp_ipv6addr, proto_diameter_3gpp));
3225
3226
    /* AVP Code: 918 MBMS-BMSC-SSM-IP-Address */
3227
14
    dissector_add_uint("diameter.3gpp", 918, create_dissector_handle(dissect_diameter_3gpp_ipaddr, proto_diameter_3gpp));
3228
3229
    /* AVP Code: 926 MBMS-BMSC-SSM-UDP-Port */
3230
    /* AVP Code: 927 MBMS-GW-UDP-Port */
3231
14
    dissector_add_uint("diameter.3gpp", 926, create_dissector_handle(dissect_diameter_3gpp_udp_port, proto_diameter_3gpp));
3232
14
    dissector_add_uint("diameter.3gpp", 927, create_dissector_handle(dissect_diameter_3gpp_udp_port, proto_diameter_3gpp));
3233
3234
    /* AVP Code: 929 MBMS-Data-Transfer-Start */
3235
14
    dissector_add_uint("diameter.3gpp", 929, create_dissector_handle(dissect_diameter_3gpp_mbms_abs_time_ofmbms_data_tfer, proto_diameter_3gpp));
3236
3237
    /* AVP Code: 930 MBMS-Data-Transfer-Stop */
3238
14
    dissector_add_uint("diameter.3gpp", 930, create_dissector_handle(dissect_diameter_3gpp_mbms_abs_time_ofmbms_data_tfer, proto_diameter_3gpp));
3239
3240
    /* AVP Code: 1082 Credit-Management-Status */
3241
14
    dissector_add_uint("diameter.3gpp", 1082, create_dissector_handle(dissect_diameter_3gpp_credit_management_status, proto_diameter_3gpp));
3242
3243
    /* AVP Code: 1242 location estimate */
3244
14
    dissector_add_uint("diameter.3gpp", 1242, create_dissector_handle(dissect_diameter_3gpp_location_estimate, proto_diameter_3gpp));
3245
3246
    /* AVP Code: 1263 Access-Network-Information */
3247
14
    dissector_add_uint("diameter.3gpp", 1263, create_dissector_handle(dissect_diameter_3gpp_access_network_information, proto_diameter_3gpp));
3248
3249
    /* AVP Code: 1304 Secondary-RAT-Type */
3250
14
  dissector_add_uint("diameter.3gpp", 1304, create_dissector_handle(dissect_diameter_3gpp_secondary_rat_type, proto_diameter_3gpp));
3251
3252
    /* AVP Code: 1404 QoS-Subscribed */
3253
14
    dissector_add_uint("diameter.3gpp", 1404, create_dissector_handle(dissect_diameter_3ggp_qos_susbscribed, proto_diameter_3gpp));
3254
3255
    /* AVP Code: 1405 ULR-Flags */
3256
14
    dissector_add_uint("diameter.3gpp", 1405, create_dissector_handle(dissect_diameter_3gpp_ulr_flags, proto_diameter_3gpp));
3257
3258
    /* AVP Code: 1406 ULA-Flags */
3259
14
    dissector_add_uint("diameter.3gpp", 1406, create_dissector_handle(dissect_diameter_3gpp_ula_flags, proto_diameter_3gpp));
3260
3261
    /*AVP Code: 1407 Visited-PLMN-Id */
3262
14
    dissector_add_uint("diameter.3gpp", 1407, create_dissector_handle(dissect_diameter_3gpp_visited_plmn_id, proto_diameter_3gpp));
3263
3264
    /* AVP Code: 1421 DSR-Flags */
3265
14
    dissector_add_uint("diameter.3gpp", 1421, create_dissector_handle(dissect_diameter_3gpp_dsr_flags, proto_diameter_3gpp));
3266
3267
    /* AVP Code: 1422 DSA-Flags */
3268
14
    dissector_add_uint("diameter.3gpp", 1422, create_dissector_handle(dissect_diameter_3gpp_dsa_flags, proto_diameter_3gpp));
3269
3270
    /* AVP Code: 1426 Access-Restriction-Data */
3271
14
    dissector_add_uint("diameter.3gpp", 1426, create_dissector_handle(dissect_diameter_3gpp_acc_res_data, proto_diameter_3gpp));
3272
3273
    /* AVP Code: 1441 IDA-Flags */
3274
14
    dissector_add_uint("diameter.3gpp", 1441, create_dissector_handle(dissect_diameter_3gpp_ida_flags, proto_diameter_3gpp));
3275
3276
    /* AVP Code: 1442 PUA-Flags */
3277
14
    dissector_add_uint("diameter.3gpp", 1442, create_dissector_handle(dissect_diameter_3gpp_pua_flags, proto_diameter_3gpp));
3278
3279
    /* AVP Code: 1443 NOR-Flags */
3280
14
    dissector_add_uint("diameter.3gpp", 1443, create_dissector_handle(dissect_diameter_3gpp_nor_flags, proto_diameter_3gpp));
3281
3282
    /* AVP Code: 1474 GMLC-Number */
3283
14
    dissector_add_uint("diameter.3gpp", 1474, create_dissector_handle(dissect_diameter_3gpp_isdn, proto_diameter_3gpp));
3284
3285
    /* AVP Code: 1490 IDR-Flags */
3286
14
    dissector_add_uint("diameter.3gpp", 1490, create_dissector_handle(dissect_diameter_3gpp_idr_flags, proto_diameter_3gpp));
3287
3288
    /* AVP Code: 1508 PPR-Flags */
3289
14
    dissector_add_uint("diameter.3gpp", 1508, create_dissector_handle(dissect_diameter_3gpp_ppr_flags, proto_diameter_3gpp));
3290
3291
    /* AVP Code: 1518 AAA-Failure-Indication */
3292
14
    dissector_add_uint("diameter.3gpp", 1518, create_dissector_handle(dissect_diameter_3gpp_aaa_fail_flags, proto_diameter_3gpp));
3293
3294
    /* AVP Code: 1520 DER-Flags */
3295
14
    dissector_add_uint("diameter.3gpp", 1520, create_dissector_handle(dissect_diameter_3gpp_der_flags, proto_diameter_3gpp));
3296
3297
    /* AVP Code: 1521 DEA-Flags */
3298
14
    dissector_add_uint("diameter.3gpp", 1521, create_dissector_handle(dissect_diameter_3gpp_dea_flags, proto_diameter_3gpp));
3299
3300
    /* AVP Code: 1522 RAR-Flags */
3301
14
    dissector_add_uint("diameter.3gpp", 1522, create_dissector_handle(dissect_diameter_3gpp_rar_flags, proto_diameter_3gpp));
3302
3303
    /* AVP Code: 1523 DER-S6b-Flags */
3304
14
    dissector_add_uint("diameter.3gpp", 1523, create_dissector_handle(dissect_diameter_3gpp_der_s6b_flags, proto_diameter_3gpp));
3305
3306
    /* AVP Code: 1538 Emergency-Services */
3307
14
    dissector_add_uint("diameter.3gpp", 1538, create_dissector_handle(dissect_diameter_3gpp_emergency_services, proto_diameter_3gpp));
3308
3309
    /* AVP Code: 1635 PUR-Flags */
3310
14
    dissector_add_uint("diameter.3gpp", 1635, create_dissector_handle(dissect_diameter_3gpp_pur_flags, proto_diameter_3gpp));
3311
3312
    /* AVP Code: 1638 CLR-Flags */
3313
14
    dissector_add_uint("diameter.3gpp", 1638, create_dissector_handle(dissect_diameter_3gpp_clr_flags, proto_diameter_3gpp));
3314
3315
    /* AVP Code: 1639 UVR-Flags */
3316
14
    dissector_add_uint("diameter.3gpp", 1639, create_dissector_handle(dissect_diameter_3gpp_uvr_flags, proto_diameter_3gpp));
3317
3318
    /* AVP Code: 1640 UVA-Flags */
3319
14
    dissector_add_uint("diameter.3gpp", 1640, create_dissector_handle(dissect_diameter_3gpp_uva_flags, proto_diameter_3gpp));
3320
3321
    /* AVP Code: 1645 MME-Number-for-MT-SMS */
3322
14
    dissector_add_uint("diameter.3gpp", 1645, create_dissector_handle(dissect_diameter_3gpp_mme_number_for_mt_sms, proto_diameter_3gpp));
3323
3324
    /* AVP Code: 1654 Subscription-Data-Flags */
3325
14
    dissector_add_uint("diameter.3gpp", 1654, create_dissector_handle(dissect_diameter_3gpp_subscription_data_flags, proto_diameter_3gpp));
3326
3327
    /* AVP Code: 1668 WLAN-offloadability-EUTRAN */
3328
14
    dissector_add_uint("diameter.3gpp", 1668, create_dissector_handle(dissect_diameter_3gpp_wlan_offloadability_eutran, proto_diameter_3gpp));
3329
3330
    /* AVP Code: 1669 WLAN-offloadability-UTRAN */
3331
14
    dissector_add_uint("diameter.3gpp", 1669, create_dissector_handle(dissect_diameter_3gpp_wlan_offloadability_utran, proto_diameter_3gpp));
3332
3333
    /* AVP Code: 1677 Group-PLMN-Id */
3334
14
    dissector_add_uint("diameter.3gpp", 1677, create_dissector_handle(dissect_diameter_3gpp_group_plmn_id, proto_diameter_3gpp));
3335
3336
    /* AVP Code: 1679 AIR-Flags */
3337
14
    dissector_add_uint("diameter.3gpp", 1679, create_dissector_handle(dissect_diameter_3gpp_air_flags, proto_diameter_3gpp));
3338
3339
    /* AVP Code: 1686 Preferred-Data-Mode */
3340
14
    dissector_add_uint("diameter.3gpp", 1686, create_dissector_handle(dissect_diameter_3gpp_preferred_data_mode, proto_diameter_3gpp));
3341
3342
    /* AVP Code: 1689 V2X-Permission */
3343
14
    dissector_add_uint("diameter.3gpp", 1689, create_dissector_handle(dissect_diameter_3gpp_v2x_permission, proto_diameter_3gpp));
3344
3345
    /* AVP Code: 1704 Core-Network-Restrictions */
3346
14
    dissector_add_uint("diameter.3gpp", 1704, create_dissector_handle(dissect_diameter_3gpp_core_network_restrictions, proto_diameter_3gpp));
3347
3348
    /* AVP Code: 2403 MSC-Number */
3349
14
    dissector_add_uint("diameter.3gpp", 2403, create_dissector_handle(dissect_diameter_3gpp_msc_number, proto_diameter_3gpp));
3350
3351
    /* AVP Code: 2510 Supported-GAD-Shapes */
3352
14
    dissector_add_uint("diameter.3gpp", 2510, create_dissector_handle(dissect_diameter_3gpp_supported_gad_shapes, proto_diameter_3gpp));
3353
3354
    /* AVP Code: 2516 EUTRAN-Positioning-Data */
3355
14
    dissector_add_uint("diameter.3gpp", 2516, create_dissector_handle(dissect_diameter_3gpp_eutran_positioning_data, proto_diameter_3gpp));
3356
3357
    /* AVP Code: 2532 Deferred-Location-Type */
3358
14
    dissector_add_uint("diameter.3gpp", 2532, create_dissector_handle(dissect_diameter_3gpp_deferred_location_type, proto_diameter_3gpp));
3359
3360
    /* AVP Code: 2545 PLR-Flags */
3361
14
    dissector_add_uint("diameter.3gpp", 2545, create_dissector_handle(dissect_diameter_3gpp_plr_flags, proto_diameter_3gpp));
3362
3363
    /* AVP Code: 2546 PLA-Flags */
3364
14
    dissector_add_uint("diameter.3gpp", 2546, create_dissector_handle(dissect_diameter_3gpp_pla_flags, proto_diameter_3gpp));
3365
3366
    /* AVP Code: 2556 Civic-Address */
3367
14
    dissector_add_uint("diameter.3gpp", 2556, create_dissector_handle(dissect_diameter_3gpp_civic_address, proto_diameter_3gpp));
3368
3369
    /* AVP Code: 2819 RAN-NAS-Release-Cause */
3370
14
    dissector_add_uint("diameter.3gpp", 2819, create_dissector_handle(dissect_diameter_3gpp_ran_nas_release_cause, proto_diameter_3gpp));
3371
3372
    /* AVP Code: 3144 Supported-Monitoring-Events*/
3373
14
    dissector_add_uint("diameter.3gpp", 3144, create_dissector_handle(dissect_diameter_3gpp_supported_monitoring_events, proto_diameter_3gpp));
3374
3375
    /* AVP Code: 3167 RIR-Flags */
3376
14
    dissector_add_uint("diameter.3gpp", 3167, create_dissector_handle(dissect_diameter_3gpp_rir_flags, proto_diameter_3gpp));
3377
3378
    /* AVP Code: 3300 SC-Address */
3379
14
    dissector_add_uint("diameter.3gpp", 3300, create_dissector_handle(dissect_diameter_3gpp_sc_address, proto_diameter_3gpp));
3380
3381
    /* AVP Code: 3301 SM-RP-UI */
3382
14
    dissector_add_uint("diameter.3gpp", 3301, create_dissector_handle(dissect_diameter_3gpp_sm_rp_ui, proto_diameter_3gpp));
3383
3384
    /* AVP Code: 3310 SRR-Flags */
3385
14
    dissector_add_uint("diameter.3gpp", 3310, create_dissector_handle(dissect_diameter_3gpp_srr_flags, proto_diameter_3gpp));
3386
3387
    /* AVP Code: 3312 MWD-Status */
3388
14
    dissector_add_uint("diameter.3gpp", 3312, create_dissector_handle(dissect_diameter_3gpp_mwd_status, proto_diameter_3gpp));
3389
3390
    /* AVP Code: 3502 MBMS-Bearer-Event */
3391
14
    dissector_add_uint("diameter.3gpp", 3502, create_dissector_handle(dissect_diameter_3gpp_mbms_bearer_event, proto_diameter_3gpp));
3392
3393
    /* AVP Code: 3506 MBMS-Bearer-Result */
3394
14
    dissector_add_uint("diameter.3gpp", 3506, create_dissector_handle(dissect_diameter_3gpp_mbms_bearer_result, proto_diameter_3gpp));
3395
3396
    /* AVP Code: 3511 TMGI-Allocation-Result */
3397
14
    dissector_add_uint("diameter.3gpp", 3511, create_dissector_handle(dissect_diameter_3gpp_tmgi_allocation_result, proto_diameter_3gpp));
3398
3399
    /* AVP Code: 3514 TMGI-Deallocation-Result */
3400
14
    dissector_add_uint("diameter.3gpp", 3514, create_dissector_handle(dissect_diameter_3gpp_tmgi_deallocation_result, proto_diameter_3gpp));
3401
3402
14
    xml_handle = find_dissector_add_dependency("xml", proto_diameter_3gpp);
3403
14
    gsm_sms_handle = find_dissector_add_dependency("gsm_sms", proto_diameter_3gpp);
3404
14
    sdp_handle = find_dissector_add_dependency("sdp", proto_diameter_3gpp);
3405
14
}
3406
3407
/*
3408
 *  3GPP TS 24.008 Quality of service
3409
 */
3410
static const value_string diameter_3gpp_qos_reliability_vals[] = {
3411
    { 0x00, "Subscribed reliability class (in MS to net); Reserved (in net to MS)" },
3412
    { 0x01, "Unused. Interpreted as Unacknowledged GTP, Ack LLC/RLC, Protected data." },
3413
    { 0x02, "Unacknowledged GTP, Ack LLC/RLC, Protected data" },
3414
    { 0x03, "Unacknowledged GTP/LLC, Ack RLC, Protected data" },
3415
    { 0x04, "Unacknowledged GTP/LLC/RLC, Protected data" },
3416
    { 0x05, "Unacknowledged GTP/LLC/RLC, Unprotected data" },
3417
    { 0x06, "Interpreted as Unacknowledged GTP/LLC, Ack RLC, Protected data" }, /* other value */
3418
    { 0x07, "Reserved" },
3419
    { 0, NULL }
3420
};
3421
3422
static const range_string diameter_3gpp_qos_delay_cls_vals[] = {
3423
    { 0x00, 0x00, "Subscribed delay class (in MS to net); Reserved (in net to MS)" },
3424
    { 0x01, 0x01, "Delay class 1" },
3425
    { 0x02, 0x02, "Delay class 2" },
3426
    { 0x03, 0x03, "Delay class 3" },
3427
    { 0x04, 0x04, "Delay class 4 (best effort)" },
3428
    { 0x05, 0x06, "Interpreted as Delay class 4 (best effort)" },
3429
    { 0x07, 0x07, "Reserved" },
3430
    { 0, 0, NULL }
3431
};
3432
3433
static const range_string diameter_3gpp_qos_prec_class_vals[] = {
3434
    { 0x00, 0x00, "Subscribed precedence (MS to net); Reserved (net to MS)" },
3435
    { 0x01, 0x01, "High priority" },
3436
    { 0x02, 0x02, "Normal priority" },
3437
    { 0x03, 0x03, "Low priority" },
3438
    { 0x04, 0x06, "Interpreted as Normal priority" },
3439
    { 0x07, 0x07, "Reserved" },
3440
    { 0, 0, NULL }
3441
};
3442
3443
static const range_string diameter_3gpp_qos_peak_thr_vals[] = {
3444
    { 0x00, 0x00, "Subscribed peak throughput (MS to net); Reserved (net to MS)" },
3445
    { 0x01, 0x01, "Up to 1 000 octet/s" },
3446
    { 0x02, 0x02, "Up to 2 000 octet/s" },
3447
    { 0x03, 0x03, "Up to 4 000 octet/s" },
3448
    { 0x04, 0x04, "Up to 8 000 octet/s" },
3449
    { 0x05, 0x05, "Up to 16 000 octet/s" },
3450
    { 0x06, 0x06, "Up to 32 000 octet/s" },
3451
    { 0x07, 0x07, "Up to 64 000 octet/s" },
3452
    { 0x08, 0x08, "Up to 128 000 octet/s" },
3453
    { 0x09, 0x09, "Up to 256 000 octet/s" },
3454
    { 0x0a, 0x0e, "Interpreted as Up to 1 000 octet/s" },
3455
    { 0x0f, 0x0f, "Reserved" },
3456
    { 0, 0, NULL }
3457
};
3458
3459
static const range_string diameter_3gpp_qos_mean_thr_vals[] = {
3460
    { 0x00, 0x00, "Subscribed peak throughput (MS to net); Reserved (net to MS)" },
3461
    { 0x01, 0x01, "100 octet/h" },
3462
    { 0x02, 0x02, "200 octet/h" },
3463
    { 0x03, 0x03, "500 octet/h" },
3464
    { 0x04, 0x04, "1 000 octet/h" },
3465
    { 0x05, 0x05, "2 000 octet/h" },
3466
    { 0x06, 0x06, "5 000 octet/h" },
3467
    { 0x07, 0x07, "10 000 octet/h" },
3468
    { 0x08, 0x08, "20 000 octet/h" },
3469
    { 0x09, 0x09, "50 000 octet/h" },
3470
    { 0x0a, 0x0a, "100 000 octet/h" },
3471
    { 0x0b, 0x0b, "200 000 octet/h" },
3472
    { 0x0c, 0x0c, "500 000 octet/h" },
3473
    { 0x0d, 0x0d, "1 000 000 octet/h" },
3474
    { 0x0e, 0x0e, "2 000 000 octet/h" },
3475
    { 0x0f, 0x0f, "5 000 000 octet/h" },
3476
    { 0x10, 0x10, "10 000 000 octet/h" },
3477
    { 0x11, 0x11, "20 000 000 octet/h" },
3478
    { 0x12, 0x12, "50 000 000 octet/h" },
3479
    { 0x13, 0x1d, "Interpreted as Best effort" },
3480
    { 0x1e, 0x1e, "Reserved" },
3481
    { 0x1f, 0x1f, "Best effort" },
3482
    { 0, 0, NULL }
3483
};
3484
3485
static const value_string diameter_3gpp_qos_del_of_err_sdu_vals[] = {
3486
    { 0x00, "Subscribed delivery of erroneous SDUs (MS to net); Reserved (net to MS)" },
3487
    { 0x01, "No detect ('-')" },
3488
    { 0x02, "Erroneous SDUs are delivered ('yes')" },
3489
    { 0x03, "Erroneous SDUs are not delivered ('no')" },
3490
    { 0x07, "Reserved" },
3491
    { 0, NULL }
3492
};
3493
3494
static const value_string diameter_3gpp_qos_del_order_vals[] = {
3495
    { 0x00, "Subscribed delivery order (MS to net); Reserved (net to MS)" },
3496
    { 0x01, "With delivery order ('yes')" },
3497
    { 0x02, "Without delivery order ('no')" },
3498
    { 0x03, "Reserved" },
3499
    { 0, NULL }
3500
};
3501
3502
static const value_string diameter_3gpp_qos_traffic_cls_vals[] = {
3503
    { 0x00, "Subscribed traffic class (MS to net); Reserved (net to MS)" },
3504
    { 0x01, "Conversational class" },
3505
    { 0x02, "Streaming class" },
3506
    { 0x03, "Interactive class" },
3507
    { 0x04, "Background class" },
3508
    { 0x07, "Reserved" },
3509
    { 0, NULL }
3510
};
3511
3512
static const value_string diameter_3gpp_qos_sdu_err_rat_vals[] = {
3513
    { 0x00, "Subscribed SDU error ratio (MS to net); Reserved (net to MS)" },
3514
    { 0x01, "1E-2" },
3515
    { 0x02, "7E-3" },
3516
    { 0x03, "1E-3" },
3517
    { 0x04, "1E-4" },
3518
    { 0x05, "1E-5" },
3519
    { 0x06, "1E-6" },
3520
    { 0x07, "1E-1" },
3521
    { 0x15, "Reserved" },
3522
    { 0, NULL }
3523
};
3524
3525
static const value_string diameter_3gpp_qos_ber_vals[] = {
3526
    { 0x00, "Subscribed residual BER (MS to net); Reserved (net to MS)" },
3527
    { 0x01, "5E-2" },
3528
    { 0x02, "1E-2" },
3529
    { 0x03, "5E-3" },
3530
    { 0x04, "4E-3" },
3531
    { 0x05, "1E-3" },
3532
    { 0x06, "1E-4" },
3533
    { 0x07, "1E-5" },
3534
    { 0x08, "1E-6" },
3535
    { 0x09, "6E-8" },
3536
    { 0x15, "Reserved" },
3537
    { 0, NULL }
3538
};
3539
3540
#if 0
3541
static const value_string diameter_3gpp_qos_traff_hdl_pri_vals[] = {
3542
    { 0x00, "Subscribed traffic handling priority (MS to net); Reserved (net to MS)" },
3543
    { 0x01, "Priority level 1" },
3544
    { 0x02, "Priority level 2" },
3545
    { 0x03, "Priority level 3" },
3546
    { 0, NULL }
3547
};
3548
#endif
3549
3550
static const true_false_string diameter_3gpp_qos_signalling_ind_value = {
3551
    "Optimised for signalling traffic",
3552
    "Not optimised for signalling traffic"
3553
};
3554
3555
void
3556
proto_register_diameter_3gpp(void)
3557
14
{
3558
3559
    /* Setup list of header fields  See Section 1.6.1 for details*/
3560
14
    static hf_register_info hf[] = {
3561
14
        { &hf_diameter_3gpp_timezone,
3562
14
            { "Timezone",           "diameter.3gpp.3gpp_timezone",
3563
14
            FT_UINT8, BASE_DEC, NULL, 0x0,
3564
14
            NULL, HFILL }
3565
14
        },
3566
14
        { &hf_diameter_3gpp_timezone_adjustment,
3567
14
            { "Adjustment",           "diameter.3gpp.timezone_adjustment",
3568
14
            FT_UINT8, BASE_DEC, VALS(daylight_saving_time_vals), 0x03,
3569
14
            NULL, HFILL }
3570
14
        },
3571
14
        { &hf_diameter_3gpp_rat_type,
3572
14
            { "RAT Type",            "diameter.3gpp.rat-type",
3573
14
            FT_UINT8, BASE_DEC, VALS(diameter_3gpp_rat_type_vals), 0x00,
3574
14
            NULL, HFILL }
3575
14
        },
3576
14
        { &hf_diameter_3gpp_path,
3577
14
            { "Path",           "diameter.3gpp.path",
3578
14
            FT_STRING, BASE_NONE, NULL, 0x0,
3579
14
            NULL, HFILL }
3580
14
        },
3581
14
        { &hf_diameter_3gpp_contact,
3582
14
            { "Contact",           "diameter.3gpp.contact",
3583
14
            FT_STRING, BASE_NONE, NULL, 0x0,
3584
14
            NULL, HFILL }
3585
14
        },
3586
#if 0
3587
        { &hf_diameter_3gpp_user_data,
3588
            { "User data",           "diameter.3gpp.user_data",
3589
            FT_STRING, BASE_NONE, NULL, 0x0,
3590
            NULL, HFILL }
3591
        },
3592
#endif
3593
14
        { &hf_diameter_3gpp_ipaddr,
3594
14
            { "IPv4 Address",           "diameter.3gpp.ipaddr",
3595
14
            FT_IPv4, BASE_NONE, NULL, 0x0,
3596
14
            NULL, HFILL }
3597
14
        },
3598
14
        { &hf_diameter_3gpp_mbms_required_qos_prio,
3599
14
            { "Allocation/Retention Priority",           "diameter.3gpp.mbms_required_qos_prio",
3600
14
            FT_UINT8, BASE_DEC, NULL, 0x0,
3601
14
            NULL, HFILL }
3602
14
        },
3603
14
        { &hf_diameter_3gpp_tmgi,
3604
14
            { "TMGI",           "diameter.3gpp.tmgi",
3605
14
            FT_BYTES, BASE_NONE, NULL, 0x0,
3606
14
            NULL, HFILL }
3607
14
        },
3608
3609
14
        { &hf_diameter_3gpp_req_nodes,
3610
14
        { "Requested-Nodes", "diameter.3gpp.req_nodes",
3611
14
            FT_UINT32, BASE_HEX, NULL, 0x0,
3612
14
            NULL, HFILL }
3613
14
        },
3614
14
        { &hf_diameter_3gpp_req_nodes_bit0,
3615
14
            { "MME", "diameter.3gpp.req_nodes_bit0",
3616
14
            FT_BOOLEAN, 32, NULL, 0x00000001,
3617
14
            NULL, HFILL }
3618
14
        },
3619
14
        { &hf_diameter_3gpp_req_nodes_bit1,
3620
14
            { "SGSN", "diameter.3gpp.req_nodes_bit1",
3621
14
            FT_BOOLEAN, 32, NULL, 0x00000002,
3622
14
            NULL, HFILL }
3623
14
        },
3624
14
        { &hf_diameter_3gpp_req_nodes_bit2,
3625
14
            { "3GPP-AAA-SERVER-TWAN", "diameter.3gpp.req_nodes_bit2",
3626
14
            FT_BOOLEAN, 32, NULL, 0x00000004,
3627
14
            NULL, HFILL }
3628
14
        },
3629
14
        { &hf_diameter_3gpp_req_nodes_bit3,
3630
14
            { "AMF", "diameter.3gpp.req_nodes_bit3",
3631
14
            FT_BOOLEAN, 32, NULL, 0x00000008,
3632
14
            NULL, HFILL }
3633
14
        },
3634
14
        { &hf_diameter_mbms_service_id,
3635
14
            { "MBMS Service ID",           "diameter.3gpp.mbms_service_id",
3636
14
            FT_UINT24, BASE_HEX, NULL, 0x0,
3637
14
            NULL, HFILL }
3638
14
        },
3639
14
        { &hf_diameter_3gpp_spare_bits,
3640
14
            { "Spare bit(s)", "diameter.3gpp.spare_bits",
3641
14
            FT_UINT32, BASE_HEX, NULL, 0x0,
3642
14
            NULL, HFILL }
3643
14
        },
3644
14
        { &hf_diameter_3gpp_uar_flags_flags,
3645
14
            { "Flags", "diameter.3gpp.uar_flags_flags",
3646
14
            FT_UINT32, BASE_HEX, NULL, 0x0,
3647
14
            NULL, HFILL }
3648
14
        },
3649
14
        { &hf_diameter_3gpp_uar_flags_flags_spare_bits,
3650
14
            { "Spare", "diameter.3gpp.uar_flags_flags_spare_bits",
3651
14
            FT_UINT32, BASE_HEX, NULL, 0xFFFFFFFE,
3652
14
            NULL, HFILL }
3653
14
        },
3654
14
        { &hf_diameter_3gpp_uar_flags_flags_bit0,
3655
14
            { "Emergency registration", "diameter.3gpp.uar_flags_flags_bit0",
3656
14
            FT_BOOLEAN, 32, TFS(&tfs_set_notset), 0x00000001,
3657
14
            NULL, HFILL }
3658
14
        },
3659
14
        { &hf_diameter_3gpp_feature_list_flags,
3660
14
            { "Feature-List Flags", "diameter.3gpp.feature_list_flags",
3661
14
            FT_UINT32, BASE_HEX, NULL, 0x0,
3662
14
            NULL, HFILL }
3663
14
        },
3664
14
        { &hf_diameter_3gpp_cx_feature_list_flags,
3665
14
            { "CX Feature-List Flags", "diameter.3gpp.cx_feature_list_flags",
3666
14
            FT_UINT32, BASE_HEX, NULL, 0x0,
3667
14
            NULL, HFILL }
3668
14
        },
3669
14
        { &hf_diameter_3gpp_cx_feature_list_1_flags_bit0,
3670
14
            { "Shared IFC Sets", "diameter.3gpp.cx_feature_list_1_flags_bit0",
3671
14
            FT_BOOLEAN, 32, TFS(&tfs_supported_not_supported), 0x00000001,
3672
14
            NULL, HFILL }
3673
14
        },
3674
14
        { &hf_diameter_3gpp_cx_feature_list_1_flags_bit1,
3675
14
            { "Alias Indication", "diameter.3gpp.cx_feature_list_1_flags_bit1",
3676
14
            FT_BOOLEAN, 32, TFS(&tfs_supported_not_supported), 0x00000002,
3677
14
            NULL, HFILL }
3678
14
        },
3679
14
        { &hf_diameter_3gpp_cx_feature_list_1_flags_bit2,
3680
14
            { "IMS Restoration Indication", "diameter.3gpp.cx_feature_list_1_flags_bit2",
3681
14
            FT_BOOLEAN, 32, TFS(&tfs_supported_not_supported), 0x00000004,
3682
14
            NULL, HFILL }
3683
14
        },
3684
14
        { &hf_diameter_3gpp_cx_feature_list_1_flags_bit3,
3685
14
            { "P-CSCF Restoration mechanism", "diameter.3gpp.cx_feature_list_1_flags_bit3",
3686
14
            FT_BOOLEAN, 32, TFS(&tfs_supported_not_supported), 0x00000008,
3687
14
            NULL, HFILL }
3688
14
        },
3689
14
        { &hf_diameter_3gpp_cx_feature_list_1_flags_spare_bits,
3690
14
        { "Spare", "diameter.3gpp.cx_feature_list_1_flags_spare",
3691
14
        FT_UINT32, BASE_HEX, NULL, 0xfffffff0,
3692
14
        NULL, HFILL }
3693
14
        },
3694
14
        { &hf_diameter_3gpp_feature_list1_sh_flags_bit0,
3695
14
        { "Notif-Eff", "diameter.3gpp.feature_list1_sh_flags_bit0",
3696
14
        FT_BOOLEAN, 32, TFS(&tfs_supported_not_supported), 0x00000001,
3697
14
        NULL, HFILL }
3698
14
        },
3699
14
        { &hf_diameter_3gpp_feature_list1_sh_flags_bit1,
3700
14
        { "Update-Eff", "diameter.3gpp.feature_list1_sh_flags_bit1",
3701
14
        FT_BOOLEAN, 32, TFS(&tfs_supported_not_supported), 0x00000002,
3702
14
        NULL, HFILL }
3703
14
        },
3704
14
        { &hf_diameter_3gpp_feature_list1_sh_flags_bit2,
3705
14
        { "Update-Eff-Enhance", "diameter.3gpp.feature_list1_sh_flags_bit2",
3706
14
        FT_BOOLEAN, 32, TFS(&tfs_supported_not_supported), 0x00000004,
3707
14
        NULL, HFILL }
3708
14
        },
3709
14
        { &hf_diameter_3gpp_feature_list1_sh_flags_bit3,
3710
14
        { "Additional-MSISDN", "diameter.3gpp.feature_list1_sh_flags_bit3",
3711
14
        FT_BOOLEAN, 32, TFS(&tfs_supported_not_supported), 0x00000008,
3712
14
        NULL, HFILL }
3713
14
        },
3714
14
        { &hf_diameter_3gpp_feature_list1_sh_flags_spare_bits,
3715
14
        { "Spare", "diameter.3gpp.feature_list1_sh_flags_spare",
3716
14
        FT_UINT32, BASE_HEX, NULL, 0xfffffff0,
3717
14
        NULL, HFILL }
3718
14
        },
3719
14
        { &hf_diameter_3gpp_feature_list1_s6a_flags_bit0,
3720
14
            { "Operator Determined Barring of all Packet Oriented Services", "diameter.3gpp.feature_list1_s6a_flags_bit0",
3721
14
            FT_BOOLEAN, 32, TFS(&tfs_supported_not_supported), 0x00000001,
3722
14
            NULL, HFILL }
3723
14
        },
3724
14
        { &hf_diameter_3gpp_feature_list1_s6a_flags_bit1,
3725
14
            { "Operator Determined Barring of Packet Oriented Services from access points that are within the HPLMN whilst the subscriber is roaming in a VPLMN", "diameter.3gpp.feature_list1_s6a_flags_bit1",
3726
14
            FT_BOOLEAN, 32, TFS(&tfs_supported_not_supported), 0x00000002,
3727
14
            NULL, HFILL }
3728
14
        },
3729
14
        { &hf_diameter_3gpp_feature_list1_s6a_flags_bit2,
3730
14
            { "Operator Determined Barring of Packet Oriented Services from access points that are within the roamed to VPLMN", "diameter.3gpp.feature_list1_s6a_flags_bit2",
3731
14
            FT_BOOLEAN, 32, TFS(&tfs_supported_not_supported), 0x00000004,
3732
14
            NULL, HFILL }
3733
14
        },
3734
14
        { &hf_diameter_3gpp_feature_list1_s6a_flags_bit3,
3735
14
            { "Operator Determined Barring of all outgoing calls", "diameter.3gpp.feature_list1_s6a_flags_bit3",
3736
14
            FT_BOOLEAN, 32, TFS(&tfs_supported_not_supported), 0x00000008,
3737
14
            NULL, HFILL }
3738
14
        },
3739
14
        { &hf_diameter_3gpp_feature_list1_s6a_flags_bit4,
3740
14
            { "Operator Determined Barring of all outgoing international calls", "diameter.3gpp.feature_list1_s6a_flags_bit4",
3741
14
            FT_BOOLEAN, 32, TFS(&tfs_supported_not_supported), 0x00000010,
3742
14
            NULL, HFILL }
3743
14
        },
3744
14
        { &hf_diameter_3gpp_feature_list1_s6a_flags_bit5,
3745
14
            { "Operator Determined Barring of all outgoing international calls except those directed to the home PLMN country", "diameter.3gpp.feature_list1_s6a_flags_bit5",
3746
14
            FT_BOOLEAN, 32, TFS(&tfs_supported_not_supported), 0x00000020,
3747
14
            NULL, HFILL }
3748
14
        },
3749
14
        { &hf_diameter_3gpp_feature_list1_s6a_flags_bit6,
3750
14
            { "Operator Determined Barring of all outgoing inter-zonal calls", "diameter.3gpp.feature_list1_s6a_flags_bit6",
3751
14
            FT_BOOLEAN, 32, TFS(&tfs_supported_not_supported), 0x00000040,
3752
14
            NULL, HFILL }
3753
14
        },
3754
14
        { &hf_diameter_3gpp_feature_list1_s6a_flags_bit7,
3755
14
            { "Operator Determined Barring of all outgoing inter-zonal calls except those directed to the home PLMN country", "diameter.3gpp.feature_list1_s6a_flags_bit7",
3756
14
            FT_BOOLEAN, 32, TFS(&tfs_supported_not_supported), 0x00000080,
3757
14
            NULL, HFILL }
3758
14
        },
3759
14
        { &hf_diameter_3gpp_feature_list1_s6a_flags_bit8,
3760
14
            { "Operator Determined Barring of all outgoing international calls except those directed to the home PLMN country and Barring of all outgoing inter-zonal calls", "diameter.3gpp.feature_list1_s6a_flags_bit8",
3761
14
            FT_BOOLEAN, 32, TFS(&tfs_supported_not_supported), 0x00000100,
3762
14
            NULL, HFILL }
3763
14
        },
3764
14
        { &hf_diameter_3gpp_feature_list1_s6a_flags_bit9,
3765
14
            { "Regional Subscription", "diameter.3gpp.feature_list1_s6a_flags_bit9",
3766
14
            FT_BOOLEAN, 32, TFS(&tfs_supported_not_supported), 0x00000200,
3767
14
            NULL, HFILL }
3768
14
        },
3769
3770
14
        { &hf_diameter_3gpp_feature_list1_s6a_flags_bit10,
3771
14
            { "Trace Function", "diameter.3gpp.feature_list1_s6a_flags_bit10",
3772
14
            FT_BOOLEAN, 32, TFS(&tfs_supported_not_supported), 0x00000400,
3773
14
            NULL, HFILL }
3774
14
        },
3775
14
        { &hf_diameter_3gpp_feature_list1_s6a_flags_bit11,
3776
14
            { "All LCS Privacy Exception Classes", "diameter.3gpp.feature_list1_s6a_flags_bit11",
3777
14
            FT_BOOLEAN, 32, TFS(&tfs_supported_not_supported), 0x00000800,
3778
14
            NULL, HFILL }
3779
14
        },
3780
14
        { &hf_diameter_3gpp_feature_list1_s6a_flags_bit12,
3781
14
            { "Allow location by any LCS client", "diameter.3gpp.feature_list1_s6a_flags_bit12",
3782
14
            FT_BOOLEAN, 32, TFS(&tfs_supported_not_supported), 0x00001000,
3783
14
            NULL, HFILL }
3784
14
        },
3785
14
        { &hf_diameter_3gpp_feature_list1_s6a_flags_bit13,
3786
14
            { "Allow location by any value added LCS client to which a call/session is established from the target UE", "diameter.3gpp.feature_list1_s6a_flags_bit13",
3787
14
            FT_BOOLEAN, 32, TFS(&tfs_supported_not_supported), 0x00002000,
3788
14
            NULL, HFILL }
3789
14
        },
3790
14
        { &hf_diameter_3gpp_feature_list1_s6a_flags_bit14,
3791
14
            { "Allow location by designated external value added LCS clients", "diameter.3gpp.feature_list1_s6a_flags_bit14",
3792
14
            FT_BOOLEAN, 32, TFS(&tfs_supported_not_supported), 0x00004000,
3793
14
            NULL, HFILL }
3794
14
        },
3795
14
        { &hf_diameter_3gpp_feature_list1_s6a_flags_bit15,
3796
14
            { "Allow location by designated PLMN operator LCS clients", "diameter.3gpp.feature_list1_s6a_flags_bit15",
3797
14
            FT_BOOLEAN, 32, TFS(&tfs_supported_not_supported), 0x00008000,
3798
14
            NULL, HFILL }
3799
14
        },
3800
14
        { &hf_diameter_3gpp_feature_list1_s6a_flags_bit16,
3801
14
            { "Allow location by LCS clients of a designated LCS service type", "diameter.3gpp.feature_list1_s6a_flags_bit16",
3802
14
            FT_BOOLEAN, 32, TFS(&tfs_supported_not_supported), 0x00010000,
3803
14
            NULL, HFILL }
3804
14
        },
3805
14
        { &hf_diameter_3gpp_feature_list1_s6a_flags_bit17,
3806
14
            { "All Mobile Originating Location Request Classes", "diameter.3gpp.feature_list1_s6a_flags_bit17",
3807
14
            FT_BOOLEAN, 32, TFS(&tfs_supported_not_supported), 0x00020000,
3808
14
            NULL, HFILL }
3809
14
        },
3810
14
        { &hf_diameter_3gpp_feature_list1_s6a_flags_bit18,
3811
14
            { "Allow an MS to request its own location", "diameter.3gpp.feature_list1_s6a_flags_bit18",
3812
14
            FT_BOOLEAN, 32, TFS(&tfs_supported_not_supported), 0x00040000,
3813
14
            NULL, HFILL }
3814
14
        },
3815
14
        { &hf_diameter_3gpp_feature_list1_s6a_flags_bit19,
3816
14
            { "Allow an MS to perform self location without interaction with the PLMN", "diameter.3gpp.feature_list1_s6a_flags_bit19",
3817
14
            FT_BOOLEAN, 32, TFS(&tfs_supported_not_supported), 0x00080000,
3818
14
            NULL, HFILL }
3819
14
        },
3820
14
        { &hf_diameter_3gpp_feature_list1_s6a_flags_bit20,
3821
14
            { "Allow an MS to request transfer of its location to another LCS client", "diameter.3gpp.feature_list1_s6a_flags_bit20",
3822
14
            FT_BOOLEAN, 32, TFS(&tfs_supported_not_supported), 0x00100000,
3823
14
            NULL, HFILL }
3824
14
        },
3825
14
        { &hf_diameter_3gpp_feature_list1_s6a_flags_bit21,
3826
14
            { "Short Message MO-PP", "diameter.3gpp.feature_list1_s6a_flags_bit21",
3827
14
            FT_BOOLEAN, 32, TFS(&tfs_supported_not_supported), 0x00200000,
3828
14
            NULL, HFILL }
3829
14
        },
3830
14
        { &hf_diameter_3gpp_feature_list1_s6a_flags_bit22,
3831
14
            { "Barring of Outgoing Calls", "diameter.3gpp.feature_list1_s6a_flags_bit22",
3832
14
            FT_BOOLEAN, 32, TFS(&tfs_supported_not_supported), 0x00400000,
3833
14
            NULL, HFILL }
3834
14
        },
3835
14
        { &hf_diameter_3gpp_feature_list1_s6a_flags_bit23,
3836
14
            { "Barring of all outgoing calls", "diameter.3gpp.feature_list1_s6a_flags_bit23",
3837
14
            FT_BOOLEAN, 32, TFS(&tfs_supported_not_supported), 0x00800000,
3838
14
            NULL, HFILL }
3839
14
        },
3840
14
        { &hf_diameter_3gpp_feature_list1_s6a_flags_bit24,
3841
14
            { "Barring of outgoing international calls", "diameter.3gpp.feature_list1_s6a_flags_bit24",
3842
14
            FT_BOOLEAN, 32, TFS(&tfs_supported_not_supported), 0x01000000,
3843
14
            NULL, HFILL }
3844
14
        },
3845
14
        { &hf_diameter_3gpp_feature_list1_s6a_flags_bit25,
3846
14
            { "Barring of outgoing international calls except those directed to the home PLMN Country", "diameter.3gpp.feature_list1_s6a_flags_bit25",
3847
14
            FT_BOOLEAN, 32, TFS(&tfs_supported_not_supported), 0x02000000,
3848
14
            NULL, HFILL }
3849
14
        },
3850
14
        { &hf_diameter_3gpp_feature_list1_s6a_flags_bit26,
3851
14
            { "UE Reachability Notification", "diameter.3gpp.feature_list1_s6a_flags_bit26",
3852
14
            FT_BOOLEAN, 32, TFS(&tfs_supported_not_supported), 0x04000000,
3853
14
            NULL, HFILL }
3854
14
        },
3855
14
        { &hf_diameter_3gpp_feature_list1_s6a_flags_bit27,
3856
14
            { "Terminating Access Domain Selection Data Retrieval", "diameter.3gpp.feature_list1_s6a_flags_bit27",
3857
14
            FT_BOOLEAN, 32, TFS(&tfs_supported_not_supported), 0x08000000,
3858
14
            NULL, HFILL }
3859
14
        },
3860
14
        { &hf_diameter_3gpp_feature_list1_s6a_flags_bit28,
3861
14
            { "State/Location Information Retrieval", "diameter.3gpp.feature_list1_s6a_flags_bit28",
3862
14
            FT_BOOLEAN, 32, TFS(&tfs_supported_not_supported), 0x10000000,
3863
14
            NULL, HFILL }
3864
14
        },
3865
14
        { &hf_diameter_3gpp_feature_list1_s6a_flags_bit29,
3866
14
            { "Partial Purge from a Combined MME/SGSN", "diameter.3gpp.feature_list1_s6a_flags_bit29",
3867
14
            FT_BOOLEAN, 32, TFS(&tfs_supported_not_supported), 0x20000000,
3868
14
            NULL, HFILL }
3869
14
        },
3870
14
        { &hf_diameter_3gpp_feature_list1_s6a_flags_bit30,
3871
14
            { "UE Time Zone Retrieval", "diameter.3gpp.feature_list1_s6a_flags1_bit30",
3872
14
            FT_BOOLEAN, 32, TFS(&tfs_supported_not_supported), 0x40000000,
3873
14
            NULL, HFILL }
3874
14
        },
3875
14
        { &hf_diameter_3gpp_feature_list1_s6a_flags_bit31,
3876
14
            { "Additional MSISDN", "diameter.3gpp.feature_list1_s6a_flags_bit31",
3877
14
            FT_BOOLEAN, 32, TFS(&tfs_supported_not_supported), 0x80000000,
3878
14
            NULL, HFILL }
3879
14
        },
3880
14
        { &hf_diameter_3gpp_feature_list2_s6a_flags_bit0,
3881
14
            { "SMS in MME", "diameter.3gpp.feature_list2_s6a_flags_bit0",
3882
14
            FT_BOOLEAN, 32, TFS(&tfs_supported_not_supported), 0x00000001,
3883
14
            NULL, HFILL }
3884
14
        },
3885
14
        { &hf_diameter_3gpp_feature_list2_s6a_flags_bit1,
3886
14
            { "SMS in SGSN", "diameter.3gpp.feature_list2_s6a_flags_bit1",
3887
14
            FT_BOOLEAN, 32, TFS(&tfs_supported_not_supported), 0x00000002,
3888
14
            NULL, HFILL }
3889
14
        },
3890
14
        { &hf_diameter_3gpp_feature_list2_s6a_flags_bit2,
3891
14
            { "Dia-LCS-all-PrivExcep", "diameter.3gpp.feature_list2_s6a_flags_bit2",
3892
14
            FT_BOOLEAN, 32, TFS(&tfs_supported_not_supported), 0x00000004,
3893
14
            NULL, HFILL }
3894
14
        },
3895
14
        { &hf_diameter_3gpp_feature_list2_s6a_flags_bit3,
3896
14
            { "Dia-LCS-Universal", "diameter.3gpp.feature_list2_s6a_flags_bit3",
3897
14
            FT_BOOLEAN, 32, TFS(&tfs_supported_not_supported), 0x00000008,
3898
14
            NULL, HFILL }
3899
14
        },
3900
14
        { &hf_diameter_3gpp_feature_list2_s6a_flags_bit4,
3901
14
            { "Dia-LCS-CallSessionRelated", "diameter.3gpp.feature_list2_s6a_flags_bit4",
3902
14
            FT_BOOLEAN, 32, TFS(&tfs_supported_not_supported), 0x00000010,
3903
14
            NULL, HFILL }
3904
14
        },
3905
14
        { &hf_diameter_3gpp_feature_list2_s6a_flags_bit5,
3906
14
            { "Dia-LCS-CallSessionUnrelated", "diameter.3gpp.feature_list2_s6a_flags_bit5",
3907
14
            FT_BOOLEAN, 32, TFS(&tfs_supported_not_supported), 0x00000020,
3908
14
            NULL, HFILL }
3909
14
        },
3910
14
        { &hf_diameter_3gpp_feature_list2_s6a_flags_bit6,
3911
14
            { "Dia-LCS-PLMNOperator", "diameter.3gpp.feature_list2_s6a_flags_bit6",
3912
14
            FT_BOOLEAN, 32, TFS(&tfs_supported_not_supported), 0x00000040,
3913
14
            NULL, HFILL }
3914
14
        },
3915
14
        { &hf_diameter_3gpp_feature_list2_s6a_flags_bit7,
3916
14
            { "Dia-LCS-ServiceType", "diameter.3gpp.feature_list2_s6a_flags_bit7",
3917
14
            FT_BOOLEAN, 32, TFS(&tfs_supported_not_supported), 0x00000080,
3918
14
            NULL, HFILL }
3919
14
        },
3920
14
        { &hf_diameter_3gpp_feature_list2_s6a_flags_bit8,
3921
14
            { "Dia-LCS-all-MOLR-SS", "diameter.3gpp.feature_list2_s6a_flags_bit8",
3922
14
            FT_BOOLEAN, 32, TFS(&tfs_supported_not_supported), 0x00000100,
3923
14
            NULL, HFILL }
3924
14
        },
3925
14
        { &hf_diameter_3gpp_feature_list2_s6a_flags_bit9,
3926
14
            { "Dia-LCS-BasicSelfLocation", "diameter.3gpp.feature_list2_s6a_flags_bit9",
3927
14
            FT_BOOLEAN, 32, TFS(&tfs_supported_not_supported), 0x00000200,
3928
14
            NULL, HFILL }
3929
14
        },
3930
14
        { &hf_diameter_3gpp_feature_list2_s6a_flags_bit10,
3931
14
            { "Dia-LCS-AutonomousSelfLocation", "diameter.3gpp.feature_list2_s6a_flags_bit10",
3932
14
            FT_BOOLEAN, 32, TFS(&tfs_supported_not_supported), 0x00000400,
3933
14
            NULL, HFILL }
3934
14
        },
3935
14
        { &hf_diameter_3gpp_feature_list2_s6a_flags_bit11,
3936
14
            { "Dia-LCS-TransferToThirdParty", "diameter.3gpp.feature_list2_s6a_flags_bit11",
3937
14
            FT_BOOLEAN, 32, TFS(&tfs_supported_not_supported), 0x00000800,
3938
14
            NULL, HFILL }
3939
14
        },
3940
14
        { &hf_diameter_3gpp_feature_list2_s6a_flags_bit12,
3941
14
            { "Gdd-in-SGSN", "diameter.3gpp.feature_list2_s6a_flags_bit12",
3942
14
            FT_BOOLEAN, 32, TFS(&tfs_supported_not_supported), 0x00001000,
3943
14
            NULL, HFILL }
3944
14
        },
3945
14
        { &hf_diameter_3gpp_feature_list2_s6a_flags_bit13,
3946
14
            { "Optimized-LCS-Proc-Support", "diameter.3gpp.feature_list2_s6a_flags_bit13",
3947
14
            FT_BOOLEAN, 32, TFS(&tfs_supported_not_supported), 0x00002000,
3948
14
            NULL, HFILL }
3949
14
        },
3950
14
        { &hf_diameter_3gpp_feature_list2_s6a_flags_bit14,
3951
14
            { "SGSN CAMEL Capability", "diameter.3gpp.feature_list2_s6a_flags_bit14",
3952
14
            FT_BOOLEAN, 32, TFS(&tfs_supported_not_supported), 0x00004000,
3953
14
            NULL, HFILL }
3954
14
        },
3955
14
        { &hf_diameter_3gpp_feature_list2_s6a_flags_bit15,
3956
14
            { "ProSe Capability", "diameter.3gpp.feature_list2_s6a_flags_bit15",
3957
14
            FT_BOOLEAN, 32, TFS(&tfs_supported_not_supported), 0x00008000,
3958
14
            NULL, HFILL }
3959
14
        },
3960
14
        { &hf_diameter_3gpp_feature_list2_s6a_flags_bit16,
3961
14
            { "P-CSCF Restoration", "diameter.3gpp.feature_list2_s6a_flags_bit16",
3962
14
            FT_BOOLEAN, 32, TFS(&tfs_supported_not_supported), 0x00010000,
3963
14
            NULL, HFILL }
3964
14
        },
3965
14
        { &hf_diameter_3gpp_feature_list2_s6a_flags_bit17,
3966
14
            { "Reset-IDs", "diameter.3gpp.feature_list2_s6a_flags_bit17",
3967
14
            FT_BOOLEAN, 32, TFS(&tfs_supported_not_supported), 0x00020000,
3968
14
            NULL, HFILL }
3969
14
        },
3970
14
        { &hf_diameter_3gpp_feature_list2_s6a_flags_bit18,
3971
14
            { "Communication-Pattern", "diameter.3gpp.feature_list2_s6a_flags_bit18",
3972
14
            FT_BOOLEAN, 32, TFS(&tfs_supported_not_supported), 0x00040000,
3973
14
            NULL, HFILL }
3974
14
        },
3975
14
        { &hf_diameter_3gpp_feature_list2_s6a_flags_bit19,
3976
14
            { "Monitoring-Event", "diameter.3gpp.feature_list2_s6a_flags_bit19",
3977
14
            FT_BOOLEAN, 32, TFS(&tfs_supported_not_supported), 0x00080000,
3978
14
            NULL, HFILL }
3979
14
        },
3980
14
        { &hf_diameter_3gpp_feature_list2_s6a_flags_bit20,
3981
14
            { "Dedicated Core Networks", "diameter.3gpp.feature_list2_s6a_flags_bit20",
3982
14
            FT_BOOLEAN, 32, TFS(&tfs_supported_not_supported), 0x00100000,
3983
14
            NULL, HFILL }
3984
14
        },
3985
14
        { &hf_diameter_3gpp_feature_list2_s6a_flags_bit21,
3986
14
            { "Non-IP PDN Type APNs", "diameter.3gpp.feature_list2_s6a_flags_bit21",
3987
14
            FT_BOOLEAN, 32, TFS(&tfs_supported_not_supported), 0x00200000,
3988
14
            NULL, HFILL }
3989
14
        },
3990
14
        { &hf_diameter_3gpp_feature_list2_s6a_flags_bit22,
3991
14
            { "Non-IP PDP Type APNs", "diameter.3gpp.feature_list2_s6a_flags_bit22",
3992
14
            FT_BOOLEAN, 32, TFS(&tfs_supported_not_supported), 0x00400000,
3993
14
            NULL, HFILL }
3994
14
        },
3995
14
        { &hf_diameter_3gpp_feature_list2_s6a_flags_bit23,
3996
14
            { "Removal of MSISDN", "diameter.3gpp.feature_list2_s6a_flags_bit23",
3997
14
            FT_BOOLEAN, 32, TFS(&tfs_supported_not_supported), 0x00800000,
3998
14
            NULL, HFILL }
3999
14
        },
4000
14
        { &hf_diameter_3gpp_feature_list2_s6a_flags_bit24,
4001
14
            { "Emergency Service Continuity", "diameter.3gpp.feature_list2_s6a_flags_bit24",
4002
14
            FT_BOOLEAN, 32, TFS(&tfs_supported_not_supported), 0x01000000,
4003
14
            NULL, HFILL }
4004
14
        },
4005
14
        { &hf_diameter_3gpp_feature_list2_s6a_flags_bit25,
4006
14
            { "V2X Capability", "diameter.3gpp.feature_list2_s6a_flags_bit25",
4007
14
            FT_BOOLEAN, 32, TFS(&tfs_supported_not_supported), 0x02000000,
4008
14
            NULL, HFILL }
4009
14
        },
4010
14
        { &hf_diameter_3gpp_feature_list2_s6a_flags_bit26,
4011
14
            { "External-Identifier", "diameter.3gpp.feature_list2_s6a_flags_bit26",
4012
14
            FT_BOOLEAN, 32, TFS(&tfs_supported_not_supported), 0x04000000,
4013
14
            NULL, HFILL }
4014
14
        },
4015
14
        { &hf_diameter_3gpp_feature_list2_s6a_flags_bit27,
4016
14
            { "NR as Secondary RAT", "diameter.3gpp.feature_list2_s6a_flags_bit27",
4017
14
            FT_BOOLEAN, 32, TFS(&tfs_supported_not_supported), 0x08000000,
4018
14
            NULL, HFILL }
4019
14
        },
4020
14
        { &hf_diameter_3gpp_feature_list2_s6a_flags_bit28,
4021
14
            { "Unlicensed Spectrum as Secondary RAT", "diameter.3gpp.feature_list2_s6a_flags_bit28",
4022
14
            FT_BOOLEAN, 32, TFS(&tfs_supported_not_supported), 0x10000000,
4023
14
            NULL, HFILL }
4024
14
        },
4025
14
        { &hf_diameter_3gpp_feature_list2_s6a_flags_bit29,
4026
14
            { "Ethernet PDN Type APNs", "diameter.3gpp.feature_list2_s6a_flags_bit29",
4027
14
            FT_BOOLEAN, 32, TFS(&tfs_supported_not_supported), 0x20000000,
4028
14
            NULL, HFILL }
4029
14
        },
4030
14
        { &hf_diameter_3gpp_feature_list2_s6a_flags_bit30,
4031
14
            { "Extended Reference IDs", "diameter.3gpp.feature_list2_s6a_flags_bit30",
4032
14
            FT_BOOLEAN, 32, TFS(&tfs_supported_not_supported), 0x40000000,
4033
14
            NULL, HFILL }
4034
14
        },
4035
14
        { &hf_diameter_3gpp_feature_list2_s6a_flags_spare_bits,
4036
14
        { "Spare", "diameter.3gpp.feature_list2_s6a_flags_spare",
4037
14
            FT_UINT32, BASE_HEX, NULL, 0x80000000,
4038
14
            NULL, HFILL }
4039
14
        },
4040
14
        { &hf_diameter_3gpp_feature_list_gx_flags,
4041
14
        { "GX Feature-List Flags", "diameter.3gpp.gx_feature_list_flags",
4042
14
            FT_UINT32, BASE_HEX, NULL, 0x0,
4043
14
            NULL, HFILL }
4044
14
        },
4045
14
        { &hf_diameter_3gpp_feature_list1_gx_flags_bit0,
4046
14
            { "Rel-8 Gx", "diameter.3gpp.feature_list1_gx_flags_bit0",
4047
14
            FT_BOOLEAN, 32, TFS(&tfs_supported_not_supported), 0x00000001,
4048
14
            NULL, HFILL }
4049
14
        },
4050
14
        { &hf_diameter_3gpp_feature_list1_gx_flags_bit1,
4051
14
            { "Rel-9 Gx", "diameter.3gpp.feature_list1_gx_flags_bit1",
4052
14
            FT_BOOLEAN, 32, TFS(&tfs_supported_not_supported), 0x00000002,
4053
14
            NULL, HFILL }
4054
14
        },
4055
14
        { &hf_diameter_3gpp_feature_list1_gx_flags_bit2,
4056
14
            { "Provisioning AF Signaling IP Flow Information",
4057
14
              "diameter.3gpp.feature_list1_gx_flags_bit2",
4058
14
            FT_BOOLEAN, 32, TFS(&tfs_supported_not_supported),  0x00000004,
4059
14
            NULL, HFILL }
4060
14
        },
4061
14
        { &hf_diameter_3gpp_feature_list1_gx_flags_bit3,
4062
14
            { "Rel-10 Gx", "diameter.3gpp.feature_list1_gx_flags_bit3",
4063
14
            FT_BOOLEAN, 32, TFS(&tfs_supported_not_supported), 0x00000008,
4064
14
            NULL, HFILL }
4065
14
        },
4066
14
        { &hf_diameter_3gpp_feature_list1_gx_flags_bit4,
4067
14
            { "Sponsored Data Connectivity",
4068
14
              "diameter.3gpp.feature_list1_gx_flags_bit4",
4069
14
            FT_BOOLEAN, 32, TFS(&tfs_supported_not_supported), 0x00000010,
4070
14
            NULL, HFILL }
4071
14
        },
4072
14
        { &hf_diameter_3gpp_feature_list1_gx_flags_bit5,
4073
14
            { "IP Flow Mobility", "diameter.3gpp.feature_list1_gx_flags_bit5",
4074
14
            FT_BOOLEAN, 32, TFS(&tfs_supported_not_supported),  0x00000020,
4075
14
            NULL, HFILL }
4076
14
        },
4077
14
        { &hf_diameter_3gpp_feature_list1_gx_flags_bit6,
4078
14
            { "ADC", "diameter.3gpp.feature_list1_gx_flags_bit6",
4079
14
            FT_BOOLEAN, 32, TFS(&tfs_supported_not_supported),  0x00000040,
4080
14
            NULL, HFILL }
4081
14
        },
4082
14
        { &hf_diameter_3gpp_feature_list1_gx_flags_bit7,
4083
14
            { "vSRVCC", "diameter.3gpp.feature_list1_gx_flags_bit7",
4084
14
            FT_BOOLEAN, 32, TFS(&tfs_supported_not_supported),  0x00000080,
4085
14
            NULL, HFILL }
4086
14
        },
4087
14
        { &hf_diameter_3gpp_feature_list1_gx_flags_bit8,
4088
14
            { "EPC-routed", "diameter.3gpp.feature_list1_gx_flags_bit8",
4089
14
            FT_BOOLEAN, 32, TFS(&tfs_supported_not_supported), 0x00000100,
4090
14
            NULL, HFILL }
4091
14
        },
4092
14
        { &hf_diameter_3gpp_feature_list1_gx_flags_bit9,
4093
14
            { "rSRVCC", "diameter.3gpp.feature_list1_gx_flags_bit9",
4094
14
            FT_BOOLEAN, 32, TFS(&tfs_supported_not_supported), 0x00000200,
4095
14
            NULL, HFILL }
4096
14
        },
4097
14
        { &hf_diameter_3gpp_feature_list1_gx_flags_bit10,
4098
14
            { "NetLoc", "diameter.3gpp.feature_list1_gx_flags_bit10",
4099
14
            FT_BOOLEAN, 32, TFS(&tfs_supported_not_supported),0x00000400,
4100
14
            NULL, HFILL }
4101
14
        },
4102
14
        { &hf_diameter_3gpp_feature_list1_gx_flags_bit11,
4103
14
            { "Usage Monitoring Congestion Handling",
4104
14
              "diameter.3gpp.feature_list1_gx_flags_bit11",
4105
14
            FT_BOOLEAN, 32, TFS(&tfs_supported_not_supported),0x00000800,
4106
14
            NULL, HFILL }
4107
14
        },
4108
14
        { &hf_diameter_3gpp_feature_list1_gx_flags_bit12,
4109
14
            { "Extended Filter", "diameter.3gpp.feature_list1_gx_flags_bit12",
4110
14
            FT_BOOLEAN, 32, TFS(&tfs_supported_not_supported), 0x00001000,
4111
14
            NULL, HFILL }
4112
14
        },
4113
14
        { &hf_diameter_3gpp_feature_list1_gx_flags_bit13,
4114
14
            { "Trusted WLAN Access", "diameter.3gpp.feature_list1_gx_flags_bit13",
4115
14
            FT_BOOLEAN, 32, TFS(&tfs_supported_not_supported), 0x00002000,
4116
14
            NULL, HFILL }
4117
14
        },
4118
14
        { &hf_diameter_3gpp_feature_list1_gx_flags_bit14,
4119
14
            { "SGW Restoration procedures", "diameter.3gpp.feature_list1_gx_flags_bit14",
4120
14
            FT_BOOLEAN, 32, TFS(&tfs_supported_not_supported), 0x00004000,
4121
14
            NULL, HFILL }
4122
14
        },
4123
14
        { &hf_diameter_3gpp_feature_list1_gx_flags_bit15,
4124
14
            { "Time based Usage Monitoring Control", "diameter.3gpp.feature_list1_gx_flags_bit15",
4125
14
            FT_BOOLEAN, 32, TFS(&tfs_supported_not_supported), 0x00008000,
4126
14
            NULL, HFILL }
4127
14
        },
4128
14
        { &hf_diameter_3gpp_feature_list1_gx_flags_bit16,
4129
14
            { "Pending Transaction", "diameter.3gpp.feature_list1_gx_flags_bit16",
4130
14
            FT_BOOLEAN, 32, TFS(&tfs_supported_not_supported), 0x00010000,
4131
14
            NULL, HFILL }
4132
14
        },
4133
14
        { &hf_diameter_3gpp_feature_list1_gx_flags_bit17,
4134
14
            { "Application Based Charging", "diameter.3gpp.feature_list1_gx_flags_bit17",
4135
14
            FT_BOOLEAN, 32, TFS(&tfs_supported_not_supported), 0x00020000,
4136
14
            NULL, HFILL }
4137
14
        },
4138
14
        { &hf_diameter_3gpp_feature_list1_gx_flags_bit18,
4139
14
        { "Spare", "diameter.3gpp.feature_list1_gx_flags_bit18",
4140
14
            FT_BOOLEAN, 32, TFS(&tfs_supported_not_supported), 0x00040000,
4141
14
            NULL, HFILL }
4142
14
        },
4143
14
        { &hf_diameter_3gpp_feature_list1_gx_flags_bit19,
4144
14
            { "NetLoc Trusted WLAN", "diameter.3gpp.feature_list1_gx_flags_bit19",
4145
14
            FT_BOOLEAN, 32, TFS(&tfs_supported_not_supported), 0x00080000,
4146
14
            NULL, HFILL }
4147
14
        },
4148
14
        { &hf_diameter_3gpp_feature_list1_gx_flags_bit20,
4149
14
            { "Fixed Broadband Access Convergence", "diameter.3gpp.feature_list1_gx_flags_bit20",
4150
14
            FT_BOOLEAN, 32, TFS(&tfs_supported_not_supported),0x00100000,
4151
14
            NULL, HFILL }
4152
14
        },
4153
14
        { &hf_diameter_3gpp_feature_list1_gx_flags_bit21,
4154
14
            { "Conditional APN Policy Info", "diameter.3gpp.feature_list1_gx_flags_bit21",
4155
14
            FT_BOOLEAN, 32, TFS(&tfs_supported_not_supported), 0x00200000,
4156
14
            NULL, HFILL }
4157
14
        },
4158
14
        { &hf_diameter_3gpp_feature_list1_gx_flags_bit22,
4159
14
            { "RAN and/or NAS release cause", "diameter.3gpp.feature_list1_gx_flags_bit22",
4160
14
            FT_BOOLEAN, 32, TFS(&tfs_supported_not_supported), 0x00400000,
4161
14
            NULL, HFILL }
4162
14
        },
4163
14
        { &hf_diameter_3gpp_feature_list1_gx_flags_bit23,
4164
14
            { "Presence Reporting Area Information reporting", "diameter.3gpp.feature_list1_gx_flags_bit23",
4165
14
            FT_BOOLEAN, 32, TFS(&tfs_supported_not_supported), 0x00800000,
4166
14
            NULL, HFILL }
4167
14
        },
4168
14
        { &hf_diameter_3gpp_feature_list1_gx_flags_bit24,
4169
14
            { "P-CSCF Restoration Enhancement", "diameter.3gpp.feature_list1_gx_flags_bit24",
4170
14
            FT_BOOLEAN, 32, TFS(&tfs_supported_not_supported), 0x01000000,
4171
14
            NULL, HFILL }
4172
14
        },
4173
14
        { &hf_diameter_3gpp_feature_list1_gx_flags_bit25,
4174
14
            { "Mission Critical QCIs", "diameter.3gpp.feature_list1_gx_flags_bit25",
4175
14
            FT_BOOLEAN, 32, TFS(&tfs_supported_not_supported), 0x02000000,
4176
14
            NULL, HFILL }
4177
14
        },
4178
14
        { &hf_diameter_3gpp_feature_list1_gx_flags_bit26,
4179
14
            { "ResShare", "diameter.3gpp.feature_list1_gx_flags_bit26",
4180
14
            FT_BOOLEAN, 32, TFS(&tfs_supported_not_supported), 0x04000000,
4181
14
            NULL, HFILL }
4182
14
        },
4183
14
        { &hf_diameter_3gpp_feature_list1_gx_flags_bit27,
4184
14
            { "ExUsage", "diameter.3gpp.feature_list1_gx_flags_bit27",
4185
14
            FT_BOOLEAN, 32, TFS(&tfs_supported_not_supported), 0x08000000,
4186
14
            NULL, HFILL }
4187
14
        },
4188
14
        { &hf_diameter_3gpp_feature_list1_gx_flags_bit28,
4189
14
        { "NBIFOM", "diameter.3gpp.feature_list1_gx_flags_bit28",
4190
14
            FT_BOOLEAN, 32, TFS(&tfs_supported_not_supported), 0x10000000,
4191
14
            NULL, HFILL }
4192
14
        },
4193
14
        { &hf_diameter_3gpp_feature_list1_gx_flags_bit29,
4194
14
        { "TSC", "diameter.3gpp.feature_list1_gx_flags_bit29",
4195
14
            FT_BOOLEAN, 32, TFS(&tfs_supported_not_supported), 0x20000000,
4196
14
            NULL, HFILL }
4197
14
        },
4198
14
        { &hf_diameter_3gpp_feature_list1_gx_flags_bit30,
4199
14
        { "NetLoc-Untrusted-WLAN", "diameter.3gpp.feature_list1_gx_flags_bit30",
4200
14
            FT_BOOLEAN, 32, TFS(&tfs_supported_not_supported), 0x40000000,
4201
14
            NULL, HFILL }
4202
14
        },
4203
14
        { &hf_diameter_3gpp_feature_list1_gx_flags_bit31,
4204
14
        { "CondPolicyInfo", "diameter.3gpp.feature_list1_gx_flags_bit31",
4205
14
            FT_BOOLEAN, 32, TFS(&tfs_supported_not_supported), 0x80000000,
4206
14
            NULL, HFILL }
4207
14
        },
4208
14
        { &hf_diameter_3gpp_feature_list2_gx_flags_bit0,
4209
14
            { "Enhanced RAN and/or NAS release cause", "diameter.3gpp.feature_list2_gx_flags_bit0",
4210
14
            FT_BOOLEAN, 32, TFS(&tfs_supported_not_supported), 0x00000001,
4211
14
            NULL, HFILL }
4212
14
        },
4213
14
        { &hf_diameter_3gpp_feature_list2_gx_flags_bit1,
4214
14
            { "eNodeB Change", "diameter.3gpp.feature_list2_gx_flags_bit1",
4215
14
            FT_BOOLEAN, 32, TFS(&tfs_supported_not_supported), 0x00000002,
4216
14
            NULL, HFILL }
4217
14
        },
4218
14
        { &hf_diameter_3gpp_feature_list2_gx_flags_bit2,
4219
14
            { "RuleVersioning",
4220
14
              "diameter.3gpp.feature_list2_gx_flags_bit2",
4221
14
            FT_BOOLEAN, 32, TFS(&tfs_supported_not_supported),  0x00000004,
4222
14
            NULL, HFILL }
4223
14
        },
4224
14
        { &hf_diameter_3gpp_feature_list2_gx_flags_bit3,
4225
14
            { "Multiple PRA", "diameter.3gpp.feature_list2_gx_flags_bit3",
4226
14
            FT_BOOLEAN, 32, TFS(&tfs_supported_not_supported), 0x00000008,
4227
14
            NULL, HFILL }
4228
14
        },
4229
14
        { &hf_diameter_3gpp_feature_list2_gx_flags_bit4,
4230
14
            { "CondPolicyInfo DefaultQoS",
4231
14
              "diameter.3gpp.feature_list2_gx_flags_bit4",
4232
14
            FT_BOOLEAN, 32, TFS(&tfs_supported_not_supported), 0x00000010,
4233
14
            NULL, HFILL }
4234
14
        },
4235
14
        { &hf_diameter_3gpp_feature_list2_gx_flags_bit5,
4236
14
            { "Rule Bound to Default Bearer", "diameter.3gpp.feature_list2_gx_flags_bit5",
4237
14
            FT_BOOLEAN, 32, TFS(&tfs_supported_not_supported),  0x00000020,
4238
14
            NULL, HFILL }
4239
14
        },
4240
14
        { &hf_diameter_3gpp_feature_list2_gx_flags_bit6,
4241
14
            { "3GPP PS-Data Off", "diameter.3gpp.feature_list2_gx_flags_bit6",
4242
14
            FT_BOOLEAN, 32, TFS(&tfs_supported_not_supported),  0x00000040,
4243
14
            NULL, HFILL }
4244
14
        },
4245
14
        { &hf_diameter_3gpp_feature_list2_gx_flags_bit7,
4246
14
            { "Extended BW for NR", "diameter.3gpp.feature_list2_gx_flags_bit7",
4247
14
            FT_BOOLEAN, 32, TFS(&tfs_supported_not_supported),  0x00000080,
4248
14
            NULL, HFILL }
4249
14
        },
4250
14
        { &hf_diameter_3gpp_cms_spare_bits,
4251
14
            { "Spare", "diameter.3gpp.cms.spare",
4252
14
            FT_UINT32, BASE_HEX, NULL, 0x01FFFFFF,
4253
14
            NULL, HFILL }
4254
14
        },
4255
14
        { &hf_diameter_3gpp_cms_no_gyn_session_serv_not_allowed,
4256
14
            { "No Gyn Session, service not allowed", "diameter.3gpp.cms.no_gyn_session_serv_not_allowed",
4257
14
            FT_BOOLEAN, 32, TFS(&tfs_set_notset), 0x02000000,
4258
14
            NULL, HFILL }
4259
14
        },
4260
14
        { &hf_diameter_3gpp_cms_no_gyn_session_serv_allowed,
4261
14
            { "No Gyn Session, service allowed", "diameter.3gpp.cms.no_gyn_session_serv_allowed",
4262
14
            FT_BOOLEAN, 32, TFS(&tfs_set_notset), 0x04000000,
4263
14
            NULL, HFILL }
4264
14
        },
4265
14
        { &hf_diameter_3gpp_cms_rating_failed,
4266
14
            { "Rating Failed", "diameter.3gpp.cms.rating_failed",
4267
14
            FT_BOOLEAN, 32, TFS(&tfs_set_notset), 0x08000000,
4268
14
            NULL, HFILL }
4269
14
        },
4270
14
        { &hf_diameter_3gpp_cms_user_unknown,
4271
14
            { "User Unknown", "diameter.3gpp.cms.user_unknown",
4272
14
            FT_BOOLEAN, 32, TFS(&tfs_set_notset), 0x10000000,
4273
14
            NULL, HFILL }
4274
14
        },
4275
14
        { &hf_diameter_3gpp_cms_auth_rej,
4276
14
            { "Authorization Rejected", "diameter.3gpp.cms.auth_rej",
4277
14
            FT_BOOLEAN, 32, TFS(&tfs_set_notset), 0x20000000,
4278
14
            NULL, HFILL }
4279
14
        },
4280
14
        { &hf_diameter_3gpp_cms_credit_ctrl_not_applicable,
4281
14
            { "Credit Control Not Applicable", "diameter.3gpp.cms.credit_ctrl_not_applicable",
4282
14
            FT_BOOLEAN, 32, TFS(&tfs_set_notset), 0x40000000,
4283
14
            NULL, HFILL }
4284
14
        },
4285
14
        { &hf_diameter_3gpp_cms_end_user_serv_status,
4286
14
            { "End User Service Denied", "diameter.3gpp.cms.end_user_serv_status",
4287
14
            FT_BOOLEAN, 32, TFS(&tfs_set_notset), 0x80000000,
4288
14
            NULL, HFILL }
4289
14
        },
4290
14
        { &hf_diameter_3gpp_secondary_rat_type,
4291
14
            { "Secondary RAT Type", "diameter.3gpp.secondary_rat_type",
4292
14
            FT_UINT8, BASE_DEC, VALS(diameter_3gpp_secondary_rat_type_vals), 0x00,
4293
14
            NULL, HFILL }
4294
14
        },
4295
14
        { &hf_diameter_3gpp_qos_subscribed,
4296
14
            { "QoS-Subscribed", "diameter.3gpp.qos_subscribed",
4297
14
            FT_BYTES, BASE_NONE, NULL, 0x0,
4298
14
            NULL, HFILL }
4299
14
        },
4300
14
        { &hf_diameter_3gpp_qos_reliability_cls,
4301
14
            { "Reliability class", "diameter.3gpp.qos.reliability_cls",
4302
14
            FT_UINT8, BASE_DEC, VALS(diameter_3gpp_qos_reliability_vals), 0x07,
4303
14
            NULL, HFILL }
4304
14
        },
4305
14
        { &hf_diameter_3gpp_qos_delay_cls,
4306
14
            { "Quality of Service Delay class", "diameter.3gpp.qos.delay_cls",
4307
14
            FT_UINT8, BASE_DEC | BASE_RANGE_STRING, RVALS(diameter_3gpp_qos_delay_cls_vals), 0x38,
4308
14
            NULL, HFILL }
4309
14
        },
4310
14
        { &hf_diameter_3gpp_qos_prec_class,
4311
14
            { "Precedence class", "diameter.3gpp.qos.prec_class",
4312
14
            FT_UINT8, BASE_DEC | BASE_RANGE_STRING, RVALS(diameter_3gpp_qos_prec_class_vals), 0x07,
4313
14
            NULL, HFILL }
4314
14
        },
4315
14
        { &hf_diameter_3gpp_qos_peak_thr,
4316
14
            { "Peak throughput", "diameter.3gpp.qos.qos.peak_throughput",
4317
14
            FT_UINT8, BASE_DEC | BASE_RANGE_STRING, RVALS(diameter_3gpp_qos_peak_thr_vals), 0xf0,
4318
14
            NULL, HFILL }
4319
14
        },
4320
14
        { &hf_diameter_3gpp_qos_mean_thr,
4321
14
            { "Mean throughput", "diameter.3gpp.qos.mean_throughput",
4322
14
            FT_UINT8, BASE_DEC | BASE_RANGE_STRING, RVALS(diameter_3gpp_qos_mean_thr_vals), 0x1f,
4323
14
            NULL, HFILL }
4324
14
        },
4325
14
        { &hf_diameter_3gpp_qos_al_ret_priority,
4326
14
            { "Allocation/Retention priority", "diameter.3gpp.qos.al_ret_priority",
4327
14
            FT_UINT8, BASE_DEC, NULL, 0,
4328
14
            NULL, HFILL }
4329
14
        },
4330
14
        { &hf_diameter_3gpp_qos_del_of_err_sdu,
4331
14
            { "Delivery of erroneous SDUs", "diameter.3gpp.qos.del_of_err_sdu",
4332
14
            FT_UINT8, BASE_DEC, VALS(diameter_3gpp_qos_del_of_err_sdu_vals), 0x07,
4333
14
            NULL, HFILL }
4334
14
        },
4335
14
        { &hf_diameter_3gpp_qos_del_order,
4336
14
            { "Delivery order", "diameter.3gpp.qos.del_order",
4337
14
            FT_UINT8, BASE_DEC, VALS(diameter_3gpp_qos_del_order_vals), 0x18,
4338
14
            NULL, HFILL }
4339
14
        },
4340
14
        { &hf_diameter_3gpp_qos_traffic_cls,
4341
14
            { "Traffic class", "diameter.3gpp.qos.traffic_cls",
4342
14
            FT_UINT8, BASE_DEC, VALS(diameter_3gpp_qos_traffic_cls_vals), 0xe0,
4343
14
            NULL, HFILL }
4344
14
        },
4345
14
        { &hf_diameter_3gpp_qos_maximum_sdu_size,
4346
14
            { "Maximum SDU size", "diameter.3gpp.qos.qos.maximum_sdu_size",
4347
14
            FT_UINT8, BASE_DEC, NULL, 0x0,
4348
14
            NULL, HFILL }
4349
14
        },
4350
14
        { &hf_diameter_3gpp_qos_max_bitrate_upl,
4351
14
            { "Maximum bitrate for uplink", "diameter.3gpp.qos.max_bitrate_upl",
4352
14
            FT_UINT8, BASE_DEC, NULL, 0x0,
4353
14
            NULL, HFILL }
4354
14
        },
4355
14
        { &hf_diameter_3gpp_qos_max_bitrate_downl,
4356
14
            { "Maximum bitrate for downlink", "diameter.3gpp.qos.max_bitrate_downl",
4357
14
            FT_UINT8, BASE_DEC, NULL, 0x0,
4358
14
            NULL, HFILL }
4359
14
        },
4360
14
        { &hf_diameter_3gpp_qos_sdu_err_rat,
4361
14
            { "SDU error ratio", "diameter.3gpp.qos.sdu_err_rat",
4362
14
            FT_UINT8, BASE_DEC, VALS(diameter_3gpp_qos_sdu_err_rat_vals), 0x0f,
4363
14
            NULL, HFILL }
4364
14
        },
4365
14
        { &hf_diameter_3gpp_qos_ber,
4366
14
            { "Residual Bit Error Rate (BER)", "diameter.3gpp.qos.ber",
4367
14
            FT_UINT8, BASE_DEC, VALS(diameter_3gpp_qos_ber_vals), 0xf0,
4368
14
            NULL, HFILL }
4369
14
        },
4370
14
        { &hf_diameter_3gpp_qos_traff_hdl_pri,
4371
14
            { "Traffic handling priority", "diameter.3gpp.qos.traff_hdl_pri",
4372
14
            FT_UINT8, BASE_DEC, VALS(gsm_a_sm_qos_traff_hdl_pri_vals), 0x03,
4373
14
            NULL, HFILL }
4374
14
        },
4375
14
        { &hf_diameter_3gpp_qos_trans_delay,
4376
14
            { "Transfer delay", "diameter.3gpp.qos.trans_delay",
4377
14
            FT_UINT8, BASE_DEC, NULL, 0xfc,
4378
14
            NULL, HFILL }
4379
14
        },
4380
14
        { &hf_diameter_3gpp_qos_guar_bitrate_upl,
4381
14
            { "Guaranteed bitrate for uplink", "diameter.3gpp.qos.guar_bitrate_upl",
4382
14
            FT_UINT8, BASE_DEC, NULL, 0x0,
4383
14
            NULL, HFILL }
4384
14
        },
4385
14
        { &hf_diameter_3gpp_qos_guar_bitrate_downl,
4386
14
            { "Guaranteed bitrate for downlink", "diameter.3gpp.qos.guar_bitrate_downl",
4387
14
            FT_UINT8, BASE_DEC, NULL, 0x0,
4388
14
            NULL, HFILL }
4389
14
        },
4390
4391
14
        { &hf_diameter_3gpp_qos_source_stat_desc,
4392
14
            { "Source statistics description", "diameter.3gpp.qos.source_stat_desc",
4393
14
            FT_UINT8, BASE_DEC, NULL, 0x0f,
4394
14
            NULL, HFILL }
4395
14
        },
4396
14
        { &hf_diameter_3gpp_qos_signalling_ind,
4397
14
            { "Signalling indication", "diameter.3gpp.qos.signalling_ind",
4398
14
            FT_BOOLEAN, 8, TFS(&diameter_3gpp_qos_signalling_ind_value), 0x10,
4399
14
            NULL, HFILL }
4400
14
        },
4401
14
        { &hf_diameter_3gpp_qos_max_bitrate_downl_ext,
4402
14
            { "Maximum bitrate for downlink (extended)", "diameter.3gpp.qos.max_bitrate_downl_ext",
4403
14
            FT_UINT8, BASE_DEC, NULL, 0x0,
4404
14
            NULL, HFILL }
4405
14
        },
4406
14
        { &hf_diameter_3gpp_qos_guar_bitrate_downl_ext,
4407
14
            { "Guaranteed bitrate for downlink (extended)", "diameter.3gpp.qos.guar_bitrate_downl_ext",
4408
14
            FT_UINT8, BASE_DEC, NULL, 0x0,
4409
14
            NULL, HFILL }
4410
14
        },
4411
14
        { &hf_diameter_3gpp_qos_max_bitrate_upl_ext,
4412
14
            { "Maximum bitrate for uplink (extended)", "diameter.3gpp.qos.max_bitrate_upl_ext",
4413
14
            FT_UINT8, BASE_DEC, NULL, 0x0,
4414
14
            NULL, HFILL }
4415
14
        },
4416
14
        { &hf_diameter_3gpp_qos_guar_bitrate_upl_ext,
4417
14
            { "Guaranteed bitrate for uplink (extended)", "diameter.3gpp.qos.guar_bitrate_upl_ext",
4418
14
            FT_UINT8, BASE_DEC, NULL, 0x0,
4419
14
            NULL, HFILL }
4420
14
        },
4421
14
        { &hf_diameter_3gpp_qos_pre_emption_vulnerability,
4422
14
            { "Pre-emption vulnerability", "diameter.3gpp.qos.pre_emption_vulnerability",
4423
14
            FT_BOOLEAN, 8, TFS(&tfs_set_notset), 0x01,
4424
14
            NULL, HFILL }
4425
14
        },
4426
14
        { &hf_diameter_3gpp_qos_priority_level,
4427
14
            { "Priority level", "diameter.3gpp.qos.priority_level",
4428
14
            FT_UINT8, BASE_DEC, NULL, 0x3c,
4429
14
            NULL, HFILL }
4430
14
        },
4431
14
        { &hf_diameter_3gpp_qos_pre_emption_capability,
4432
14
            { "Pre-emption capability", "diameter.3gpp.qos.pre_emption_capability",
4433
14
            FT_BOOLEAN, 8, TFS(&tfs_set_notset), 0x40,
4434
14
            NULL, HFILL }
4435
14
        },
4436
14
        { &hf_diameter_3gpp_ulr_flags,
4437
14
            { "ULR Flags", "diameter.3gpp.ulr_flags",
4438
14
            FT_UINT32, BASE_HEX, NULL, 0x0,
4439
14
            NULL, HFILL }
4440
14
        },
4441
14
        { &hf_diameter_3gpp_ulr_flags_bit0,
4442
14
            { "Single-Registration-Indication", "diameter.3gpp.ulr_flags_bit0",
4443
14
            FT_BOOLEAN, 32, TFS(&tfs_set_notset), 0x00000001,
4444
14
            NULL, HFILL }
4445
14
        },
4446
14
        { &hf_diameter_3gpp_ulr_flags_bit1,
4447
14
            { "S6a/S6d-Indicator", "diameter.3gpp.ulr_flags_bit1",
4448
14
            FT_BOOLEAN, 32, TFS(&tfs_set_notset), 0x00000002,
4449
14
            NULL, HFILL }
4450
14
        },
4451
14
        { &hf_diameter_3gpp_ulr_flags_bit2,
4452
14
            { "Skip-Subscriber-Data", "diameter.3gpp.ulr_flags_bit2",
4453
14
            FT_BOOLEAN, 32, TFS(&tfs_set_notset), 0x00000004,
4454
14
            NULL, HFILL }
4455
14
        },
4456
14
        { &hf_diameter_3gpp_ulr_flags_bit3,
4457
14
            { "GPRS-Subscription-Data-Indicator", "diameter.3gpp.ulr_flags_bit3",
4458
14
            FT_BOOLEAN, 32, TFS(&tfs_set_notset), 0x00000008,
4459
14
            NULL, HFILL }
4460
14
        },
4461
14
        { &hf_diameter_3gpp_ulr_flags_bit4,
4462
14
            { "Node-Type-Indicator", "diameter.3gpp.ulr_flags_bit4",
4463
14
            FT_BOOLEAN, 32, TFS(&tfs_set_notset), 0x00000010,
4464
14
            NULL, HFILL }
4465
14
        },
4466
14
        { &hf_diameter_3gpp_ulr_flags_bit5,
4467
14
            { "Initial-Attach-Indicator", "diameter.3gpp.ulr_flags_bit5",
4468
14
            FT_BOOLEAN, 32, TFS(&tfs_set_notset), 0x00000020,
4469
14
            NULL, HFILL }
4470
14
        },
4471
14
        { &hf_diameter_3gpp_ulr_flags_bit6,
4472
14
            { "PS-LCS-Not-Supported-By-UE", "diameter.3gpp.ulr_flags_bit6",
4473
14
            FT_BOOLEAN, 32, TFS(&tfs_set_notset), 0x00000040,
4474
14
            NULL, HFILL }
4475
14
        },
4476
14
        { &hf_diameter_3gpp_ulr_flags_bit7,
4477
14
            { "SMS-Only-Indication", "diameter.3gpp.ulr_flags_bit7",
4478
14
            FT_BOOLEAN, 32, TFS(&tfs_set_notset), 0x00000080,
4479
14
            NULL, HFILL }
4480
14
        },
4481
14
        { &hf_diameter_3gpp_ulr_flags_bit8,
4482
14
            { "Dual-Registration-5G-Indicator", "diameter.3gpp.ulr_flags_bit8",
4483
14
            FT_BOOLEAN, 32, TFS(&tfs_set_notset), 0x00000100,
4484
14
            NULL, HFILL }
4485
14
        },
4486
14
        { &hf_diameter_3gpp_ulr_flags_spare_bits,
4487
14
            { "Spare", "diameter.3gpp.ulr_flags_spare",
4488
14
            FT_UINT32, BASE_HEX, NULL, 0xFFFFFE00,
4489
14
            NULL, HFILL }
4490
14
        },
4491
14
        { &hf_diameter_3gpp_ula_flags,
4492
14
            { "ULA Flags", "diameter.3gpp.ula_flags",
4493
14
            FT_UINT32, BASE_HEX, NULL, 0x0,
4494
14
            NULL, HFILL }
4495
14
        },
4496
14
        { &hf_diameter_3gpp_ula_flags_bit0,
4497
14
            { "Separation Indication", "diameter.3gpp.ula_flags_bit0",
4498
14
            FT_BOOLEAN, 32, TFS(&tfs_set_notset), 0x00000001,
4499
14
            NULL, HFILL }
4500
14
        },
4501
14
        { &hf_diameter_3gpp_ula_flags_bit1,
4502
14
            { "MME Registered for SMS", "diameter.3gpp.ula_flags_bit1",
4503
14
            FT_BOOLEAN, 32, TFS(&tfs_set_notset), 0x00000002,
4504
14
            NULL, HFILL }
4505
14
        },
4506
14
        { &hf_diameter_3gpp_ula_flags_spare_bits,
4507
14
            { "Spare", "diameter.3gpp.ula_flags_spare",
4508
14
            FT_UINT32, BASE_HEX, NULL, 0xFFFFFFFC,
4509
14
            NULL, HFILL }
4510
14
        },
4511
14
        { &hf_diameter_3gpp_dsr_flags,
4512
14
            { "DSR Flags", "diameter.3gpp.dsr_flags",
4513
14
            FT_UINT32, BASE_HEX, NULL, 0x0,
4514
14
            NULL, HFILL }
4515
14
        },
4516
14
        { &hf_diameter_3gpp_dsr_flags_bit0,
4517
14
            { "Regional Subscription Withdrawal", "diameter.3gpp.dsr_flags_bit0",
4518
14
            FT_BOOLEAN, 32, TFS(&tfs_set_notset), 0x00000001,
4519
14
            NULL, HFILL }
4520
14
        },
4521
14
        { &hf_diameter_3gpp_dsr_flags_bit1,
4522
14
            { "Complete APN Configuration Profile Withdrawal", "diameter.3gpp.dsr_flags_bit1",
4523
14
            FT_BOOLEAN, 32, TFS(&tfs_set_notset), 0x00000002,
4524
14
            NULL, HFILL }
4525
14
        },
4526
14
        { &hf_diameter_3gpp_dsr_flags_bit2,
4527
14
            { "Subscribed Charging Characteristics Withdrawal", "diameter.3gpp.dsr_flags_bit2",
4528
14
            FT_BOOLEAN, 32, TFS(&tfs_set_notset), 0x00000004,
4529
14
            NULL, HFILL }
4530
14
        },
4531
14
        { &hf_diameter_3gpp_dsr_flags_bit3,
4532
14
            { "PDN subscription contexts Withdrawal", "diameter.3gpp.dsr_flags_bit3",
4533
14
            FT_BOOLEAN, 32, TFS(&tfs_set_notset), 0x00000008,
4534
14
            NULL, HFILL }
4535
14
        },
4536
14
        { &hf_diameter_3gpp_dsr_flags_bit4,
4537
14
            { "STN-SR", "diameter.3gpp.dsr_flags_bit4",
4538
14
            FT_BOOLEAN, 32, TFS(&tfs_set_notset), 0x00000010,
4539
14
            NULL, HFILL }
4540
14
        },
4541
14
        { &hf_diameter_3gpp_dsr_flags_bit5,
4542
14
            { "Complete PDP context list Withdrawal", "diameter.3gpp.dsr_flags_bit5",
4543
14
            FT_BOOLEAN, 32, TFS(&tfs_set_notset), 0x00000020,
4544
14
            NULL, HFILL }
4545
14
        },
4546
14
        { &hf_diameter_3gpp_dsr_flags_bit6,
4547
14
            { "PDP contexts Withdrawal", "diameter.3gpp.dsr_flags_bit6",
4548
14
            FT_BOOLEAN, 32, TFS(&tfs_set_notset), 0x00000040,
4549
14
            NULL, HFILL }
4550
14
        },
4551
14
        { &hf_diameter_3gpp_dsr_flags_bit7,
4552
14
            { "Roaming Restricted due to unsupported feature", "diameter.3gpp.dsr_flags_bit7",
4553
14
            FT_BOOLEAN, 32, TFS(&tfs_set_notset), 0x00000080,
4554
14
            NULL, HFILL }
4555
14
        },
4556
14
        { &hf_diameter_3gpp_dsr_flags_bit8,
4557
14
            { "Trace Data Withdrawal", "diameter.3gpp.dsr_flags_bit8",
4558
14
            FT_BOOLEAN, 32, TFS(&tfs_set_notset), 0x00000100,
4559
14
            NULL, HFILL }
4560
14
        },
4561
14
        { &hf_diameter_3gpp_dsr_flags_bit9,
4562
14
            { "CSG Deleted", "diameter.3gpp.dsr_flags_bit9",
4563
14
            FT_BOOLEAN, 32, TFS(&tfs_set_notset), 0x00000200,
4564
14
            NULL, HFILL }
4565
14
        },
4566
14
        { &hf_diameter_3gpp_dsr_flags_bit10,
4567
14
            { "APN-OI-Replacement", "diameter.3gpp.dsr_flags_bit10",
4568
14
            FT_BOOLEAN, 32, TFS(&tfs_set_notset), 0x00000400,
4569
14
            NULL, HFILL }
4570
14
        },
4571
14
        { &hf_diameter_3gpp_dsr_flags_bit11,
4572
14
            { "GMLC List Withdrawal", "diameter.3gpp.dsr_flags_bit11",
4573
14
            FT_BOOLEAN, 32, TFS(&tfs_set_notset), 0x00000800,
4574
14
            NULL, HFILL }
4575
14
        },
4576
14
        { &hf_diameter_3gpp_dsr_flags_bit12,
4577
14
            { "LCS Withdrawal", "diameter.3gpp.dsr_flags_bit12",
4578
14
            FT_BOOLEAN, 32, TFS(&tfs_set_notset), 0x00001000,
4579
14
            NULL, HFILL }
4580
14
        },
4581
14
        { &hf_diameter_3gpp_dsr_flags_bit13,
4582
14
            { "SMS Withdrawal", "diameter.3gpp.dsr_flags_bit13",
4583
14
            FT_BOOLEAN, 32, TFS(&tfs_set_notset), 0x00002000,
4584
14
            NULL, HFILL }
4585
14
        },
4586
14
        { &hf_diameter_3gpp_dsr_flags_bit14,
4587
14
            { "Subscribed periodic RAU-TAU Timer Withdrawal", "diameter.3gpp.dsr_flags_bit14",
4588
14
            FT_BOOLEAN, 32, TFS(&tfs_set_notset), 0x00004000,
4589
14
            NULL, HFILL }
4590
14
        },
4591
14
        { &hf_diameter_3gpp_dsr_flags_bit15,
4592
14
            { "Subscribed VSRVCC Withdrawal", "diameter.3gpp.dsr_flags_bit15",
4593
14
            FT_BOOLEAN, 32, TFS(&tfs_set_notset), 0x00008000,
4594
14
            NULL, HFILL }
4595
14
        },
4596
14
        { &hf_diameter_3gpp_dsr_flags_bit16,
4597
14
            { "A-MSISDN Withdrawal", "diameter.3gpp.dsr_flags_bit16",
4598
14
            FT_BOOLEAN, 32, TFS(&tfs_set_notset), 0x00010000,
4599
14
            NULL, HFILL }
4600
14
        },
4601
14
        { &hf_diameter_3gpp_dsr_flags_bit17,
4602
14
            { "ProSe Withdrawal", "diameter.3gpp.dsr_flags_bit17",
4603
14
            FT_BOOLEAN, 32, TFS(&tfs_set_notset), 0x00020000,
4604
14
            NULL, HFILL }
4605
14
        },
4606
14
        { &hf_diameter_3gpp_dsr_flags_bit18,
4607
14
            { "Reset-IDs", "diameter.3gpp.dsr_flags_bit18",
4608
14
            FT_BOOLEAN, 32, TFS(&tfs_set_notset), 0x00040000,
4609
14
            NULL, HFILL }
4610
14
        },
4611
14
        { &hf_diameter_3gpp_dsr_flags_bit19,
4612
14
            { "DL-Buffering-Suggested-Packet-Count Withdrawal", "diameter.3gpp.dsr_flags_bit19",
4613
14
            FT_BOOLEAN, 32, TFS(&tfs_set_notset), 0x00080000,
4614
14
            NULL, HFILL }
4615
14
        },
4616
14
        { &hf_diameter_3gpp_dsr_flags_bit20,
4617
14
            { "Subscribed IMSI-Group-Id Withdrawal", "diameter.3gpp.dsr_flags_bit20",
4618
14
            FT_BOOLEAN, 32, TFS(&tfs_set_notset), 0x00100000,
4619
14
            NULL, HFILL }
4620
14
        },
4621
14
        { &hf_diameter_3gpp_dsr_flags_bit21,
4622
14
            { "Delete monitoring events", "diameter.3gpp.dsr_flags_bit21",
4623
14
            FT_BOOLEAN, 32, TFS(&tfs_set_notset), 0x00200000,
4624
14
            NULL, HFILL }
4625
14
        },
4626
14
        { &hf_diameter_3gpp_dsr_flags_bit22,
4627
14
            { "User Plane Integrity Protection Withdrawal", "diameter.3gpp.dsr_flags_bit22",
4628
14
            FT_BOOLEAN, 32, TFS(&tfs_set_notset), 0x00400000,
4629
14
            NULL, HFILL }
4630
14
        },
4631
14
        { &hf_diameter_3gpp_dsr_flags_bit23,
4632
14
            { "MSISDN Withdrawal", "diameter.3gpp.dsr_flags_bit23",
4633
14
            FT_BOOLEAN, 32, TFS(&tfs_set_notset), 0x00800000,
4634
14
            NULL, HFILL }
4635
14
        },
4636
14
        { &hf_diameter_3gpp_dsr_flags_bit24,
4637
14
            { "UE Usage Type Withdrawal", "diameter.3gpp.dsr_flags_bit24",
4638
14
            FT_BOOLEAN, 32, TFS(&tfs_set_notset), 0x01000000,
4639
14
            NULL, HFILL }
4640
14
        },
4641
14
        { &hf_diameter_3gpp_dsr_flags_bit25,
4642
14
            { "V2X Withdrawal", "diameter.3gpp.dsr_flags_bit25",
4643
14
            FT_BOOLEAN, 32, TFS(&tfs_set_notset), 0x02000000,
4644
14
            NULL, HFILL }
4645
14
        },
4646
14
        { &hf_diameter_3gpp_dsr_flags_bit26,
4647
14
            { "External-Identifier-Withdrawal", "diameter.3gpp.dsr_flags_bit26",
4648
14
            FT_BOOLEAN, 32, TFS(&tfs_set_notset), 0x04000000,
4649
14
            NULL, HFILL }
4650
14
        },
4651
14
        { &hf_diameter_3gpp_dsr_flags_bit27,
4652
14
            { "Aerial-UE-Subscription-Withdrawal", "diameter.3gpp.dsr_flags_bit27",
4653
14
            FT_BOOLEAN, 32, TFS(&tfs_set_notset), 0x08000000,
4654
14
            NULL, HFILL }
4655
14
        },
4656
14
        { &hf_diameter_3gpp_dsr_flags_bit28,
4657
14
            { "Paging-Time-Window-Subscription-Withdrawal", "diameter.3gpp.dsr_flags_bit28",
4658
14
            FT_BOOLEAN, 32, TFS(&tfs_set_notset), 0x10000000,
4659
14
            NULL, HFILL }
4660
14
        },
4661
14
        { &hf_diameter_3gpp_dsr_flags_bit29,
4662
14
            { "Active-Time-Withdrawal", "diameter.3gpp.dsr_flags_bit29",
4663
14
            FT_BOOLEAN, 32, TFS(&tfs_set_notset), 0x20000000,
4664
14
            NULL, HFILL }
4665
14
        },
4666
14
        { &hf_diameter_3gpp_dsr_flags_bit30,
4667
14
            { "eDRX-Cycle-Length-Withdrawal", "diameter.3gpp.dsr_flags_bit30",
4668
14
            FT_BOOLEAN, 32, TFS(&tfs_set_notset), 0x40000000,
4669
14
            NULL, HFILL }
4670
14
        },
4671
14
        { &hf_diameter_3gpp_dsr_flags_bit31,
4672
14
            { "Service-Gap-Time-Withdrawal", "diameter.3gpp.dsr_flags_bit31",
4673
14
            FT_BOOLEAN, 32, TFS(&tfs_set_notset), 0x80000000,
4674
14
            NULL, HFILL }
4675
14
        },
4676
14
        { &hf_diameter_3gpp_dsa_flags,
4677
14
            { "DSA Flags", "diameter.3gpp.dsa_flags",
4678
14
            FT_UINT32, BASE_HEX, NULL, 0x0,
4679
14
            NULL, HFILL }
4680
14
        },
4681
14
        { &hf_diameter_3gpp_dsa_flags_bit0,
4682
14
            { "Network Node area restricted", "diameter.3gpp.dsa_flags_bit0",
4683
14
            FT_BOOLEAN, 32, TFS(&tfs_set_notset), 0x00000001,
4684
14
            NULL, HFILL }
4685
14
        },
4686
14
        { &hf_diameter_3gpp_dsa_flags_spare_bits,
4687
14
            { "Spare", "diameter.3gpp.dsa_flags_spare",
4688
14
            FT_UINT32, BASE_HEX, NULL, 0xFFFFFFFE,
4689
14
            NULL, HFILL }
4690
14
        },
4691
14
        { &hf_diameter_3gpp_acc_res_dat_flags,
4692
14
        { "Access-Restriction-Data Flags", "diameter.3gpp.acc_res_dat_flags",
4693
14
            FT_UINT32, BASE_HEX, NULL, 0x0,
4694
14
            NULL, HFILL }
4695
14
        },
4696
14
        { &hf_diameter_3gpp_acc_res_dat_flags_bit0,
4697
14
        { "UTRAN Not Allowed", "diameter.3gpp.acc_res_dat_flags_bit0",
4698
14
            FT_BOOLEAN, 32, TFS(&tfs_set_notset), 0x00000001,
4699
14
            NULL, HFILL }
4700
14
        },
4701
14
        { &hf_diameter_3gpp_acc_res_dat_flags_bit1,
4702
14
        { "GERAN Not Allowed", "diameter.3gpp.acc_res_dat_flags_bit1",
4703
14
            FT_BOOLEAN, 32, TFS(&tfs_set_notset), 0x00000002,
4704
14
            NULL, HFILL }
4705
14
        },
4706
14
        { &hf_diameter_3gpp_acc_res_dat_flags_bit2,
4707
14
        { "GAN Not Allowed", "diameter.3gpp.acc_res_dat_flags_bit2",
4708
14
            FT_BOOLEAN, 32, TFS(&tfs_set_notset), 0x00000004,
4709
14
            NULL, HFILL }
4710
14
        },
4711
14
        { &hf_diameter_3gpp_acc_res_dat_flags_bit3,
4712
14
        { "I-HSPA-Evolution Not Allowed", "diameter.3gpp.acc_res_dat_flags_bit3",
4713
14
            FT_BOOLEAN, 32, TFS(&tfs_set_notset), 0x00000008,
4714
14
            NULL, HFILL }
4715
14
        },
4716
14
        { &hf_diameter_3gpp_acc_res_dat_flags_bit4,
4717
14
        { "WB-E-UTRAN Not Allowed", "diameter.3gpp.acc_res_dat_flags_bit4",
4718
14
            FT_BOOLEAN, 32, TFS(&tfs_set_notset), 0x00000010,
4719
14
            NULL, HFILL }
4720
14
        },
4721
14
        { &hf_diameter_3gpp_acc_res_dat_flags_bit5,
4722
14
        { "HO-To-Non-3GPP-Access Not Allowed", "diameter.3gpp.acc_res_dat_flags_bit5",
4723
14
            FT_BOOLEAN, 32, TFS(&tfs_set_notset), 0x00000020,
4724
14
            NULL, HFILL }
4725
14
        },
4726
14
        { &hf_diameter_3gpp_acc_res_dat_flags_bit6,
4727
14
        { "NB-IoT Not Allowed", "diameter.3gpp.acc_res_dat_flags_bit6",
4728
14
            FT_BOOLEAN, 32, TFS(&tfs_set_notset), 0x00000040,
4729
14
            NULL, HFILL }
4730
14
        },
4731
14
        { &hf_diameter_3gpp_acc_res_dat_flags_bit7,
4732
14
            { "Enhanced Coverage Not Allowed", "diameter.3gpp.acc_res_dat_flags_bit7",
4733
14
                FT_BOOLEAN, 32, TFS(&tfs_set_notset), 0x00000080,
4734
14
                NULL, HFILL }
4735
14
            },
4736
14
        { &hf_diameter_3gpp_acc_res_dat_flags_bit8,
4737
14
        { "NR as Secondary RAT Not Allowed", "diameter.3gpp.acc_res_dat_flags_bit8",
4738
14
            FT_BOOLEAN, 32, TFS(&tfs_set_notset), 0x00000100,
4739
14
            NULL, HFILL }
4740
14
        },
4741
14
        { &hf_diameter_3gpp_acc_res_dat_flags_bit9,
4742
14
        { "Unlicensed Spectrum as Secondary RAT Not Allowed", "diameter.3gpp.acc_res_dat_flags_bit9",
4743
14
            FT_BOOLEAN, 32, TFS(&tfs_set_notset), 0x00000200,
4744
14
            NULL, HFILL }
4745
14
        },
4746
14
        { &hf_diameter_3gpp_acc_res_dat_flags_bit10,
4747
14
        { "NR in 5G Not Allowed", "diameter.3gpp.acc_res_dat_flags_bit10",
4748
14
            FT_BOOLEAN, 32, TFS(&tfs_set_notset), 0x00000400,
4749
14
            NULL, HFILL }
4750
14
        },
4751
14
        { &hf_diameter_3gpp_acc_res_dat_flags_bit11,
4752
14
        { "LTE-M Not Allowed", "diameter.3gpp.acc_res_dat_flags_bit11",
4753
14
            FT_BOOLEAN, 32, TFS(&tfs_set_notset), 0x00000800,
4754
14
            NULL, HFILL }
4755
14
        },
4756
14
        { &hf_diameter_3gpp_acc_res_dat_flags_bit12,
4757
14
        { "WB-E-UTRAN Except LTE-M Not Allowed", "diameter.3gpp.acc_res_dat_flags_bit12",
4758
14
            FT_BOOLEAN, 32, TFS(&tfs_set_notset), 0x00001000,
4759
14
            NULL, HFILL }
4760
14
        },
4761
14
        { &hf_diameter_3gpp_acc_res_dat_flags_spare_bits,
4762
14
        { "Spare", "diameter.3gpp.acc_res_dat_flags_spare",
4763
14
            FT_UINT32, BASE_HEX, NULL, 0xFFFFe000,
4764
14
            NULL, HFILL }
4765
14
        },
4766
4767
14
        { &hf_diameter_3gpp_ida_flags,
4768
14
            { "IDA Flags", "diameter.3gpp.ida_flags",
4769
14
            FT_UINT32, BASE_HEX, NULL, 0x0,
4770
14
            NULL, HFILL }
4771
14
        },
4772
14
        { &hf_diameter_3gpp_ida_flags_bit0,
4773
14
            { "Network Node area restricted", "diameter.3gpp.ida_flags_bit0",
4774
14
            FT_BOOLEAN, 32, TFS(&tfs_set_notset), 0x00000001,
4775
14
            NULL, HFILL }
4776
14
        },
4777
14
        { &hf_diameter_3gpp_ida_flags_spare_bits,
4778
14
            { "Spare", "diameter.3gpp.ida_flags_spare",
4779
14
            FT_UINT32, BASE_HEX, NULL, 0xFFFFFFFE,
4780
14
            NULL, HFILL }
4781
14
        },
4782
14
        { &hf_diameter_3gpp_pua_flags,
4783
14
            { "PUA Flags", "diameter.3gpp.pua_flags",
4784
14
            FT_UINT32, BASE_HEX, NULL, 0x0,
4785
14
            NULL, HFILL }
4786
14
        },
4787
14
        { &hf_diameter_3gpp_pua_flags_bit0,
4788
14
            { "Freeze M-TMSI", "diameter.3gpp.pua_flags_bit0",
4789
14
            FT_BOOLEAN, 32, TFS(&tfs_set_notset), 0x00000001,
4790
14
            NULL, HFILL }
4791
14
        },
4792
14
        { &hf_diameter_3gpp_pua_flags_bit1,
4793
14
            { "Freeze P-TMSI", "diameter.3gpp.pua_flags_bit1",
4794
14
            FT_BOOLEAN, 32, TFS(&tfs_set_notset), 0x00000002,
4795
14
            NULL, HFILL }
4796
14
        },
4797
14
        { &hf_diameter_3gpp_pua_flags_spare_bits,
4798
14
            { "Spare", "diameter.3gpp.pua_flags_spare",
4799
14
            FT_UINT32, BASE_HEX, NULL, 0xFFFFFFFC,
4800
14
            NULL, HFILL }
4801
14
        },
4802
14
        { &hf_diameter_3gpp_nor_flags,
4803
14
            { "NOR Flags", "diameter.3gpp.nor_flags",
4804
14
            FT_UINT32, BASE_HEX, NULL, 0x0,
4805
14
            NULL, HFILL }
4806
14
        },
4807
14
        { &hf_diameter_3gpp_nor_flags_bit0,
4808
14
            { "Single-Registration-Indication", "diameter.3gpp.nor_flags_bit0",
4809
14
            FT_BOOLEAN, 32, TFS(&tfs_set_notset), 0x00000001,
4810
14
            NULL, HFILL }
4811
14
        },
4812
14
        { &hf_diameter_3gpp_nor_flags_bit1,
4813
14
            { "SGSN area restricted", "diameter.3gpp.nor_flags_bit1",
4814
14
            FT_BOOLEAN, 32, TFS(&tfs_set_notset), 0x00000002,
4815
14
            NULL, HFILL }
4816
14
        },
4817
14
        { &hf_diameter_3gpp_nor_flags_bit2,
4818
14
            { "Ready for SM", "diameter.3gpp.nor_flags_bit2",
4819
14
            FT_BOOLEAN, 32, TFS(&tfs_set_notset), 0x00000004,
4820
14
            NULL, HFILL }
4821
14
        },
4822
14
        { &hf_diameter_3gpp_nor_flags_bit3,
4823
14
            { "UE Reachable", "diameter.3gpp.nor_flags_bit3",
4824
14
            FT_BOOLEAN, 32, TFS(&tfs_set_notset), 0x00000008,
4825
14
            NULL, HFILL }
4826
14
        },
4827
14
        { &hf_diameter_3gpp_nor_flags_bit4,
4828
14
            { "Delete all APN and PDN GW identity pairs", "diameter.3gpp.nor_flags_bit4",
4829
14
            FT_BOOLEAN, 32, TFS(&tfs_set_notset), 0x00000010,
4830
14
            NULL, HFILL }
4831
14
        },
4832
14
        { &hf_diameter_3gpp_nor_flags_bit5,
4833
14
            { "UE Reachable from SGSN", "diameter.3gpp.nor_flags_bit5",
4834
14
            FT_BOOLEAN, 32, TFS(&tfs_set_notset), 0x00000020,
4835
14
            NULL, HFILL }
4836
14
        },
4837
14
        { &hf_diameter_3gpp_nor_flags_bit6,
4838
14
            { "Ready for SM from MME", "diameter.3gpp.nor_flags_bit6",
4839
14
            FT_BOOLEAN, 32, TFS(&tfs_set_notset), 0x00000040,
4840
14
            NULL, HFILL }
4841
14
        },
4842
14
        { &hf_diameter_3gpp_nor_flags_bit7,
4843
14
            { "Homogeneous Support of IMS Voice Over PS Sessions", "diameter.3gpp.nor_flags_bit7",
4844
14
            FT_BOOLEAN, 32, TFS(&tfs_set_notset), 0x00000080,
4845
14
            NULL, HFILL }
4846
14
        },
4847
14
        { &hf_diameter_3gpp_nor_flags_bit8,
4848
14
            { "S6a/S6d-Indicator", "diameter.3gpp.nor_flags_bit8",
4849
14
            FT_BOOLEAN, 32, TFS(&tfs_set_notset), 0x00000100,
4850
14
            NULL, HFILL }
4851
14
        },
4852
14
        { &hf_diameter_3gpp_nor_flags_bit9,
4853
14
            { "Removal of MME Registration for SMS", "diameter.3gpp.nor_flags_bit9",
4854
14
            FT_BOOLEAN, 32, TFS(&tfs_set_notset), 0x00000200,
4855
14
            NULL, HFILL }
4856
14
        },
4857
14
        { &hf_diameter_3gpp_nor_flags_spare_bits,
4858
14
            { "Spare", "diameter.3gpp.nor_flags_spare",
4859
14
            FT_UINT32, BASE_HEX, NULL, 0xFFFFFC00,
4860
14
            NULL, HFILL }
4861
14
        },
4862
14
        { &hf_diameter_3gpp_idr_flags,
4863
14
            { "IDR Flags", "diameter.3gpp.idr_flags",
4864
14
            FT_UINT32, BASE_HEX, NULL, 0x0,
4865
14
            NULL, HFILL }
4866
14
        },
4867
14
        { &hf_diameter_3gpp_idr_flags_bit0,
4868
14
            { "UE Reachability Request", "diameter.3gpp.idr_flags_bit0",
4869
14
            FT_BOOLEAN, 32, TFS(&tfs_set_notset), 0x00000001,
4870
14
            NULL, HFILL }
4871
14
        },
4872
14
        { &hf_diameter_3gpp_idr_flags_bit1,
4873
14
            { "T-ADS Data Request", "diameter.3gpp.idr_flags_bit1",
4874
14
            FT_BOOLEAN, 32, TFS(&tfs_set_notset), 0x00000002,
4875
14
            NULL, HFILL }
4876
14
        },
4877
14
        { &hf_diameter_3gpp_idr_flags_bit2,
4878
14
            { "EPS User State Request", "diameter.3gpp.idr_flags_bit2",
4879
14
            FT_BOOLEAN, 32, TFS(&tfs_set_notset), 0x00000004,
4880
14
            NULL, HFILL }
4881
14
        },
4882
14
        { &hf_diameter_3gpp_idr_flags_bit3,
4883
14
            { "EPS Location Information Request", "diameter.3gpp.idr_flags_bit3",
4884
14
            FT_BOOLEAN, 32, TFS(&tfs_set_notset), 0x00000008,
4885
14
            NULL, HFILL }
4886
14
        },
4887
14
        { &hf_diameter_3gpp_idr_flags_bit4,
4888
14
            { "Current Location Request", "diameter.3gpp.idr_flags_bit4",
4889
14
            FT_BOOLEAN, 32, TFS(&tfs_set_notset), 0x00000010,
4890
14
            NULL, HFILL }
4891
14
        },
4892
14
        { &hf_diameter_3gpp_idr_flags_bit5,
4893
14
            { "Local Time Zone Request", "diameter.3gpp.idr_flags_bit5",
4894
14
            FT_BOOLEAN, 32, TFS(&tfs_set_notset), 0x00000020,
4895
14
            NULL, HFILL }
4896
14
        },
4897
14
        { &hf_diameter_3gpp_idr_flags_bit6,
4898
14
            { "Remove SMS Registration", "diameter.3gpp.idr_flags_bit6",
4899
14
            FT_BOOLEAN, 32, TFS(&tfs_set_notset), 0x00000040,
4900
14
            NULL, HFILL }
4901
14
        },
4902
14
        { &hf_diameter_3gpp_idr_flags_bit7,
4903
14
            { "RAT-Type Requested", "diameter.3gpp.idr_flags_bit7",
4904
14
            FT_BOOLEAN, 32, TFS(&tfs_set_notset), 0x00000080,
4905
14
            NULL, HFILL }
4906
14
        },
4907
14
        { &hf_diameter_3gpp_idr_flags_bit8,
4908
14
            { "P-CSCF Restoration Request", "diameter.3gpp.idr_flags_bit8",
4909
14
            FT_BOOLEAN, 32, TFS(&tfs_set_notset), 0x00000100,
4910
14
            NULL, HFILL }
4911
14
        },
4912
14
        { &hf_diameter_3gpp_idr_flags_spare_bits,
4913
14
            { "Spare", "diameter.3gpp.idr_flags_spare",
4914
14
            FT_UINT32, BASE_HEX, NULL, 0xFFFFFE00,
4915
14
            NULL, HFILL }
4916
14
        },
4917
14
        { &hf_diameter_3gpp_ppr_flags,
4918
14
            { "PPR Flags", "diameter.3gpp.ppr_flags",
4919
14
            FT_UINT32, BASE_HEX, NULL, 0x0,
4920
14
            NULL, HFILL }
4921
14
        },
4922
14
        { &hf_diameter_3gpp_ppr_flags_bit0,
4923
14
            { "Reset-Indication", "diameter.3gpp.ppr_flags_bit0",
4924
14
            FT_BOOLEAN, 32, TFS(&tfs_set_notset), 0x00000001,
4925
14
            NULL, HFILL }
4926
14
        },
4927
14
        { &hf_diameter_3gpp_ppr_flags_bit1,
4928
14
            { "Access-Network-Info-Request", "diameter.3gpp.ppr_flags_bit1",
4929
14
            FT_BOOLEAN, 32, TFS(&tfs_set_notset), 0x00000002,
4930
14
            NULL, HFILL }
4931
14
        },
4932
14
        { &hf_diameter_3gpp_ppr_flags_bit2,
4933
14
            { "UE-Local-Time-Zone-Request", "diameter.3gpp.ppr_flags_bit2",
4934
14
            FT_BOOLEAN, 32, TFS(&tfs_set_notset), 0x00000004,
4935
14
            NULL, HFILL }
4936
14
        },
4937
14
        { &hf_diameter_3gpp_ppr_flags_bit3,
4938
14
            { "P-CSCF Restoration Request", "diameter.3gpp.ppr_flags_bit3",
4939
14
            FT_BOOLEAN, 32, TFS(&tfs_set_notset), 0x00000008,
4940
14
            NULL, HFILL }
4941
14
        },
4942
14
        { &hf_diameter_3gpp_ppr_flags_spare_bits,
4943
14
            { "Spare", "diameter.3gpp.ppr_flags_spare",
4944
14
            FT_UINT32, BASE_HEX, NULL, 0xFFFFFFF0,
4945
14
            NULL, HFILL }
4946
14
        },
4947
14
        { &hf_diameter_3gpp_aaa_fail_flags,
4948
14
            { "AAA Failure Indication", "diameter.3gpp.aaa_fail_flags",
4949
14
            FT_UINT32, BASE_HEX, NULL, 0x0,
4950
14
            NULL, HFILL }
4951
14
        },
4952
14
        { &hf_diameter_3gpp_aaa_fail_flags_bit0,
4953
14
            { "AAA Failure", "diameter.3gpp.aaa_fail_flags_bit0",
4954
14
              FT_BOOLEAN, 32, TFS(&tfs_set_notset), 0x00000001,
4955
14
              NULL, HFILL }
4956
14
        },
4957
14
        { &hf_diameter_3gpp_aaa_fail_flags_spare_bits,
4958
14
            { "Spare", "diameter.3gpp.aaa_fail_flags_spare",
4959
14
            FT_UINT32, BASE_HEX, NULL, 0xFFFFFFFE,
4960
14
            NULL, HFILL }
4961
14
        },
4962
14
        { &hf_diameter_3gpp_der_flags,
4963
14
            { "DER Flags", "diameter.3gpp.der_flags",
4964
14
            FT_UINT32, BASE_HEX, NULL, 0x0,
4965
14
            NULL, HFILL }
4966
14
        },
4967
14
        { &hf_diameter_3gpp_der_flags_bit0,
4968
14
            { "NSWO-Capability-Indication", "diameter.3gpp.der_flags_bit0",
4969
14
            FT_BOOLEAN, 32, TFS(&tfs_set_notset), 0x00000001,
4970
14
            NULL, HFILL }
4971
14
        },
4972
14
        { &hf_diameter_3gpp_der_flags_bit1,
4973
14
            { "TWAN-S2a-Connectivity-Indicator", "diameter.3gpp.der_flags_bit1",
4974
14
            FT_BOOLEAN, 32, TFS(&tfs_set_notset), 0x00000002,
4975
14
            NULL, HFILL }
4976
14
        },
4977
14
        { &hf_diameter_3gpp_der_flags_spare_bits,
4978
14
            { "Spare", "diameter.3gpp.der_flags_spare",
4979
14
            FT_UINT32, BASE_HEX, NULL, 0xFFFFFFFC,
4980
14
            NULL, HFILL }
4981
14
        },
4982
14
        { &hf_diameter_3gpp_dea_flags,
4983
14
            { "DEA Flags", "diameter.3gpp.dea_flags",
4984
14
            FT_UINT32, BASE_HEX, NULL, 0x0,
4985
14
            NULL, HFILL }
4986
14
        },
4987
14
        { &hf_diameter_3gpp_dea_flags_bit0,
4988
14
            { "NSWO-Authorization", "diameter.3gpp.dea_flags_bit0",
4989
14
            FT_BOOLEAN, 32, TFS(&tfs_set_notset), 0x00000001,
4990
14
            NULL, HFILL }
4991
14
        },
4992
14
        { &hf_diameter_3gpp_dea_flags_bit1,
4993
14
            { "TWAN-S2a-Connectivity-Indicator", "diameter.3gpp.dea_flags_bit1",
4994
14
            FT_BOOLEAN, 32, TFS(&tfs_set_notset), 0x00000002,
4995
14
            NULL, HFILL }
4996
14
        },
4997
14
        { &hf_diameter_3gpp_dea_flags_spare_bits,
4998
14
            { "Spare", "diameter.3gpp.dea_flags_spare",
4999
14
            FT_UINT32, BASE_HEX, NULL, 0xFFFFFFFC,
5000
14
            NULL, HFILL }
5001
14
        },
5002
14
        { &hf_diameter_3gpp_rar_flags,
5003
14
            { "RAR Flags", "diameter.3gpp.rar_flags",
5004
14
            FT_UINT32, BASE_HEX, NULL, 0x0,
5005
14
            NULL, HFILL }
5006
14
        },
5007
14
        { &hf_diameter_3gpp_rar_flags_bit0,
5008
14
            { "Trust-Relationship-Update-indication", "diameter.3gpp.rar_flags_bit0",
5009
14
            FT_BOOLEAN, 32, TFS(&tfs_set_notset), 0x00000001,
5010
14
            NULL, HFILL }
5011
14
        },
5012
14
        { &hf_diameter_3gpp_rar_flags_bit1,
5013
14
            { "P-CSCF Restoration Request", "diameter.3gpp.rar_flags_bit1",
5014
14
            FT_BOOLEAN, 32, TFS(&tfs_set_notset), 0x00000002,
5015
14
            NULL, HFILL }
5016
14
        },
5017
14
        { &hf_diameter_3gpp_rar_flags_spare_bits,
5018
14
            { "Spare", "diameter.3gpp.rar_flags_spare",
5019
14
            FT_UINT32, BASE_HEX, NULL, 0xFFFFFFFC,
5020
14
            NULL, HFILL }
5021
14
        },
5022
14
        { &hf_diameter_3gpp_der_s6b_flags,
5023
14
            { "RAR Flags", "diameter.3gpp.sb6_flags",
5024
14
            FT_UINT32, BASE_HEX, NULL, 0x0,
5025
14
            NULL, HFILL }
5026
14
        },
5027
14
        { &hf_diameter_3gpp_der_s6b_flags_bit0,
5028
14
            { "Initial-Attach-Indicator", "diameter.3gpp.sb6_flags_bit0",
5029
14
            FT_BOOLEAN, 32, TFS(&tfs_set_notset), 0x00000001,
5030
14
            NULL, HFILL }
5031
14
        },
5032
14
        { &hf_diameter_3gpp_der_s6b_flags_spare_bits,
5033
14
            { "Spare", "diameter.3gpp.sb6_flags_spare",
5034
14
            FT_UINT32, BASE_HEX, NULL, 0x0,
5035
14
            NULL, HFILL }
5036
14
        },
5037
14
        { &hf_diameter_3gpp_ipv6addr,
5038
14
            { "IPv6 Address", "diameter.3gpp.ipv6addr",
5039
14
            FT_IPv6, BASE_NONE, NULL, 0x0,
5040
14
            NULL, HFILL }
5041
14
        },
5042
14
        { &hf_diameter_3gpp_mbms_abs_time_ofmbms_data_tfer,
5043
14
            { "Absolute Time of MBMS Data Transfer", "diameter.3gpp.mbms_abs_time_ofmbms_data_tfer",
5044
14
            FT_ABSOLUTE_TIME, ABSOLUTE_TIME_NTP_UTC, NULL, 0x0,
5045
14
            NULL, HFILL }
5046
14
        },
5047
14
        { &hf_diameter_3gpp_udp_port ,
5048
14
            { "UDP Port", "diameter.3gpp.udp_port",
5049
14
            FT_UINT8, BASE_DEC, NULL, 0x0,
5050
14
            NULL, HFILL }
5051
14
        },
5052
14
        { &hf_diameter_3gpp_codec_data_dir,
5053
14
            { "Direction", "diameter.3gpp.codec_data.direction",
5054
14
            FT_STRING, BASE_NONE, NULL, 0x0,
5055
14
            NULL, HFILL }
5056
14
        },
5057
14
        { &hf_diameter_3gpp_codec_sdp_type,
5058
14
            { "SDP Type", "diameter.3gpp.codec_data.sdp_type",
5059
14
            FT_STRING, BASE_NONE, NULL, 0x0,
5060
14
            NULL, HFILL }
5061
14
        },
5062
14
        { &hf_diameter_3gpp_af_requested_data_flags,
5063
14
            { "AF-Requested-Data Flags", "diameter.3gpp.af_requested_data_flags",
5064
14
            FT_UINT32, BASE_HEX, NULL, 0x0,
5065
14
            NULL, HFILL }
5066
14
        },
5067
14
        { &hf_diameter_3gpp_af_requested_data_flags_bit0,
5068
14
            { "EPC-level identities", "diameter.3gpp.af_requested_data_flags.bit0",
5069
14
            FT_BOOLEAN, 32, TFS(&tfs_required_not_required), 0x00000001,
5070
14
            NULL, HFILL }
5071
14
        },
5072
14
        { &hf_diameter_3gpp_mbms_bearer_event,
5073
14
            { "MBMS-Bearer-Event", "diameter.3gpp.mbms_bearer_event",
5074
14
            FT_UINT32, BASE_HEX, NULL, 0x0,
5075
14
            NULL, HFILL }
5076
14
        },
5077
14
        { &hf_diameter_3gpp_mbms_bearer_event_bit0,
5078
14
            { "Bearer Terminated", "diameter.3gpp.mbms_bearer_event_bit0",
5079
14
            FT_BOOLEAN, 32, TFS(&tfs_set_notset), 0x00000001,
5080
14
            NULL, HFILL }
5081
14
        },
5082
14
        { &hf_diameter_3gpp_mbms_bearer_event_bit1,
5083
14
            { "Bearer Activated", "diameter.3gpp.mbms_bearer_event_bit1",
5084
14
            FT_BOOLEAN, 32, TFS(&tfs_set_notset), 0x00000002,
5085
14
            NULL, HFILL }
5086
14
        },
5087
14
        { &hf_diameter_3gpp_mbms_bearer_event_bit2,
5088
14
            { "Userplane Event", "diameter.3gpp.mbms_bearer_event_bit2",
5089
14
            FT_BOOLEAN, 32, TFS(&tfs_set_notset), 0x00000004,
5090
14
            NULL, HFILL }
5091
14
        },
5092
14
        { &hf_diameter_3gpp_mbms_bearer_event_spare_bits,
5093
14
            { "Spare", "diameter.3gpp.mbms_bearer_event_spare",
5094
14
            FT_UINT32, BASE_HEX, NULL, 0xfffffff8,
5095
14
            NULL, HFILL }
5096
14
        },
5097
14
        { &hf_diameter_3gpp_mbms_bearer_result,
5098
14
            { "MBMS-Bearer-Result", "diameter.3gpp.mbms_bearer_result",
5099
14
            FT_UINT32, BASE_HEX, NULL, 0x0,
5100
14
            NULL, HFILL }
5101
14
        },
5102
14
        { &hf_diameter_3gpp_mbms_bearer_result_bit0,
5103
14
            { "Success", "diameter.3gpp.mbms_bearer_result_bit0",
5104
14
            FT_BOOLEAN, 32, TFS(&tfs_set_notset), 0x00000001,
5105
14
            NULL, HFILL }
5106
14
        },
5107
14
        { &hf_diameter_3gpp_mbms_bearer_result_bit1,
5108
14
            { "Authorization rejected", "diameter.3gpp.mbms_bearer_result_bit1",
5109
14
            FT_BOOLEAN, 32, TFS(&tfs_set_notset), 0x00000002,
5110
14
            NULL, HFILL }
5111
14
        },
5112
14
        { &hf_diameter_3gpp_mbms_bearer_result_bit2,
5113
14
            { "Resources exceeded", "diameter.3gpp.mbms_bearer_result_bit2",
5114
14
            FT_BOOLEAN, 32, TFS(&tfs_set_notset), 0x00000004,
5115
14
            NULL, HFILL }
5116
14
        },
5117
14
        { &hf_diameter_3gpp_mbms_bearer_result_bit3,
5118
14
            { "Unknown TMGI", "diameter.3gpp.mbms_bearer_result_bit3",
5119
14
            FT_BOOLEAN, 32, TFS(&tfs_set_notset), 0x00000008,
5120
14
            NULL, HFILL }
5121
14
        },
5122
14
        { &hf_diameter_3gpp_mbms_bearer_result_bit4,
5123
14
            { "TMGI not in use", "diameter.3gpp.mbms_bearer_result_bit4",
5124
14
            FT_BOOLEAN, 32, TFS(&tfs_set_notset), 0x00000010,
5125
14
            NULL, HFILL }
5126
14
        },
5127
14
        { &hf_diameter_3gpp_mbms_bearer_result_bit5,
5128
14
            { "Overlapping MBMS-Service-Area", "diameter.3gpp.mbms_bearer_result_bit5",
5129
14
            FT_BOOLEAN, 32, TFS(&tfs_set_notset), 0x00000020,
5130
14
            NULL, HFILL }
5131
14
        },
5132
14
        { &hf_diameter_3gpp_mbms_bearer_result_bit6,
5133
14
            { "Unknown Flow Identifier", "diameter.3gpp.mbms_bearer_result_bit6",
5134
14
            FT_BOOLEAN, 32, TFS(&tfs_set_notset), 0x00000040,
5135
14
            NULL, HFILL }
5136
14
        },
5137
14
        { &hf_diameter_3gpp_mbms_bearer_result_bit7,
5138
14
            { "QoS Authorization Rejected", "diameter.3gpp.mbms_bearer_result_bit7",
5139
14
            FT_BOOLEAN, 32, TFS(&tfs_set_notset), 0x00000080,
5140
14
            NULL, HFILL }
5141
14
        },
5142
14
        { &hf_diameter_3gpp_mbms_bearer_result_bit8,
5143
14
            { "Unknown MBMS-Service-Area", "diameter.3gpp.mbms_bearer_result_bit8",
5144
14
            FT_BOOLEAN, 32, TFS(&tfs_set_notset), 0x00000100,
5145
14
            NULL, HFILL }
5146
14
        },
5147
14
        { &hf_diameter_3gpp_mbms_bearer_result_bit9,
5148
14
            { "MBMS-Service-Area Authorization Rejected", "diameter.3gpp.mbms_bearer_result_bit9",
5149
14
            FT_BOOLEAN, 32, TFS(&tfs_set_notset), 0x00000200,
5150
14
            NULL, HFILL }
5151
14
        },
5152
14
        { &hf_diameter_3gpp_mbms_bearer_result_bit10,
5153
14
            { "MBMS-Start-Time", "diameter.3gpp.mbms_bearer_result_bit10",
5154
14
            FT_BOOLEAN, 32, TFS(&tfs_set_notset), 0x00000400,
5155
14
            NULL, HFILL }
5156
14
        },
5157
14
        { &hf_diameter_3gpp_mbms_bearer_result_bit11,
5158
14
            { "Invalid AVP combination", "diameter.3gpp.mbms_bearer_result_bit11",
5159
14
            FT_BOOLEAN, 32, TFS(&tfs_set_notset), 0x00000800,
5160
14
            NULL, HFILL }
5161
14
        },
5162
14
        { &hf_diameter_3gpp_mbms_bearer_result_spare_bits,
5163
14
            { "Spare", "diameter.3gpp.mbms_bearer_result_spare",
5164
14
            FT_UINT32, BASE_HEX, NULL, 0xFFFFF000,
5165
14
            NULL, HFILL }
5166
14
        },
5167
14
        { &hf_diameter_3gpp_tmgi_allocation_result,
5168
14
            { "TMGI-Allocation-Result", "diameter.3gpp.tmgi_allocation_result",
5169
14
            FT_UINT32, BASE_HEX, NULL, 0x0,
5170
14
            NULL, HFILL }
5171
14
        },
5172
14
        { &hf_diameter_3gpp_tmgi_allocation_result_bit0,
5173
14
            { "Success", "diameter.3gpp.tmgi_allocation_result_bit0",
5174
14
            FT_BOOLEAN, 32, TFS(&tfs_set_notset), 0x00000001,
5175
14
            NULL, HFILL }
5176
14
        },
5177
14
        { &hf_diameter_3gpp_tmgi_allocation_result_bit1,
5178
14
            { "Authorization rejected", "diameter.3gpp.tmgi_allocation_result_bit1",
5179
14
            FT_BOOLEAN, 32, TFS(&tfs_set_notset), 0x00000002,
5180
14
            NULL, HFILL }
5181
14
        },
5182
14
        { &hf_diameter_3gpp_tmgi_allocation_result_bit2,
5183
14
            { "Resources exceeded", "diameter.3gpp.tmgi_allocation_result_bit2",
5184
14
            FT_BOOLEAN, 32, TFS(&tfs_set_notset), 0x00000004,
5185
14
            NULL, HFILL }
5186
14
        },
5187
14
        { &hf_diameter_3gpp_tmgi_allocation_result_bit3,
5188
14
            { "Unknown TMGI", "diameter.3gpp.tmgi_allocation_result_bit3",
5189
14
            FT_BOOLEAN, 32, TFS(&tfs_set_notset), 0x00000008,
5190
14
            NULL, HFILL }
5191
14
        },
5192
14
        { &hf_diameter_3gpp_tmgi_allocation_result_bit4,
5193
14
            { "Too many TMGIs requested", "diameter.3gpp.tmgi_allocation_result_bit4",
5194
14
            FT_BOOLEAN, 32, TFS(&tfs_set_notset), 0x00000010,
5195
14
            NULL, HFILL }
5196
14
        },
5197
14
        { &hf_diameter_3gpp_tmgi_allocation_result_spare_bits,
5198
14
            { "Spare", "diameter.3gpp.tmgi_allocation_result_spare",
5199
14
            FT_UINT32, BASE_HEX, NULL, 0xFFFFFFE0,
5200
14
            NULL, HFILL }
5201
14
        },
5202
14
        { &hf_diameter_3gpp_tmgi_deallocation_result,
5203
14
            { "TMGI-Deallocation-Result", "diameter.3gpp.tmgi_deallocation_result",
5204
14
            FT_UINT32, BASE_HEX, NULL, 0x0,
5205
14
            NULL, HFILL }
5206
14
        },
5207
14
        { &hf_diameter_3gpp_tmgi_deallocation_result_bit0,
5208
14
            { "Success", "diameter.3gpp.tmgi_deallocation_result_bit0",
5209
14
            FT_BOOLEAN, 32, TFS(&tfs_set_notset), 0x00000001,
5210
14
            NULL, HFILL }
5211
14
        },
5212
14
        { &hf_diameter_3gpp_tmgi_deallocation_result_bit1,
5213
14
            { "Authorization rejected", "diameter.3gpp.tmgi_deallocation_result_bit1",
5214
14
            FT_BOOLEAN, 32, TFS(&tfs_set_notset), 0x00000002,
5215
14
            NULL, HFILL }
5216
14
        },
5217
14
        { &hf_diameter_3gpp_tmgi_deallocation_result_bit2,
5218
14
            { "Unknown TMGI", "diameter.3gpp.tmgi_deallocation_result_bit2",
5219
14
            FT_BOOLEAN, 32, TFS(&tfs_set_notset), 0x00000004,
5220
14
            NULL, HFILL }
5221
14
        },
5222
14
        { &hf_diameter_3gpp_tmgi_deallocation_result_spare_bits,
5223
14
            { "Spare", "diameter.3gpp.tmgi_deallocation_result_spare",
5224
14
            FT_UINT32, BASE_HEX, NULL, 0xFFFFFFF8,
5225
14
            NULL, HFILL }
5226
14
        },
5227
14
        { &hf_diameter_3gpp_sar_flags,
5228
14
        { "SAR Flags", "diameter.3gpp.sar_flags",
5229
14
            FT_UINT32, BASE_HEX, NULL, 0x0,
5230
14
            NULL, HFILL }
5231
14
        },
5232
5233
14
        { &hf_diameter_3gpp_sar_flags_flags_bit0,
5234
14
        { "P-CSCF Restoration Indication", "diameter.3gpp.sar_flags_flags_bit0",
5235
14
            FT_BOOLEAN, 32, TFS(&tfs_set_notset), 0x00000001,
5236
14
            NULL, HFILL }
5237
14
        },
5238
14
        { &hf_diameter_3gpp_feature_list1_rx_flags_bit0,
5239
14
        { "Rel8", "diameter.3gpp.feature_list1_rx_flags_bit0",
5240
14
            FT_BOOLEAN, 32, TFS(&tfs_supported_not_supported), 0x00000001,
5241
14
            NULL, HFILL }
5242
14
        },
5243
14
        { &hf_diameter_3gpp_feature_list1_rx_flags_bit1,
5244
14
        { "Rel9", "diameter.3gpp.feature_list1_rx_flags_bit1",
5245
14
            FT_BOOLEAN, 32, TFS(&tfs_supported_not_supported), 0x00000002,
5246
14
            NULL, HFILL }
5247
14
        },
5248
14
        { &hf_diameter_3gpp_feature_list1_rx_flags_bit2,
5249
14
        { "ProvAFsignalFlow", "diameter.3gpp.feature_list1_rx_flags_bit2",
5250
14
            FT_BOOLEAN, 32, TFS(&tfs_supported_not_supported), 0x00000004,
5251
14
            NULL, HFILL }
5252
14
        },
5253
14
        { &hf_diameter_3gpp_feature_list1_rx_flags_bit3,
5254
14
        { "SponsoredConnectivity", "diameter.3gpp.feature_list1_rx_flags_bit3",
5255
14
            FT_BOOLEAN, 32, TFS(&tfs_supported_not_supported), 0x00000008,
5256
14
            NULL, HFILL }
5257
14
        },
5258
14
        { &hf_diameter_3gpp_feature_list1_rx_flags_bit4,
5259
14
        { "Rel10", "diameter.3gpp.feature_list1_rx_flags_bit4",
5260
14
            FT_BOOLEAN, 32, TFS(&tfs_supported_not_supported), 0x00000010,
5261
14
            NULL, HFILL }
5262
14
        },
5263
14
        { &hf_diameter_3gpp_feature_list1_rx_flags_bit5,
5264
14
        { "NetLoc", "diameter.3gpp.feature_list1_rx_flags_bit5",
5265
14
            FT_BOOLEAN, 32, TFS(&tfs_supported_not_supported), 0x00000020,
5266
14
            NULL, HFILL }
5267
14
        },
5268
14
        { &hf_diameter_3gpp_feature_list1_rx_flags_bit6,
5269
14
        { "ExtendedFilter", "diameter.3gpp.feature_list1_rx_flags_bit6",
5270
14
            FT_BOOLEAN, 32, TFS(&tfs_supported_not_supported), 0x00000040,
5271
14
            NULL, HFILL }
5272
14
        },
5273
14
        { &hf_diameter_3gpp_feature_list1_rx_flags_bit7,
5274
14
        { "SCTimeBasedUM", "diameter.3gpp.feature_list1_rx_flags_bit7",
5275
14
            FT_BOOLEAN, 32, TFS(&tfs_supported_not_supported), 0x00000080,
5276
14
            NULL, HFILL }
5277
14
        },
5278
14
        { &hf_diameter_3gpp_feature_list1_rx_flags_bit8,
5279
14
        { "Netloc-Trusted-WLAN", "diameter.3gpp.feature_list1_rx_flags_bit8",
5280
14
            FT_BOOLEAN, 32, TFS(&tfs_supported_not_supported), 0x00000100,
5281
14
            NULL, HFILL }
5282
14
        },
5283
14
        { &hf_diameter_3gpp_feature_list1_rx_flags_bit9,
5284
14
        { "RAN-NAS-Cause", "diameter.3gpp.feature_list1_rx_flags_bit9",
5285
14
            FT_BOOLEAN, 32, TFS(&tfs_supported_not_supported), 0x00000200,
5286
14
            NULL, HFILL }
5287
14
        },
5288
5289
14
        { &hf_diameter_3gpp_feature_list1_rx_flags_bit10,
5290
14
        { "GroupComService", "diameter.3gpp.feature_list1_rx_flags_bit10",
5291
14
            FT_BOOLEAN, 32, TFS(&tfs_supported_not_supported), 0x00000400,
5292
14
            NULL, HFILL }
5293
14
        },
5294
14
        { &hf_diameter_3gpp_feature_list1_rx_flags_bit11,
5295
14
        { "ResShare", "diameter.3gpp.feature_list1_rx_flags_bit11",
5296
14
            FT_BOOLEAN, 32, TFS(&tfs_supported_not_supported), 0x00000800,
5297
14
            NULL, HFILL }
5298
14
        },
5299
14
        { &hf_diameter_3gpp_feature_list1_rx_flags_bit12,
5300
14
        { "DeferredService", "diameter.3gpp.feature_list1_rx_flags_bit12",
5301
14
            FT_BOOLEAN, 32, TFS(&tfs_supported_not_supported), 0x00001000,
5302
14
            NULL, HFILL }
5303
14
        },
5304
14
        { &hf_diameter_3gpp_feature_list1_rx_flags_bit13,
5305
14
        { "DSCP", "diameter.3gpp.feature_list1_rx_flags_bit13",
5306
14
            FT_BOOLEAN, 32, TFS(&tfs_supported_not_supported), 0x00002000,
5307
14
            NULL, HFILL }
5308
14
        },
5309
14
        { &hf_diameter_3gpp_feature_list1_rx_flags_bit14,
5310
14
        { "SponsorChange", "diameter.3gpp.feature_list1_rx_flags_bit14",
5311
14
            FT_BOOLEAN, 32, TFS(&tfs_supported_not_supported), 0x00004000,
5312
14
            NULL, HFILL }
5313
14
        },
5314
14
        { &hf_diameter_3gpp_feature_list1_rx_flags_bit15,
5315
14
        { "E2EQOSMTSI", "diameter.3gpp.feature_list1_rx_flags_bit15",
5316
14
            FT_BOOLEAN, 32, TFS(&tfs_supported_not_supported), 0x00008000,
5317
14
            NULL, HFILL }
5318
14
        },
5319
14
        { &hf_diameter_3gpp_feature_list1_rx_flags_bit16,
5320
14
        { "NetLoc-Untrusted-WLAN", "diameter.3gpp.feature_list1_rx_flags_bit16",
5321
14
            FT_BOOLEAN, 32, TFS(&tfs_supported_not_supported), 0x00010000,
5322
14
            NULL, HFILL }
5323
14
        },
5324
14
        { &hf_diameter_3gpp_feature_list1_rx_flags_bit17,
5325
14
        { "MCPTT", "diameter.3gpp.feature_list1_rx_flags_bit17",
5326
14
            FT_BOOLEAN, 32, TFS(&tfs_supported_not_supported), 0x00020000,
5327
14
            NULL, HFILL }
5328
14
        },
5329
14
        { &hf_diameter_3gpp_feature_list1_rx_flags_bit18,
5330
14
        { "PrioritySharing", "diameter.3gpp.feature_list1_rx_flags_bit18",
5331
14
            FT_BOOLEAN, 32, TFS(&tfs_supported_not_supported), 0x00040000,
5332
14
            NULL, HFILL }
5333
14
        },
5334
14
        { &hf_diameter_3gpp_feature_list1_rx_flags_bit19,
5335
14
        { "PLMNInfo", "diameter.3gpp.feature_list1_rx_flags_bit19",
5336
14
            FT_BOOLEAN, 32, TFS(&tfs_supported_not_supported), 0x00080000,
5337
14
            NULL, HFILL }
5338
14
        },
5339
14
        { &hf_diameter_3gpp_feature_list1_rx_flags_bit20,
5340
14
        { "MediaComponentVersioning", "diameter.3gpp.feature_list1_rx_flags_bit20",
5341
14
            FT_BOOLEAN, 32, TFS(&tfs_supported_not_supported), 0x00100000,
5342
14
            NULL, HFILL }
5343
14
        },
5344
14
        { &hf_diameter_3gpp_feature_list1_rx_flags_bit21,
5345
14
        { "MCPTT-Preemption", "diameter.3gpp.feature_list1_rx_flags_bit21",
5346
14
            FT_BOOLEAN, 32, TFS(&tfs_supported_not_supported), 0x00200000,
5347
14
            NULL, HFILL }
5348
14
        },
5349
14
        { &hf_diameter_3gpp_feature_list1_rx_flags_bit22,
5350
14
        { "MCVideo", "diameter.3gpp.feature_list1_rx_flags_bit22",
5351
14
            FT_BOOLEAN, 32, TFS(&tfs_supported_not_supported), 0x00400000,
5352
14
            NULL, HFILL }
5353
14
        },
5354
14
        { &hf_diameter_3gpp_feature_list1_rx_flags_spare_bits,
5355
14
        { "Spare", "diameter.3gpp.feature_list1_rx_flags_spare",
5356
14
            FT_UINT32, BASE_HEX, NULL, 0xFF800000,
5357
14
            NULL, HFILL }
5358
14
        },
5359
14
        { &hf_diameter_3gpp_feature_list2_rx_flags_bit0,
5360
14
        { "PCSCF-Restoration-Enhancement", "diameter.3gpp.feature_list2_rx_flags_bit0",
5361
14
            FT_BOOLEAN, 32, TFS(&tfs_supported_not_supported), 0x00000001,
5362
14
            NULL, HFILL }
5363
14
        },
5364
14
        { &hf_diameter_3gpp_feature_list2_rx_flags_bit1,
5365
14
        { "Extended-Max-Requested-BW-NR", "diameter.3gpp.feature_list2_rx_flags_bit1",
5366
14
            FT_BOOLEAN, 32, TFS(&tfs_supported_not_supported), 0x00000002,
5367
14
            NULL, HFILL }
5368
14
        },
5369
14
        { &hf_diameter_3gpp_feature_list2_rx_flags_bit2,
5370
14
        { "Extended-Min-Requested-BW-NR", "diameter.3gpp.feature_list2_rx_flags_bit2",
5371
14
            FT_BOOLEAN, 32, TFS(&tfs_supported_not_supported), 0x00000004,
5372
14
            NULL, HFILL }
5373
14
        },
5374
14
        { &hf_diameter_3gpp_feature_list2_rx_flags_bit3,
5375
14
        { "Extended-BW-E2EQOSMTSI-NR", "diameter.3gpp.feature_list2_rx_flags_bit3",
5376
14
            FT_BOOLEAN, 32, TFS(&tfs_supported_not_supported), 0x00000008,
5377
14
            NULL, HFILL }
5378
14
        },
5379
14
        { &hf_diameter_3gpp_feature_list2_rx_flags_bit4,
5380
14
        { "VBC", "diameter.3gpp.feature_list2_rx_flags_bit4",
5381
14
            FT_BOOLEAN, 32, TFS(&tfs_supported_not_supported), 0x00000010,
5382
14
            NULL, HFILL }
5383
14
        },
5384
14
        { &hf_diameter_3gpp_feature_list2_rx_flags_bit5,
5385
14
        { "CHEM", "diameter.3gpp.feature_list2_rx_flags_bit5",
5386
14
            FT_BOOLEAN, 32, TFS(&tfs_supported_not_supported), 0x00000020,
5387
14
            NULL, HFILL }
5388
14
        },
5389
14
        { &hf_diameter_3gpp_feature_list2_rx_flags_bit6,
5390
14
        { "VBCLTE", "diameter.3gpp.feature_list2_rx_flags_bit6",
5391
14
            FT_BOOLEAN, 32, TFS(&tfs_supported_not_supported), 0x00000040,
5392
14
            NULL, HFILL }
5393
14
        },
5394
14
        { &hf_diameter_3gpp_feature_list2_rx_flags_bit7,
5395
14
        { "FLUS", "diameter.3gpp.feature_list2_rx_flags_bit7",
5396
14
            FT_BOOLEAN, 32, TFS(&tfs_supported_not_supported), 0x00000080,
5397
14
            NULL, HFILL }
5398
14
        },
5399
14
        { &hf_diameter_3gpp_feature_list2_rx_flags_bit8,
5400
14
        { "EPSFallbackReport", "diameter.3gpp.feature_list2_rx_flags_bit8",
5401
14
            FT_BOOLEAN, 32, TFS(&tfs_supported_not_supported), 0x00000100,
5402
14
            NULL, HFILL }
5403
14
        },
5404
14
        { &hf_diameter_3gpp_feature_list2_rx_flags_bit9,
5405
14
        { "ATSSS", "diameter.3gpp.feature_list2_rx_flags_bit9",
5406
14
            FT_BOOLEAN, 32, TFS(&tfs_supported_not_supported), 0x00000200,
5407
14
            NULL, HFILL }
5408
14
        },
5409
14
        { &hf_diameter_3gpp_feature_list2_rx_flags_bit10,
5410
14
        { "QoSHint", "diameter.3gpp.feature_list2_rx_flags_bit10",
5411
14
            FT_BOOLEAN, 32, TFS(&tfs_supported_not_supported), 0x00000400,
5412
14
            NULL, HFILL }
5413
14
        },
5414
14
        { &hf_diameter_3gpp_feature_list2_rx_flags_bit11,
5415
14
        { "ReallocationOfCredit", "diameter.3gpp.feature_list2_rx_flags_bit11",
5416
14
            FT_BOOLEAN, 32, TFS(&tfs_supported_not_supported), 0x00000800,
5417
14
            NULL, HFILL }
5418
14
        },
5419
14
        { &hf_diameter_3gpp_feature_list2_rx_flags_bit12,
5420
14
        { "Netloc-Trusted-N3GA", "diameter.3gpp.feature_list2_rx_flags_bit12",
5421
14
            FT_BOOLEAN, 32, TFS(&tfs_supported_not_supported), 0x00001000,
5422
14
            NULL, HFILL }
5423
14
        },
5424
14
        { &hf_diameter_3gpp_feature_list2_rx_flags_bit13,
5425
14
        { "NetLoc-Wireline", "diameter.3gpp.feature_list2_rx_flags_bit13",
5426
14
            FT_BOOLEAN, 32, TFS(&tfs_supported_not_supported), 0x00002000,
5427
14
            NULL, HFILL }
5428
14
        },
5429
14
        { &hf_diameter_3gpp_feature_list2_rx_flags_bit14,
5430
14
        { "MPSforDTS", "diameter.3gpp.feature_list2_rx_flags_bit14",
5431
14
            FT_BOOLEAN, 32, TFS(&tfs_supported_not_supported), 0x00004000,
5432
14
            NULL, HFILL }
5433
14
        },
5434
14
        { &hf_diameter_3gpp_feature_list2_rx_flags_bit15,
5435
14
        { "User-Equipment-Info-Extension", "diameter.3gpp.feature_list2_rx_flags_bit15",
5436
14
            FT_BOOLEAN, 32, TFS(&tfs_supported_not_supported), 0x00008000,
5437
14
            NULL, HFILL }
5438
14
        },
5439
14
        { &hf_diameter_3gpp_feature_list2_rx_flags_spare_bits,
5440
14
        { "Spare", "diameter.3gpp.feature_list2_rx_flags_spare",
5441
14
            FT_UINT32, BASE_HEX, NULL, 0xFFFF0000,
5442
14
            NULL, HFILL }
5443
14
        },
5444
14
        { &hf_diameter_3gpp_feature_list_sd_flags,
5445
14
        { "SD Feature-List Flags", "diameter.3gpp.sd_feature_list_flags",
5446
14
          FT_UINT32, BASE_HEX, NULL, 0x0,
5447
14
          NULL, HFILL }
5448
14
        },
5449
14
        { &hf_diameter_3gpp_feature_list_sd_flags_bit0,
5450
14
        { "UMCH", "diameter.3gpp.feature_list_sd_flags_bit0",
5451
14
          FT_BOOLEAN, 32, TFS(&tfs_supported_not_supported), 0x00000001,
5452
14
          NULL, HFILL}
5453
14
        },
5454
14
        { &hf_diameter_3gpp_feature_list_sd_flags_bit1,
5455
14
        { "Trusted-WLAN", "diameter.3gpp.feature_list_sd_flags_bit1",
5456
14
          FT_BOOLEAN, 32, TFS(&tfs_supported_not_supported), 0x00000002,
5457
14
          NULL, HFILL}
5458
14
        },
5459
14
        { &hf_diameter_3gpp_feature_list_sd_flags_bit2,
5460
14
        { "TimeBasedUM", "diameter.3gpp.feature_list_sd_flags_bit2",
5461
14
          FT_BOOLEAN, 32, TFS(&tfs_supported_not_supported), 0x00000004,
5462
14
          NULL, HFILL}
5463
14
        },
5464
14
        { &hf_diameter_3gpp_feature_list_sd_flags_bit3,
5465
14
        { "PendingTransaction", "diameter.3gpp.feature_list_sd_flags_bit3",
5466
14
          FT_BOOLEAN, 32, TFS(&tfs_supported_not_supported), 0x00000008,
5467
14
          NULL, HFILL}
5468
14
        },
5469
14
        { &hf_diameter_3gpp_feature_list_sd_flags_bit4,
5470
14
        { "ABC", "diameter.3gpp.feature_list_sd_flags_bit4",
5471
14
          FT_BOOLEAN, 32, TFS(&tfs_supported_not_supported), 0x00000010,
5472
14
          NULL, HFILL}
5473
14
        },
5474
14
        { &hf_diameter_3gpp_feature_list_sd_flags_bit5,
5475
14
        { "CNO-ULI", "diameter.3gpp.feature_list_sd_flags_bit5",
5476
14
          FT_BOOLEAN, 32, TFS(&tfs_supported_not_supported), 0x00000020,
5477
14
          NULL, HFILL}
5478
14
        },
5479
14
        { &hf_diameter_3gpp_feature_list_sd_flags_bit6,
5480
14
        { "ExUsage", "diameter.3gpp.feature_list_sd_flags_bit6",
5481
14
          FT_BOOLEAN, 32, TFS(&tfs_supported_not_supported), 0x00000040,
5482
14
          NULL, HFILL}
5483
14
        },
5484
14
        { &hf_diameter_3gpp_feature_list_sd_flags_bit7,
5485
14
        { "DLDSCPMarking", "diameter.3gpp.feature_list_sd_flags_bit7",
5486
14
          FT_BOOLEAN, 32, TFS(&tfs_supported_not_supported), 0x00000080,
5487
14
          NULL, HFILL}
5488
14
        },
5489
14
        { &hf_diameter_3gpp_feature_list_sd_flags_bit8,
5490
14
        { "TSC", "diameter.3gpp.feature_list_sd_flags_bit8",
5491
14
          FT_BOOLEAN, 32, TFS(&tfs_supported_not_supported), 0x00000100,
5492
14
          NULL, HFILL}
5493
14
        },
5494
14
        { &hf_diameter_3gpp_feature_list_sd_flags_bit9,
5495
14
        { "ENB-Change", "diameter.3gpp.feature_list_sd_flags_bit9",
5496
14
          FT_BOOLEAN, 32, TFS(&tfs_supported_not_supported), 0x00000200,
5497
14
          NULL, HFILL}
5498
14
        },
5499
14
        { &hf_diameter_3gpp_feature_list_sd_flags_bit10,
5500
14
        { "SponsoredConnectivity-Sd", "diameter.3gpp.feature_list_sd_flags_bit10",
5501
14
          FT_BOOLEAN, 32, TFS(&tfs_supported_not_supported), 0x00000400,
5502
14
          NULL, HFILL}
5503
14
        },
5504
14
        { &hf_diameter_3gpp_feature_list_sd_flags_spare_bits,
5505
14
        { "Spare", "diameter.3gpp.feature_list_sd_flags_spare",
5506
14
          FT_UINT32, BASE_HEX, NULL, 0xFFFFF800,
5507
14
          NULL, HFILL}
5508
14
        },
5509
14
        { &hf_diameter_3gpp_ran_nas_protocol_type,
5510
14
        { "Protocol Type", "diameter.3gpp.ran_nas.protocol_type",
5511
14
          FT_UINT8, BASE_DEC, VALS(ran_nas_prot_type_vals), 0xF0,
5512
14
          NULL, HFILL}
5513
14
        },
5514
14
        { &hf_diameter_3gpp_ran_nas_cause_type,
5515
14
        { "S1AP Cause Type", "diameter.3gpp.ran_nas.s1ap_type",
5516
14
          FT_UINT8, BASE_DEC, VALS(s1ap_Cause_vals), 0x0F,
5517
14
          NULL, HFILL}
5518
14
        },
5519
14
        { &hf_diameter_3gpp_ran_nas_cause_value,
5520
14
        { "Cause Value", "diameter.3gpp.ran_nas.cause_value",
5521
14
          FT_UINT32, BASE_DEC, NULL, 0x0,
5522
14
          NULL, HFILL}
5523
14
        },
5524
14
        { &hf_diameter_3gpp_s1ap_radio_network,
5525
14
        { "S1AP Radio Network Cause Value", "diameter.3gpp.ran_nas.radio_cause",
5526
14
          FT_UINT8, BASE_DEC, VALS(s1ap_CauseRadioNetwork_vals), 0x0,
5527
14
          NULL, HFILL}
5528
14
        },
5529
14
        { &hf_diameter_3gpp_s1ap_transport,
5530
14
        { "S1AP Transport Cause Value", "diameter.3gpp.ran_nas.transport_cause",
5531
14
          FT_UINT8, BASE_DEC, VALS(s1ap_CauseTransport_vals), 0x0,
5532
14
          NULL, HFILL}
5533
14
        },
5534
14
        { &hf_diameter_3gpp_s1ap_nas,
5535
14
        { "S1AP NAS Cause Value", "diameter.3gpp.ran_nas.nas_cause",
5536
14
          FT_UINT8, BASE_DEC, VALS(s1ap_CauseNas_vals), 0x0,
5537
14
          NULL, HFILL}
5538
14
        },
5539
14
        { &hf_diameter_3gpp_s1ap_protocol,
5540
14
        { "S1AP Protocol Cause Value", "diameter.3gpp.ran_nas.protocol_cause",
5541
14
          FT_UINT8, BASE_DEC, VALS(s1ap_CauseProtocol_vals), 0x0,
5542
14
          NULL, HFILL}
5543
14
        },
5544
14
        { &hf_diameter_3gpp_s1ap_misc,
5545
14
        { "S1AP Misc. Cause Value", "diameter.3gpp.ran_nas.misc_cause",
5546
14
          FT_UINT8, BASE_DEC, VALS(s1ap_CauseMisc_vals), 0x0,
5547
14
          NULL, HFILL}
5548
14
        },
5549
14
        { &hf_diameter_3gpp_emm_cause,
5550
14
        { "EMM Cause Value", "diameter.3gpp.ran_nas.emm_cause",
5551
14
          FT_UINT8, BASE_DEC, VALS(nas_eps_emm_cause_values), 0x0,
5552
14
          NULL, HFILL}
5553
14
        },
5554
14
        { &hf_diameter_3gpp_esm_cause,
5555
14
        { "ESM Cause Value", "diameter.3gpp.ran_nas.esm_cause",
5556
14
          FT_UINT8, BASE_DEC, VALS(nas_eps_esm_cause_vals), 0x0,
5557
14
          NULL, HFILL}
5558
14
        },
5559
14
        { &hf_diameter_3gpp_diameter_cause,
5560
14
        { "Diameter Cause Value", "diameter.3gpp.ran_nas.diameter_cause",
5561
14
          FT_UINT16, BASE_DEC, VALS(diameter_3gpp_termination_cause_vals), 0x0,
5562
14
          NULL, HFILL}
5563
14
        },
5564
14
        { &hf_diameter_3gpp_ikev2_cause,
5565
14
        { "IKEv2 Cause Value", "diameter.3gpp.ran_nas.ikev2_cause",
5566
14
          FT_UINT16, BASE_DEC, VALS(diameter_3gpp_IKEv2_error_type_vals), 0x0,
5567
14
          NULL, HFILL}
5568
14
        },
5569
14
        { &hf_diameter_3gpp_emergency_services_flags,
5570
14
        { "Emergency-Services Flags", "diameter.3gpp.emergency_ind_flags",
5571
14
          FT_UINT32, BASE_HEX, NULL, 0x0,
5572
14
          NULL, HFILL }
5573
14
        },
5574
14
        { &hf_diameter_3gpp_emergency_services_flags_bit0,
5575
14
        { "Emergency-Indication", "diameter.3gpp.emergency_ind_flags_bit0",
5576
14
          FT_BOOLEAN, 32, TFS(&tfs_set_notset), 0x00000001,
5577
14
          NULL, HFILL }
5578
14
        },
5579
14
        { &hf_diameter_3gpp_emergency_services_flags_spare_bits,
5580
14
        { "Spare", "diameter.3gpp.emergency_ind_flags_spare",
5581
14
          FT_UINT32, BASE_HEX, NULL, 0xFFFFFFFE,
5582
14
          NULL, HFILL }
5583
14
        },
5584
14
        { &hf_diameter_3gpp_pur_flags,
5585
14
        { "PUR Flags", "diameter.3gpp.pur_flags",
5586
14
          FT_UINT32, BASE_HEX, NULL, 0x0,
5587
14
          NULL, HFILL }
5588
14
        },
5589
14
        { &hf_diameter_3gpp_pur_flags_spare_bits,
5590
14
        { "Spare", "diameter.3gpp.pur_flags_spare",
5591
14
          FT_UINT32, BASE_HEX, NULL, 0xFFFFFFFC,
5592
14
          NULL, HFILL }
5593
14
        },
5594
14
        { &hf_diameter_3gpp_pur_flags_bit1,
5595
14
        { "UE Purged in SGSN", "diameter.3gpp.pur_flags_bit1",
5596
14
          FT_BOOLEAN, 32, TFS(&tfs_set_notset), 0x00000002,
5597
14
          NULL, HFILL }
5598
14
        },
5599
14
        { &hf_diameter_3gpp_pur_flags_bit0,
5600
14
        { "UE Purged in MME", "diameter.3gpp.pur_flags_bit0",
5601
14
          FT_BOOLEAN, 32, TFS(&tfs_set_notset), 0x00000001,
5602
14
          NULL, HFILL }
5603
14
        },
5604
14
        { &hf_diameter_3gpp_clr_flags,
5605
14
        { "CLR Flags", "diameter.3gpp.clr_flags",
5606
14
          FT_UINT32, BASE_HEX, NULL, 0x0,
5607
14
          NULL, HFILL }
5608
14
        },
5609
14
        { &hf_diameter_3gpp_clr_flags_spare_bits,
5610
14
        { "Spare", "diameter.3gpp.clr_flags_spare",
5611
14
          FT_UINT32, BASE_HEX, NULL, 0xFFFFFFFC,
5612
14
          NULL, HFILL }
5613
14
        },
5614
14
        { &hf_diameter_3gpp_clr_flags_bit1,
5615
14
        { "Reattach-Required", "diameter.3gpp.clr_flags_bit1",
5616
14
          FT_BOOLEAN, 32, TFS(&tfs_set_notset), 0x00000002,
5617
14
          NULL, HFILL }
5618
14
        },
5619
14
        { &hf_diameter_3gpp_clr_flags_bit0,
5620
14
        { "S6a/S6d-Indicator", "diameter.3gpp.clr_flags_bit0",
5621
14
          FT_BOOLEAN, 32, TFS(&tfs_set_notset), 0x00000001,
5622
14
          NULL, HFILL }
5623
14
        },
5624
14
        { &hf_diameter_3gpp_uvr_flags,
5625
14
        { "UVR Flags", "diameter.3gpp.uvr_flags",
5626
14
          FT_UINT32, BASE_HEX, NULL, 0x0,
5627
14
          NULL, HFILL }
5628
14
        },
5629
14
        { &hf_diameter_3gpp_uvr_flags_spare_bits,
5630
14
        { "Spare", "diameter.3gpp.uvr_flags_spare",
5631
14
          FT_UINT32, BASE_HEX, NULL, 0xFFFFFFFE,
5632
14
          NULL, HFILL }
5633
14
        },
5634
14
        { &hf_diameter_3gpp_uvr_flags_bit0,
5635
14
        { "Skip Subscriber Data", "diameter.3gpp.uvr_flags_bit0",
5636
14
          FT_BOOLEAN, 32, TFS(&tfs_set_notset), 0x00000001,
5637
14
          NULL, HFILL }
5638
14
        },
5639
14
        { &hf_diameter_3gpp_uva_flags,
5640
14
        { "UVA Flags", "diameter.3gpp.uva_flags",
5641
14
          FT_UINT32, BASE_HEX, NULL, 0x0,
5642
14
          NULL, HFILL }
5643
14
        },
5644
14
        { &hf_diameter_3gpp_uva_flags_spare_bits,
5645
14
        { "Spare", "diameter.3gpp.uva_flags_spare",
5646
14
          FT_UINT32, BASE_HEX, NULL, 0xFFFFFFFE,
5647
14
          NULL, HFILL }
5648
14
        },
5649
14
        { &hf_diameter_3gpp_uva_flags_bit0,
5650
14
        { "Temporary Empty VPLMN CSG Subscription Data", "diameter.3gpp.uva_flags_bit0",
5651
14
          FT_BOOLEAN, 32, TFS(&tfs_set_notset), 0x00000001,
5652
14
          NULL, HFILL }
5653
14
        },
5654
14
        { &hf_diameter_3gpp_subscription_data_flags,
5655
14
        { "Subscription Data Flags", "diameter.3gpp.subscription_data_flags",
5656
14
          FT_UINT32, BASE_HEX, NULL, 0x0,
5657
14
          NULL, HFILL }
5658
14
        },
5659
14
        { &hf_diameter_3gpp_subscription_data_flags_spare_bits,
5660
14
        { "Spare", "diameter.3gpp.subscription_data_flags_spare",
5661
14
          FT_UINT32, BASE_HEX, NULL, 0xFFFFFFF0,
5662
14
          NULL, HFILL }
5663
14
        },
5664
14
        { &hf_diameter_3gpp_subscription_data_flags_bit3,
5665
14
        { "PDN-Connection-Restricted", "diameter.3gpp.subscription_data_flags_bit3",
5666
14
          FT_BOOLEAN, 32, TFS(&tfs_set_notset), 0x00000008,
5667
14
          NULL, HFILL }
5668
14
        },
5669
14
        { &hf_diameter_3gpp_subscription_data_flags_bit2,
5670
14
        { "User Plane Integrity Protection", "diameter.3gpp.subscription_data_flags_bit2",
5671
14
          FT_BOOLEAN, 32, TFS(&tfs_set_notset), 0x00000004,
5672
14
          NULL, HFILL }
5673
14
        },
5674
14
        { &hf_diameter_3gpp_subscription_data_flags_bit1,
5675
14
        { "SMS-In-SGSN-Allowed-Indication", "diameter.3gpp.subscription_data_flags_bit1",
5676
14
          FT_BOOLEAN, 32, TFS(&tfs_set_notset), 0x00000002,
5677
14
          NULL, HFILL }
5678
14
        },
5679
14
        { &hf_diameter_3gpp_subscription_data_flags_bit0,
5680
14
        { "PS-And-SMS-Only-Service-Provision-Indication", "diameter.3gpp.subscription_data_flags_bit0",
5681
14
          FT_BOOLEAN, 32, TFS(&tfs_set_notset), 0x00000001,
5682
14
          NULL, HFILL }
5683
14
        },
5684
14
        { &hf_diameter_3gpp_wlan_offloadability_eutran,
5685
14
        { "WLAN-offloadability-EUTRAN", "diameter.3gpp.wlan_offloadability_eutran",
5686
14
          FT_UINT32, BASE_HEX, NULL, 0x0,
5687
14
          NULL, HFILL }
5688
14
        },
5689
14
        { &hf_diameter_3gpp_wlan_offloadability_eutran_spare_bits,
5690
14
        { "Spare", "diameter.3gpp.wlan_offloadability_eutran_spare",
5691
14
          FT_UINT32, BASE_HEX, NULL, 0xFFFFFFFE,
5692
14
          NULL, HFILL }
5693
14
        },
5694
14
        { &hf_diameter_3gpp_wlan_offloadability_eutran_bit0,
5695
14
        { "PWLAN offloadability for E-UTRAN", "diameter.3gpp.wlan_offloadability_eutran_bit0",
5696
14
          FT_BOOLEAN, 32, TFS(&tfs_set_notset), 0x00000001,
5697
14
          NULL, HFILL }
5698
14
        },
5699
14
        { &hf_diameter_3gpp_wlan_offloadability_utran,
5700
14
        { "WLAN-offloadability-UTRAN", "diameter.3gpp.wlan_offloadability_utran",
5701
14
          FT_UINT32, BASE_HEX, NULL, 0x0,
5702
14
          NULL, HFILL }
5703
14
        },
5704
14
        { &hf_diameter_3gpp_wlan_offloadability_utran_spare_bits,
5705
14
        { "Spare", "diameter.3gpp.wlan_offloadability_utran_spare",
5706
14
          FT_UINT32, BASE_HEX, NULL, 0xFFFFFFFE,
5707
14
          NULL, HFILL }
5708
14
        },
5709
14
        { &hf_diameter_3gpp_wlan_offloadability_utran_bit0,
5710
14
        { "PWLAN offloadability for UTRAN", "diameter.3gpp.wlan_offloadability_utran_bit0",
5711
14
          FT_BOOLEAN, 32, TFS(&tfs_set_notset), 0x00000001,
5712
14
          NULL, HFILL }
5713
14
        },
5714
14
        { &hf_diameter_3gpp_air_flags,
5715
14
        { "AIR Flags", "diameter.3gpp.air_flags",
5716
14
          FT_UINT32, BASE_HEX, NULL, 0x0,
5717
14
          NULL, HFILL }
5718
14
        },
5719
14
        { &hf_diameter_3gpp_air_flags_spare_bits,
5720
14
        { "Spare", "diameter.3gpp.air_flags_spare",
5721
14
          FT_UINT32, BASE_HEX, NULL, 0xFFFFFFFE,
5722
14
          NULL, HFILL }
5723
14
        },
5724
14
        { &hf_diameter_3gpp_air_flags_bit0,
5725
14
        { "Send UE Usage Type", "diameter.3gpp.air_flags_bit0",
5726
14
          FT_BOOLEAN, 32, TFS(&tfs_set_notset), 0x00000001,
5727
14
          NULL, HFILL }
5728
14
        },
5729
14
        { &hf_diameter_3gpp_preferred_data_mode,
5730
14
        { "Preferred Data Mode", "diameter.3gpp.preferred_data_mode",
5731
14
          FT_UINT32, BASE_HEX, NULL, 0x0,
5732
14
          NULL, HFILL }
5733
14
        },
5734
14
        { &hf_diameter_3gpp_preferred_data_mode_spare_bits,
5735
14
        { "Spare", "diameter.3gpp.preferred_data_mode_spare",
5736
14
          FT_UINT32, BASE_HEX, NULL, 0xFFFFFFFC,
5737
14
          NULL, HFILL }
5738
14
        },
5739
14
        { &hf_diameter_3gpp_preferred_data_mode_bit1,
5740
14
        { "Data over Control Plane Preferred", "diameter.3gpp.preferred_data_mode_bit1",
5741
14
          FT_BOOLEAN, 32, TFS(&tfs_set_notset), 0x00000002,
5742
14
          NULL, HFILL }
5743
14
        },
5744
14
        { &hf_diameter_3gpp_preferred_data_mode_bit0,
5745
14
        { "Data over User Plane Preferred", "diameter.3gpp.preferred_data_mode_bit0",
5746
14
          FT_BOOLEAN, 32, TFS(&tfs_set_notset), 0x00000001,
5747
14
          NULL, HFILL }
5748
14
        },
5749
14
        { &hf_diameter_3gpp_v2x_permission,
5750
14
        { "V2X Permission", "diameter.3gpp.v2x_permission",
5751
14
          FT_UINT32, BASE_HEX, NULL, 0x0,
5752
14
          NULL, HFILL }
5753
14
        },
5754
14
        { &hf_diameter_3gpp_v2x_permission_spare_bits,
5755
14
        { "Spare", "diameter.3gpp.v2x_permission_spare",
5756
14
          FT_UINT32, BASE_HEX, NULL, 0xFFFFFFFC,
5757
14
          NULL, HFILL }
5758
14
        },
5759
14
        { &hf_diameter_3gpp_v2x_permission_bit1,
5760
14
        { "Allow V2X communication over PC5 as Pedestrian UE", "diameter.3gpp.v2x_permission_bit1",
5761
14
          FT_BOOLEAN, 32, TFS(&tfs_set_notset), 0x00000002,
5762
14
          NULL, HFILL }
5763
14
        },
5764
14
        { &hf_diameter_3gpp_v2x_permission_bit0,
5765
14
        { "Allow V2X communication over PC5 as Vehicle UE", "diameter.3gpp.v2x_permission_bit0",
5766
14
          FT_BOOLEAN, 32, TFS(&tfs_set_notset), 0x00000001,
5767
14
          NULL, HFILL }
5768
14
        },
5769
14
        { &hf_diameter_3gpp_core_network_restrictions,
5770
14
        { "Core Network Restrictions", "diameter.3gpp.core_network_restrictions",
5771
14
          FT_UINT32, BASE_HEX, NULL, 0x0,
5772
14
          NULL, HFILL }
5773
14
        },
5774
14
        { &hf_diameter_3gpp_core_network_restrictions_spare_bits,
5775
14
        { "Spare", "diameter.3gpp.core_network_restrictions_spare",
5776
14
          FT_UINT32, BASE_HEX, NULL, 0xFFFFFFFC,
5777
14
          NULL, HFILL }
5778
14
        },
5779
14
        { &hf_diameter_3gpp_core_network_restrictions_bit1,
5780
14
        { "5GC", "diameter.3gpp.core_network_restrictions_bit1",
5781
14
          FT_BOOLEAN, 32, TFS(&tfs_not_allowed_allowed), 0x00000002,
5782
14
          NULL, HFILL }
5783
14
        },
5784
14
        { &hf_diameter_3gpp_core_network_restrictions_bit0,
5785
14
        { "Reserved", "diameter.3gpp.core_network_restrictions_bit0",
5786
14
          FT_UINT32, BASE_HEX, NULL, 0x00000001,
5787
14
          NULL, HFILL }
5788
14
        },
5789
14
        { &hf_diameter_3gpp_supported_gad_shapes,
5790
14
        { "Supported-GAD-Shapes", "diameter.3gpp.supported_gad_shapes",
5791
14
          FT_UINT32, BASE_HEX, NULL, 0x0,
5792
14
          NULL, HFILL }
5793
14
        },
5794
5795
14
        { &hf_diameter_3gpp_highaccuracyellipsoidpointwithaltitudeandscalableuncertaintyellipsoid_bit10,
5796
14
        { "highAccuracyEllipsoidPointWithAltitudeAndScalableUncertaintyEllipsoid", "diameter.3gpp.highaccuracyellipsoidpointwithaltitudeandscalableuncertaintyellipsoid_bit10",
5797
14
          FT_BOOLEAN, 32, TFS(&tfs_supported_not_supported), 0x00000400,
5798
14
          NULL, HFILL }
5799
14
        },
5800
14
        { &hf_diameter_3gpp_highaccuracyellipsoidpointwithscalableuncertaintyellipse_bit9,
5801
14
        { "highAccuracyEllipsoidPointWithScalableUncertaintyEllipse", "diameter.3gpp.highaccuracyellipsoidpointwithscalableuncertaintyellipse_bit9",
5802
14
          FT_BOOLEAN, 32, TFS(&tfs_supported_not_supported), 0x00000200,
5803
14
          NULL, HFILL }
5804
14
        },
5805
14
        { &hf_diameter_3gpp_highaccuracyellipsoidpointwithaltitudeanduncertaintyellipsoid_bit8,
5806
14
        { "highAccuracyEllipsoidPointWithAltitudeAndUncertaintyEllipsoid", "diameter.3gpp.highaccuracyellipsoidpointwithaltitudeanduncertaintyellipsoid_bit8",
5807
14
          FT_BOOLEAN, 32, TFS(&tfs_supported_not_supported), 0x00000100,
5808
14
          NULL, HFILL }
5809
14
        },
5810
14
        { &hf_diameter_3gpp_highaccuracyellipsoidpointwithuncertaintyellipse_bit7,
5811
14
        { "highAccuracyEllipsoidPointWithUncertaintyEllipse", "diameter.3gpp.highaccuracyellipsoidpointwithuncertaintyellipse_bit7",
5812
14
          FT_BOOLEAN, 32, TFS(&tfs_supported_not_supported), 0x00000080,
5813
14
          NULL, HFILL }
5814
14
        },
5815
14
        { &hf_diameter_3gpp_ellipsoidarc_bit6,
5816
14
        { "ellipsoidArc", "diameter.3gpp.ellipsoidarc_bit6",
5817
14
          FT_BOOLEAN, 32, TFS(&tfs_supported_not_supported), 0x00000040,
5818
14
          NULL, HFILL }
5819
14
        },
5820
14
        { &hf_diameter_3gpp_ellipsoidpointwithaltitudeanduncertaintyelipsoid_bit5,
5821
14
        { "ellipsoidPointWithAltitudeAndUncertaintyElipsoid", "diameter.3gpp.ellipsoidpointwithaltitudeanduncertaintyelipsoid_bit5",
5822
14
          FT_BOOLEAN, 32, TFS(&tfs_supported_not_supported), 0x00000020,
5823
14
          NULL, HFILL }
5824
14
        },
5825
14
        { &hf_diameter_3gpp_ellipsoidpointwithaltitude_bit4,
5826
14
        { "ellipsoidPointWithAltitude", "diameter.3gpp.ellipsoidpointwithaltitude_bit4",
5827
14
          FT_BOOLEAN, 32, TFS(&tfs_supported_not_supported), 0x00000010,
5828
14
          NULL, HFILL }
5829
14
        },
5830
14
        { &hf_diameter_3gpp_polygon_bit3,
5831
14
        { "polygon", "diameter.3gpp.polygon_bit3",
5832
14
          FT_BOOLEAN, 32, TFS(&tfs_supported_not_supported), 0x00000008,
5833
14
          NULL, HFILL }
5834
14
        },
5835
14
        { &hf_diameter_3gpp_ellipsoidpointwithuncertaintyellipse_bit2,
5836
14
        { "ellipsoidPointWithUncertaintyEllipse", "diameter.3gpp.ellipsoidpointwithuncertaintyellipse_bit2",
5837
14
          FT_BOOLEAN, 32, TFS(&tfs_supported_not_supported), 0x00000004,
5838
14
          NULL, HFILL }
5839
14
        },
5840
14
        { &hf_diameter_3gpp_ellipsoidpointwithuncertaintycircle_bit1,
5841
14
        { "ellipsoidPointWithUncertaintyCircle", "diameter.3gpp.ellipsoidpointwithuncertaintycircle_bit1",
5842
14
          FT_BOOLEAN, 32, TFS(&tfs_supported_not_supported), 0x00000002,
5843
14
          NULL, HFILL }
5844
14
        },
5845
14
        { &hf_diameter_3gpp_ellipsoidpoint_bit0,
5846
14
        { "ellipsoidPoint", "diameter.3gpp.ellipsoidpoint_bit0",
5847
14
          FT_BOOLEAN, 32, TFS(&tfs_supported_not_supported), 0x00000001,
5848
14
          NULL, HFILL }
5849
14
        },
5850
5851
14
        { &hf_diameter_3gpp_plr_flags,
5852
14
        { "PLR-Flags", "diameter.3gpp.plr_flags",
5853
14
          FT_UINT32, BASE_HEX, NULL, 0x0,
5854
14
          NULL, HFILL }
5855
14
        },
5856
14
        { &hf_diameter_3gpp_mo_lr_shortcircuit_indicator_bit0,
5857
14
        { "MO-LR-ShortCircuit-Indicator", "diameter.3gpp.mo_lr_shortcircuit_indicator",
5858
14
          FT_BOOLEAN, 32, TFS(&tfs_set_notset), 0x00000001,
5859
14
          NULL, HFILL }
5860
14
        },
5861
14
        { &hf_diameter_3gpp_optimized_lcs_proc_req_bit1,
5862
14
        { "Optimized-LCS-Proc-Req", "diameter.3gpp.optimized_lcs_proc_req",
5863
14
          FT_BOOLEAN, 32, TFS(&tfs_set_notset), 0x00000002,
5864
14
          NULL, HFILL }
5865
14
        },
5866
14
        { &hf_diameter_3gpp_delayed_location_reporting_support_indicator_bit2,
5867
14
        { "Delayed-Location-Reporting-Support-Indicator", "diameter.3gpp.delayed_location_reporting_support_indicator",
5868
14
          FT_BOOLEAN, 32, TFS(&tfs_set_notset), 0x00000004,
5869
14
          NULL, HFILL }
5870
14
        },
5871
14
        { &hf_diameter_3gpp_plr_flags_spare_bits,
5872
14
        { "Spare", "diameter.3gpp.plr_flags_spare_bits",
5873
14
          FT_UINT32, BASE_HEX, NULL, 0xfffffff8,
5874
14
          NULL, HFILL }
5875
14
        },
5876
14
        { &hf_diameter_3gpp_pla_flags,
5877
14
        { "PLA-Flags", "diameter.3gpp.pla_flags",
5878
14
          FT_UINT32, BASE_HEX, NULL, 0x0,
5879
14
          NULL, HFILL }
5880
14
        },
5881
5882
14
        { &hf_diameter_3gpp_deferred_mt_lr_response_indicator_bit0,
5883
14
        { "Deferred-MT-LR-Response-Indicator", "diameter.3gpp.deferred_mt_lr_response_indicator",
5884
14
          FT_BOOLEAN, 32, TFS(&tfs_set_notset), 0x00000001,
5885
14
          NULL, HFILL }
5886
14
        },
5887
14
        { &hf_diameter_3gpp_mo_lr_shortcircuit_indicator_bit1,
5888
14
        { "MO-LR-ShortCircuit-Indicator", "diameter.3gpp.mo_lr_shortcircuit_indicator",
5889
14
          FT_BOOLEAN, 32, TFS(&tfs_set_notset), 0x00000002,
5890
14
          NULL, HFILL }
5891
14
        },
5892
14
        { &hf_diameter_3gpp_optimized_lcs_proc_performed_bit2,
5893
14
        { "Optimized-LCS-Proc-Performed", "diameter.3gpp.optimized_lcs_proc_performed",
5894
14
          FT_BOOLEAN, 32, TFS(&tfs_set_notset), 0x00000004,
5895
14
          NULL, HFILL }
5896
14
        },
5897
14
        { &hf_diameter_3gpp_ue_transiently_not_reachable_indicator_bit3,
5898
14
        { "UE-Transiently-Not-Reachable-Indicator", "diameter.3gpp.ue_transiently_not_reachable_indicator",
5899
14
          FT_BOOLEAN, 32, TFS(&tfs_set_notset), 0x00000008,
5900
14
          NULL, HFILL }
5901
14
        },
5902
14
        { &hf_diameter_3gpp_pla_flags_spare_bits,
5903
14
        { "Spare", "diameter.3gpp.pla_flags_spare_bits",
5904
14
          FT_BOOLEAN, 32, TFS(&tfs_set_notset), 0xfffffff0,
5905
14
          NULL, HFILL }
5906
14
        },
5907
14
        { &hf_diameter_3gpp_deferred_location_type,
5908
14
        { "Deferred-Location-Type", "diameter.3gpp.deferred_location_type",
5909
14
          FT_UINT32, BASE_HEX, NULL, 0x0,
5910
14
          NULL, HFILL }
5911
14
        },
5912
5913
14
        { &hf_diameter_3gpp_ue_available_bit0,
5914
14
        { "UE-Available", "diameter.3gpp.ue_available",
5915
14
          FT_BOOLEAN, 32, TFS(&tfs_set_notset), 0x00000001,
5916
14
          NULL, HFILL }
5917
14
        },
5918
14
        { &hf_diameter_3gpp_entering_into_area_bit1,
5919
14
        { "Entering-Into-Area", "diameter.3gpp.entering_into_area",
5920
14
          FT_BOOLEAN, 32, TFS(&tfs_set_notset), 0x00000002,
5921
14
          NULL, HFILL }
5922
14
        },
5923
14
        { &hf_diameter_3gpp_leaving_from_area_bit2,
5924
14
        { "Leaving-From-Area", "diameter.3gpp.leaving_from_area",
5925
14
          FT_BOOLEAN, 32, TFS(&tfs_set_notset), 0x00000004,
5926
14
          NULL, HFILL }
5927
14
        },
5928
14
        { &hf_diameter_3gpp_being_inside_area_bit3,
5929
14
        { "Being-Inside-Area", "diameter.3gpp.being_inside_area",
5930
14
          FT_BOOLEAN, 32, TFS(&tfs_set_notset), 0x00000008,
5931
14
          NULL, HFILL }
5932
14
        },
5933
14
        { &hf_diameter_3gpp_periodic_ldr_bit4,
5934
14
        { "Periodic-LDR", "diameter.3gpp.periodic_ldr",
5935
14
          FT_BOOLEAN, 32, TFS(&tfs_set_notset), 0x00000010,
5936
14
          NULL, HFILL }
5937
14
        },
5938
14
         { &hf_diameter_3gpp_motion_event_bit5,
5939
14
        { "Motion-Event", "diameter.3gpp.motion_event",
5940
14
          FT_BOOLEAN, 32, TFS(&tfs_set_notset), 0x00000020,
5941
14
          NULL, HFILL }
5942
14
        },
5943
14
         { &hf_diameter_3gpp_ldr_activated_bit6,
5944
14
        { "LDR-Activated", "diameter.3gpp.ldr_activated",
5945
14
          FT_BOOLEAN, 32, TFS(&tfs_set_notset), 0x00000040,
5946
14
          NULL, HFILL }
5947
14
        },
5948
14
         { &hf_diameter_3gpp_maximum_interval_exporation_bit7,
5949
14
        { "Maximum-Interval-Expiration", "diameter.3gpp.maximum_interval_exporation",
5950
14
          FT_BOOLEAN, 32, TFS(&tfs_set_notset), 0x00000080,
5951
14
          NULL, HFILL }
5952
14
        },
5953
14
        { &hf_diameter_3gpp_deferred_location_type_spare_bits,
5954
14
        { "Spare", "diameter.3gpp.deferred_location_type_spare",
5955
14
          FT_UINT32, BASE_HEX, NULL, 0xffffff00,
5956
14
          NULL, HFILL }
5957
14
        },
5958
14
        { &hf_diameter_3gpp_gcip,
5959
14
        { "Group-Configuration-In-Progress", "diameter.3gpp.gcip",
5960
14
          FT_BOOLEAN, 32, TFS(&tfs_set_notset), 0x00000001,
5961
14
          NULL, HFILL }
5962
14
        },
5963
14
        { &hf_diameter_3gpp_amec,
5964
14
        { "All-Monitoring-Events-Cancelled", "diameter.3gpp.amec",
5965
14
          FT_BOOLEAN, 32, TFS(&tfs_set_notset), 0x00000002,
5966
14
          NULL, HFILL }
5967
14
        },
5968
14
        { &hf_diameter_3gpp_coame,
5969
14
        { "Change-Of-Authorized-Monitoring-Events", "diameter.3gpp.coame",
5970
14
          FT_BOOLEAN, 32, TFS(&tfs_set_notset), 0x00000004,
5971
14
          NULL, HFILL }
5972
14
        },
5973
14
        { &hf_diameter_3gpp_acpc,
5974
14
        { "All-Communication-Pattern-Cancelled", "diameter.3gpp.acpc",
5975
14
          FT_BOOLEAN, 32, TFS(&tfs_set_notset), 0x00000008,
5976
14
          NULL, HFILL }
5977
14
        },
5978
14
        { &hf_diameter_3gpp_rir_flags,
5979
14
        { "RIR Flags", "diameter.3gpp.rir_flags",
5980
14
          FT_UINT32, BASE_HEX, NULL, 0x0,
5981
14
          NULL, HFILL }
5982
14
        },
5983
14
        { &hf_diameter_3gpp_rir_spare_b31_b4,
5984
14
        { "Spare", "diameter.3gpp.rir_flags.spare",
5985
14
          FT_UINT32, BASE_HEX, NULL, 0xffffffF0,
5986
14
          NULL, HFILL }
5987
14
        },
5988
14
        { &hf_diameter_3gpp_feature_list_s6t_flags,
5989
14
        { "S6t Feature-List Flags", "diameter.3gpp.s6t.feature_list_flags",
5990
14
            FT_UINT32, BASE_HEX, NULL, 0x0,
5991
14
            NULL, HFILL }
5992
14
        },
5993
14
        { &hf_diameter_3gpp_feature_list_s6t_flags_bit0,
5994
14
        { "MONTE", "diameter.3gpp.s6t.b0",
5995
14
          FT_BOOLEAN, 32, TFS(&tfs_set_notset), 0x00000001,
5996
14
          NULL, HFILL }
5997
14
        },
5998
14
        { &hf_diameter_3gpp_feature_list_s6t_flags_bit1,
5999
14
        { "AESE-Communication-Pattern", "diameter.3gpp.s6t.b1",
6000
14
          FT_BOOLEAN, 32, TFS(&tfs_set_notset), 0x00000002,
6001
14
          NULL, HFILL }
6002
14
        },
6003
14
        { &hf_diameter_3gpp_feature_list_s6t_flags_bit2,
6004
14
        { "NIDD-Authorization", "diameter.3gpp.s6t.b2",
6005
14
          FT_BOOLEAN, 32, TFS(&tfs_set_notset), 0x00000004,
6006
14
          NULL, HFILL }
6007
14
        },
6008
14
        { &hf_diameter_3gpp_feature_list_s6t_flags_bit3,
6009
14
        { "Enhanced-Coverage-Restriction-Control", "diameter.3gpp.s6t.b3",
6010
14
          FT_BOOLEAN, 32, TFS(&tfs_set_notset), 0x00000008,
6011
14
          NULL, HFILL }
6012
14
        },
6013
14
        { &hf_diameter_3gpp_feature_list_s6t_flags_bit4,
6014
14
        { "NIDD Authorization Update", "diameter.3gpp.s6t.b4",
6015
14
          FT_BOOLEAN, 32, TFS(&tfs_set_notset), 0x00000010,
6016
14
          NULL, HFILL }
6017
14
        },
6018
14
        { &hf_diameter_3gpp_feature_list_s6t_flags_bit5,
6019
14
        { "Report-Eff-MONTE", "diameter.3gpp.s6t.b5",
6020
14
          FT_BOOLEAN, 32, TFS(&tfs_set_notset), 0x00000020,
6021
14
          NULL, HFILL }
6022
14
        },
6023
14
        { &hf_diameter_3gpp_feature_list_s6t_flags_bit6,
6024
14
        { "Event Cancellation Report", "diameter.3gpp.s6t.b6",
6025
14
          FT_BOOLEAN, 32, TFS(&tfs_set_notset), 0x00000040,
6026
14
          NULL, HFILL }
6027
14
        },
6028
14
        { &hf_diameter_3gpp_feature_list_s6t_flags_bit7,
6029
14
        { "Config-Eff-CP", "diameter.3gpp.s6t.b7",
6030
14
          FT_BOOLEAN, 32, TFS(&tfs_set_notset), 0x00000080,
6031
14
          NULL, HFILL }
6032
14
        },
6033
14
        { &hf_diameter_3gpp_feature_list_s6t_flags_bit8,
6034
14
        { "Config-Eff-NP", "diameter.3gpp.s6t.b8",
6035
14
          FT_BOOLEAN, 32, TFS(&tfs_set_notset), 0x00000100,
6036
14
          NULL, HFILL }
6037
14
        },
6038
14
        { &hf_diameter_3gpp_feature_list_s6t_flags_bit9,
6039
14
        { "Extended Reference IDs", "diameter.3gpp.s6t.b9",
6040
14
          FT_BOOLEAN, 32, TFS(&tfs_set_notset), 0x00000200,
6041
14
          NULL, HFILL }
6042
14
        },
6043
14
        { &hf_diameter_3gpp_feature_list_s6t_spare_b31_b10,
6044
14
        { "Spare", "diameter.3gpp.s6t.spare",
6045
14
          FT_UINT32, BASE_HEX, NULL, 0xfffffc00,
6046
14
          NULL, HFILL }
6047
14
        },
6048
14
        { &hf_diameter_3gpp_feature_list_swx_flags,
6049
14
        { "SWx Feature-List Flags", "diameter.3gpp.swx.feature_list_flags",
6050
14
            FT_UINT32, BASE_HEX, NULL, 0x0,
6051
14
            NULL, HFILL }
6052
14
        },
6053
14
        { &hf_diameter_3gpp_feature_list_swx_flags_bit0,
6054
14
        { "HSS Restoration", "diameter.3gpp.swx.feature_list_flags.b0",
6055
14
          FT_BOOLEAN, 32, TFS(&tfs_supported_not_supported), 0x00000001,
6056
14
          NULL, HFILL }
6057
14
        },
6058
14
        { &hf_diameter_3gpp_feature_list_swx_flags_bit1,
6059
14
        { "Access-Network-Information-Retrieval", "diameter.3gpp.swx.feature_list_flags.b1",
6060
14
          FT_BOOLEAN, 32, TFS(&tfs_supported_not_supported), 0x00000002,
6061
14
          NULL, HFILL }
6062
14
        },
6063
14
        { &hf_diameter_3gpp_feature_list_swx_flags_bit2,
6064
14
        { "UE Local Time Zone Retrieval", "diameter.3gpp.swx.feature_list_flags.b2",
6065
14
          FT_BOOLEAN, 32, TFS(&tfs_supported_not_supported), 0x00000004,
6066
14
          NULL, HFILL }
6067
14
        },
6068
14
        { &hf_diameter_3gpp_feature_list_swx_flags_bit3,
6069
14
        { "P-CSCF Restoration for WLAN", "diameter.3gpp.swx.feature_list_flags.b3",
6070
14
          FT_BOOLEAN, 32, TFS(&tfs_supported_not_supported), 0x00000008,
6071
14
          NULL, HFILL }
6072
14
        },
6073
14
        { &hf_diameter_3gpp_feature_list_swx_flags_bit4,
6074
14
        { "Emergency Services Continuity", "diameter.3gpp.swx.feature_list_flags.b4",
6075
14
          FT_BOOLEAN, 32, TFS(&tfs_supported_not_supported), 0x00000010,
6076
14
          NULL, HFILL }
6077
14
        },
6078
14
        { &hf_diameter_3gpp_feature_list_swx_flags_bit5,
6079
14
        { "ERP", "diameter.3gpp.swx.feature_list_flags.b5",
6080
14
          FT_BOOLEAN, 32, TFS(&tfs_supported_not_supported), 0x00000020,
6081
14
          NULL, HFILL }
6082
14
        },
6083
14
        { &hf_diameter_3gpp_feature_list_swx_flags_bit6,
6084
14
        { "Dedicated Core Networks", "diameter.3gpp.swx.feature_list_flags.b6",
6085
14
          FT_BOOLEAN, 32, TFS(&tfs_supported_not_supported), 0x00000040,
6086
14
          NULL, HFILL }
6087
14
        },
6088
14
        { &hf_diameter_3gpp_feature_list_s6b_flags,
6089
14
        { "S6b Feature-List Flags", "diameter.3gpp.s6b.feature_list_flags",
6090
14
            FT_UINT32, BASE_HEX, NULL, 0x0,
6091
14
            NULL, HFILL }
6092
14
        },
6093
14
        { &hf_diameter_3gpp_feature_list_s6b_flags_bit0,
6094
14
        { "P-CSCF Restoration for WLAN", "diameter.3gpp.s6b.feature_list_flags.b0",
6095
14
          FT_BOOLEAN, 32, TFS(&tfs_supported_not_supported), 0x00000001,
6096
14
          NULL, HFILL }
6097
14
        },
6098
14
        { &hf_diameter_3gpp_feature_list_s6c_flags,
6099
14
        { "S6c Feature-List Flags", "diameter.3gpp.s6c.feature_list_flags",
6100
14
            FT_UINT32, BASE_HEX, NULL, 0x0,
6101
14
            NULL, HFILL }
6102
14
        },
6103
14
        { &hf_diameter_3gpp_feature_list_s6c_flags_bit0,
6104
14
        { "SMSF-Support", "diameter.3gpp.s6c.feature_list_flags.b0",
6105
14
          FT_BOOLEAN, 32, TFS(&tfs_supported_not_supported), 0x00000001,
6106
14
          NULL, HFILL }
6107
14
        },
6108
14
         { &hf_diameter_3gpp_supported_monitoring_events,
6109
14
         { "Supported-Monitoring-Events", "diameter.3gpp.supported_monitoring_events",
6110
14
           FT_UINT64, BASE_HEX, NULL, 0x0,
6111
14
           NULL, HFILL }
6112
14
         },
6113
14
         { &hf_diameter_3gpp_supported_monitoring_events_b0,
6114
14
         { "UE and UICC and/or new IMSI-IMEI-SV association", "diameter.3gpp.supported_monitoring_events.b0",
6115
14
          FT_BOOLEAN, 64, TFS(&tfs_supported_not_supported), 0x0000000000000001,
6116
14
           NULL, HFILL }
6117
14
         },
6118
14
         { &hf_diameter_3gpp_supported_monitoring_events_b1,
6119
14
         { "UE-reachability", "diameter.3gpp.supported_monitoring_events.b1",
6120
14
          FT_BOOLEAN, 64, TFS(&tfs_supported_not_supported), 0x0000000000000002,
6121
14
           NULL, HFILL }
6122
14
         },
6123
14
        { &hf_diameter_3gpp_supported_monitoring_events_b2,
6124
14
        { "Location-of-the-UE", "diameter.3gpp.supported_monitoring_events.b2",
6125
14
         FT_BOOLEAN, 64, TFS(&tfs_supported_not_supported), 0x0000000000000004,
6126
14
          NULL, HFILL }
6127
14
        },
6128
14
        { &hf_diameter_3gpp_supported_monitoring_events_b3,
6129
14
        { "Loss-of-connectivity", "diameter.3gpp.supported_monitoring_events.b3",
6130
14
         FT_BOOLEAN, 64, TFS(&tfs_supported_not_supported), 0x0000000000000008,
6131
14
          NULL, HFILL }
6132
14
        },
6133
14
        { &hf_diameter_3gpp_supported_monitoring_events_b4,
6134
14
        { "Communication-failure", "diameter.3gpp.supported_monitoring_events.b4",
6135
14
         FT_BOOLEAN, 64, TFS(&tfs_supported_not_supported), 0x0000000000000010,
6136
14
          NULL, HFILL }
6137
14
        },
6138
14
        { &hf_diameter_3gpp_supported_monitoring_events_b5,
6139
14
        { "Roaming-status", "diameter.3gpp.supported_monitoring_events.b5",
6140
14
         FT_BOOLEAN, 64, TFS(&tfs_supported_not_supported), 0x0000000000000020,
6141
14
          NULL, HFILL }
6142
14
        },
6143
14
        { &hf_diameter_3gpp_supported_monitoring_events_b6,
6144
14
        { "Availability after DDN failure", "diameter.3gpp.supported_monitoring_events.b6",
6145
14
         FT_BOOLEAN, 64, TFS(&tfs_supported_not_supported), 0x0000000000000040,
6146
14
          NULL, HFILL }
6147
14
        },
6148
14
        { &hf_diameter_3gpp_supported_monitoring_events_b7,
6149
14
        { "Idle Status Indication", "diameter.3gpp.supported_monitoring_events.b7",
6150
14
         FT_BOOLEAN, 64, TFS(&tfs_supported_not_supported), 0x0000000000000080,
6151
14
          NULL, HFILL }
6152
14
        },
6153
14
        { &hf_diameter_3gpp_supported_monitoring_events_b8,
6154
14
        { "PDN Connectivity Status", "diameter.3gpp.supported_monitoring_events.b8",
6155
14
         FT_BOOLEAN, 64, TFS(&tfs_supported_not_supported), 0x0000000000000100,
6156
14
          NULL, HFILL }
6157
14
        },
6158
14
        { &hf_diameter_3gpp_selection_mode,
6159
14
            { "Selection Mode", "diameter.3gpp.selection_mode",
6160
14
            FT_UINT8, BASE_DEC, VALS(gtp_sel_mode_vals), 0x00,
6161
14
            NULL, HFILL }
6162
14
        },
6163
14
        { &hf_diameter_3gpp_srr_flags,
6164
14
        { "SRR Flags", "diameter.3gpp.srr_flags",
6165
14
          FT_UINT32, BASE_HEX, NULL, 0x0,
6166
14
          NULL, HFILL }
6167
14
        },
6168
14
        { &hf_diameter_3gpp_srr_gprsind,
6169
14
        { "GPRS-Indicator", "diameter.3gpp.srr_flags.gprsind",
6170
14
          FT_BOOLEAN, 32, TFS(&tfs_set_notset), 0x00000001,
6171
14
          NULL, HFILL }
6172
14
        },
6173
14
        { &hf_diameter_3gpp_srr_smrppri,
6174
14
        { "SM-RP-PRI", "diameter.3gpp.srr_flags.smrppri",
6175
14
          FT_BOOLEAN, 32, TFS(&tfs_set_notset), 0x00000002,
6176
14
          NULL, HFILL }
6177
14
        },
6178
14
        { &hf_diameter_3gpp_srr_sad,
6179
14
        { "Single-Attempt-Delivery", "diameter.3gpp.srr_flags.sad",
6180
14
          FT_BOOLEAN, 32, TFS(&tfs_set_notset), 0x00000004,
6181
14
          NULL, HFILL }
6182
14
        },
6183
14
        { &hf_diameter_3gpp_srr_spare_b31_b3,
6184
14
        { "Spare", "diameter.3gpp.srr_flags.spare",
6185
14
          FT_UINT32, BASE_HEX, NULL, 0xfffffff8,
6186
14
          NULL, HFILL }
6187
14
        },
6188
14
        { &hf_diameter_3gpp_mwd_status,
6189
14
        { "MWD Status", "diameter.3gpp.mwd_status",
6190
14
          FT_UINT32, BASE_HEX, NULL, 0x0,
6191
14
          NULL, HFILL }
6192
14
        },
6193
14
        { &hf_diameter_3gpp_mwd_scaddressni,
6194
14
        { "SC-Address Not Included", "diameter.3gpp.mwd_status.scaddressni",
6195
14
          FT_BOOLEAN, 32, TFS(&tfs_set_notset), 0x00000001,
6196
14
          NULL, HFILL }
6197
14
        },
6198
14
        { &hf_diameter_3gpp_mwd_mnrf,
6199
14
        { "MNRF-Set", "diameter.3gpp.mwd_status.mnrf",
6200
14
          FT_BOOLEAN, 32, TFS(&tfs_set_notset), 0x00000002,
6201
14
          NULL, HFILL }
6202
14
        },
6203
14
        { &hf_diameter_3gpp_mwd_mcef,
6204
14
        { "MCEF-Set", "diameter.3gpp.mwd_status.mcef",
6205
14
          FT_BOOLEAN, 32, TFS(&tfs_set_notset), 0x00000004,
6206
14
          NULL, HFILL }
6207
14
        },
6208
14
        { &hf_diameter_3gpp_mwd_mnrg,
6209
14
        { "MNRG-Set", "diameter.3gpp.mwd_status.mnrg",
6210
14
          FT_BOOLEAN, 32, TFS(&tfs_set_notset), 0x00000008,
6211
14
          NULL, HFILL }
6212
14
        },
6213
14
        { &hf_diameter_3gpp_mwd_mnr5g,
6214
14
        { "MNR5G-Set", "diameter.3gpp.mwd_status.mnr5g",
6215
14
          FT_BOOLEAN, 32, TFS(&tfs_set_notset), 0x00000010,
6216
14
          NULL, HFILL }
6217
14
        },
6218
14
        { &hf_diameter_3gpp_mwd_mnr5gn3g,
6219
14
        { "MNR5GN3G-Set", "diameter.3gpp.mwd_status.mnr5gn3g",
6220
14
          FT_BOOLEAN, 32, TFS(&tfs_set_notset), 0x00000020,
6221
14
          NULL, HFILL }
6222
14
        },
6223
14
        { &hf_diameter_3gpp_mwd_spare,
6224
14
        { "Spare", "diameter.3gpp.mwd_status.spare",
6225
14
          FT_UINT32, BASE_HEX, NULL, 0xffffffc0,
6226
14
          NULL, HFILL }
6227
14
        },
6228
14
};
6229
6230
6231
    /* Setup protocol subtree array */
6232
14
    static int *ett[] = {
6233
14
        &ett_diameter_3gpp_path,
6234
14
        &ett_diameter_3gpp_uar_flags,
6235
14
        &ett_diameter_3gpp_feature_list,
6236
14
        &ett_diameter_3gpp_tmgi,
6237
14
        &ett_diameter_3gpp_cms,
6238
14
        &ett_diameter_3gpp_qos_subscribed,
6239
14
        &ett_diameter_3gpp_ulr_flags,
6240
14
        &ett_diameter_3gpp_ula_flags,
6241
14
        &ett_diameter_3gpp_dsr_flags,
6242
14
        &ett_diameter_3gpp_dsa_flags,
6243
14
        &ett_diameter_3gpp_ida_flags,
6244
14
        &ett_diameter_3gpp_pua_flags,
6245
14
        &ett_diameter_3gpp_nor_flags,
6246
14
        &ett_diameter_3gpp_idr_flags,
6247
14
        &ett_diameter_3gpp_ppr_flags,
6248
14
        &ett_diameter_3gpp_aaa_fail_flags,
6249
14
        &ett_diameter_3gpp_der_flags,
6250
14
        &ett_diameter_3gpp_dea_flags,
6251
14
        &ett_diameter_3gpp_rar_flags,
6252
14
        &ett_diameter_3gpp_der_s6b_flags,
6253
14
        &ett_diameter_3gpp_mbms_bearer_event,
6254
14
        &ett_diameter_3gpp_mbms_bearer_result,
6255
14
        &ett_diameter_3gpp_tmgi_allocation_result,
6256
14
        &ett_diameter_3gpp_tmgi_deallocation_result,
6257
14
        &ett_diameter_3gpp_sar_flags,
6258
14
        &ett_diameter_3gpp_req_nodes,
6259
14
        &ett_diameter_3gpp_emergency_services_flags,
6260
14
        &ett_diameter_3gpp_pur_flags,
6261
14
        &ett_diameter_3gpp_clr_flags,
6262
14
        &ett_diameter_3gpp_uvr_flags,
6263
14
        &ett_diameter_3gpp_uva_flags,
6264
14
        &ett_diameter_3gpp_subscription_data_flags,
6265
14
        &ett_diameter_3gpp_wlan_offloadability_eutran,
6266
14
        &ett_diameter_3gpp_wlan_offloadability_utran,
6267
14
        &ett_diameter_3gpp_air_flags,
6268
14
        &ett_diameter_3gpp_preferred_data_mode,
6269
14
        &ett_diameter_3gpp_v2x_permission,
6270
14
        &ett_diameter_3gpp_core_network_restrictions,
6271
14
        &ett_diameter_3gpp_supported_gad_shapes,
6272
14
        &ett_diameter_3gpp_plr_flags,
6273
14
        &ett_diameter_3gpp_pla_flags,
6274
14
        &ett_diameter_3gpp_deferred_location_type,
6275
14
        &ett_diameter_3gpp_rir_flags,
6276
14
        &ett_diameter_3gpp_supported_monitoring_events,
6277
14
        &ett_diameter_3gpp_af_requested_data_flags,
6278
14
        &ett_diameter_3gpp_srr_flags,
6279
14
        &ett_diameter_3gpp_mwd_status
6280
14
    };
6281
6282
14
    expert_module_t *expert_diameter_3gpp;
6283
6284
14
    static ei_register_info ei[] = {
6285
14
        { &ei_diameter_3gpp_plmn_id_wrong_len,
6286
14
        { "diameter_3gpp.plmn_id_wrong_len", PI_PROTOCOL, PI_ERROR, "PLMN Id should be 3 octets", EXPFILL } },
6287
14
    };
6288
6289
    /* Required function calls to register the header fields and subtrees used */
6290
14
    proto_diameter_3gpp = proto_register_protocol("Diameter 3GPP","Diameter3GPP", "diameter.3gpp");
6291
14
    proto_register_field_array(proto_diameter_3gpp, hf, array_length(hf));
6292
14
    proto_register_subtree_array(ett, array_length(ett));
6293
6294
14
    expert_diameter_3gpp = expert_register_protocol(proto_diameter_3gpp);
6295
14
    expert_register_field_array(expert_diameter_3gpp, ei, array_length(ei));
6296
6297
14
}
6298
6299
/*
6300
 * Editor modelines  -  https://www.wireshark.org/tools/modelines.html
6301
 *
6302
 * Local variables:
6303
 * c-basic-offset: 4
6304
 * tab-width: 8
6305
 * indent-tabs-mode: nil
6306
 * End:
6307
 *
6308
 * vi: set shiftwidth=4 tabstop=8 expandtab:
6309
 * :indentSize=4:tabSize=8:noTabs=true:
6310
 */